20. april 2002 - 03:06Der er
10 kommentarer og 1 løsning
Fange højremuseklik i NS/Mozilla.
God aften :)
Hvordan fanger jeg højremusekliks i Mozilla/Netscape?
Problemet ligger i, at IE har den property der hedder "oncontextmenu" hvilken udfører en funktion når man højreklikker på sit element. Denne funktion findes ikke i Netscape / Mozilla og jeg ville gerne have min custom-menu til at virke i alle browsere.
Hm. Har jeg faktisk beskrevet. Grunden til dette er, at jeg har lavet "min egen" menu der popper frem ved højreklik af nogle bestemte links. Der er bl.a. en hjælpe funktion osv. Denne menu virker imidlertigig kun til IE da jeg ikke kan fange højre musekliks i Netscape / Mozilla.
Som sagt - det skal bruges som en ekstra funktion for brugeren til at få flere valgmuligheder / hjælp - ikke som en "dU mÅ IkKe tAgE mIn SouRcE! PuHbÆh" - jeg går ind for opensource.
hehe.. det er ikke så meget det med open source, der er så latterligt ved folk der fanger højre museklik og viser en copyright alert..
Det er mere det at de forringer brugervenligheden på deres site væsentligt, samtidig med at man alligevel på mindre end 10 sekunder kan se deres kode, hvis det er det, man ønsker.
kimiwan : det ville være rart hvis du gad at læse hvad jeg skriver. Som sagt skal det IKKE bruges som noget copyright alert - jeg gentager - IKKE som copyright!
Hvor meget forringer man brugervenligheden på sin side, hvis man har de samme menuer som altid - men med endnu flere muligheder? Det kan da kun være en forøgelse af brugervenligheden!
Jeg håber stadig på en venlig sjæl der kan svare på mit spørgsmål.
når en event bliver affyret i NS dannes et Event objekt der tages som argument i den kaldte funktion. så f.eks: function doRightClick(obj,e) { obj.xoff = e.pageX obj.yoff = e.pageY } vil sætte xoff og yoff i obj objektet til x og y coordinatet (hvilket svarer til window.event.x & y i IE) oncontextmenu virker også i NS6. følgende er afprøvet <html><head><script> onload = function() { oncontextmenu = function(e) { obj = document.getElementById('dbug') obj.innerHTML = e.pageX +"_"+ e.pageY } } </script></head><body><div id='dbug'>dbug</div></body></html> oncontextmenu duer ikke i NS4.
Denne gang testet i NS6.2 og IE6 <html><head><script> onload = function() { document.oncontextmenu = function(e) { if (document.all) { // ie xval = event.x ; yval = event.y; } else if (!document.all && document.getElementById) { // ns6 xval = e.pageX ; yval = e.pageY; } obj = document.getElementById('dbug'); obj.innerHTML = xval +"_"+ yval; obj.style.left = xval; obj.style.top = yval; return false; // return false == ingen normal menu, return true == normal højreklik menu. } } </script></head><body><div id='dbug' style="position:absolute;">dbug</div></body></html> Du må altså selv passe det ind i din kode.
nu fik jeg ikke læst det ordentligt. du vil gerne have oncontextmenu udelukkende over bestemte links?? hvad med at sætte et globalt flag på de links <html><head><script> alternate = false; onload = function() { document.oncontextmenu = function(e) { if (document.all) { // ie xval = event.x ; yval = event.y; } else if (!document.all && document.getElementById) { // ns6 xval = e.pageX ; yval = e.pageY; } if (alternate) { obj = document.getElementById('dbug'); obj.innerHTML = xval +"_"+ yval; obj.style.left = xval; obj.style.top = yval-10; return false; // return false == ingen normal menu, return true == normal højreklik menu. } else { return true; } } } </script></head><body><div id='dbug' style="position:absolute;">dbug</div> <a href=# onmouseover="alternate=true;" onmouseout="alternate=false;">anderledes højremus</a> </body></html> Der er sikkert en mere elegant løsning men det der virker.
Okey lige en bemærkning mere her. Jeg er ked af at jeg var hurtigt ude. og NS4 koden er sådan her: if (document.layers) { window.captureEvents(Event.MOUSEDOWN); window.onmousedown = function(e) { if (e.which == 3) return false; } } for en contextmenu
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.