[JS/DHTML] Selectie behouden bij right-click menu

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik ben bezig met een dhtml editor, voor de browser. Nu zit ik met het probleem dat als ik een selectie maak in mijn <div contenteditable> en ik wil met mijn zelfgemaakte rechtermuisknop-menu die selectie bewerken, dat dan de selectie verdwijnt.

Ik wil bovendien graag dat het menu verdwijnt als ik naast het menu klik, dat heb ik zo gedaan:
code:
1
<body onclick="document.all.Menu.style.visibility='hidden'">


Dat betekent dus dat ik niet meer eerst het menu met de rechtermuisknop kan openen en daarna pas de selectie maken.

Weet iemand hoe je de selectie behoudt?

Ik blijf er iig vrij nuchter onder....


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

probeer eens met return values?

return false bijvoorbeeld?

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ehm, ik denk niet dat ik helemaal ben aangesloten.

Waar wil je false returnen, en wat moet dat bewerkstelligen?

Ik blijf er iig vrij nuchter onder....


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

return false bij de onclick event, nadat je je code hebt uitgevoerd :)

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
code:
1
2
<body onclick="document.all.contextMenu.style.visibility='hidden'; 
return false">


Zo bedoel je? Dit helpt iig niet.


Zo werkt mijn rechtermuis menuutje
code:
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
var menu; 
function showMenu (evt) { 
  if (document.all) { 
    document.all.contextMenu.style.pixelLeft = event.clientX; 
    document.all.contextMenu.style.pixelTop = event.clientY; 
    document.all.contextMenu.style.visibility = 'visible'; 
    return false; 
  } 
  else if (document.layers) { 
    if (evt.which == 3) { 
      document.contextMenu.left = evt.x; 
      document.contextMenu.top = evt.y; 
      document.contextMenu.onmouseout = 
        function (evt) { this.visibility = 'hide'; }; 
      document.contextMenu.visibility = 'show'; 
      return false; 
    } 
  } 
  return true; 
} 
if (document.all) 
  document.oncontextmenu =showMenu; 
if (document.layers) { 
  document.captureEvents(Event.MOUSEDOWN); 
  document.onmousedown = showMenu; 
}

Ik blijf er iig vrij nuchter onder....


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

bij je rightclick menu open onclick event natuurlijk :)

Je wil de selectie toch behouden? Geen idee of het werkt, maar dat zou ik proberen :)

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Nee, het werkt niet.

Heeft iemand anders een idee?

Ik blijf er iig vrij nuchter onder....


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:53

crisp

Devver

Pixelated

Een click op je menu triggered in elk geval ook de onClick van je body; dat kan je afvangen door onMouseover in je menu een variabele te setten, die je onMouseOut weer unset.
Verder kan je natuurlijk ook nog de ingedrukte mousebutton afvragen voordat je een actie wel of niet onderneemt.
Verder zie ik dat je je source wel NS4-compliant probeert te maken, maar geen rekening houdt met DOM browsers zoals NS6+ en Mozilla; document.all is eigenlijk alleen maar bedoeld voor IE4; alle latere versies IE zijn ook DOM compatible en begrijpen document.getElementById veel beter

Intentionally left blank

Pagina: 1