Ik ben bezig een WYSIWYG editor voor html te maken. Momenteel ben ik bezig met de plaatjes die in de pagina staan. Om instellingen aan de plaatjes te kunnen doen wil ik de rechtermuisknop gaan gebruiken. Als er met de rechtermuisknop op een plaatje geklikt word, moet er een menu getoond worden, waarmee instellingen aan het plaatje gedaan kunnen worden. (De linkermuisknop word gebruikt om het plaatje te verplaatsen).
Op het moment ben ik zover dat ik het menu bij een plaatje kan tonen, maar het orginele menu van de browser valt over mijn custom menu heen.
Hieronder volgt de relevante code :
Nu heb ik gevonden dat waarschijnlijk het "ontextmenu" event verhinderd moet worden.
Op deze site staat een tutorial hoe het ongeveer moet werken. Het probleem is dat ik het niet voor elkaar krijg om het werkend binnen het iframe te krijgen.
Op het moment ben ik zover dat ik het menu bij een plaatje kan tonen, maar het orginele menu van de browser valt over mijn custom menu heen.
Hieronder volgt de relevante code :
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| window.onload=Init; function Init() { if ($('iView') != undefined) { //Checken of de editor bestaat var doc = $('iView').contentDocument; doc.designMode = "on"; var tekst = $('areaCode').value; doc.open(); doc.write( tekst ); doc.close(); //Mouse evens starten; if(navigator.appName.substring(0,9) == "Microsoft"){ //IE doc.body.onmousedown = clicker; } else { //FF doc.addEventListener('mousedown', clicker, false); } } function clicker(event){ //IE is evil and doesn't pass the event object if (event == null) event = $('iView').contentWindow.event; // we assume we have a standards compliant browser, but check if we have IE var target = event.target != null ? event.target : event.srcElement; // only show the context menu if the right mouse button is pressed // and a hyperlink or image has been clicked (the code can be made more selective) if(event.button==2) { targetObject=target; var targetType=target.tagName.toLowerCase() //Type of the target if(targetType=="img") showmenu($('imageMenu'),event); if(targetType=="a") showmenu($('linkMenu'),event); } function showmenu(_id,event) { //Laat het menu behorende bij een afbeelding of link zien. (werk al) } function $(id) // Zorgt dat $((iView) het element oplevert { return document.getElementById(id); } |
code:
1
2
3
4
5
| <iframe id="iView" style="width: 100%; height:400px"></iframe> <textarea name="areaCode" id="areaCode" rows="0" cols="0" style="visibility:hidden> text die in de editor komt </textarea> |
Nu heb ik gevonden dat waarschijnlijk het "ontextmenu" event verhinderd moet worden.
Op deze site staat een tutorial hoe het ongeveer moet werken. Het probleem is dat ik het niet voor elkaar krijg om het werkend binnen het iframe te krijgen.