2010-06-02 6 views
10
document.addEventListener('contextmenu', function (e) { 
    e.preventDefault() 
    e.stopPropagation() 
    e.returnValue = false 
    e.cancleBubble = true 
}) 

Kein Weg?Wie wird das Kontextmenü in diesem Fall wieder aktiviert?

Edit: document.oncontextmenu = null funktioniert nicht.

P.S. Ich kann die Referenz der Listener-Funktion nicht haben, da ich nicht der Eigentümer der Site bin, der das Kontextmenü verhindert.

+0

was meinst du mit "Ethik"? –

+7

Websites, die absichtlich das Kontextmenü deaktivieren, verdienen es, ihre Skripts zu unterdrücken oder nicht ausgeführt zu haben, meiner Meinung nach. (Ich verwende NoScript.) Ich navigiere oft, indem ich mit der rechten Maustaste klicke und Zurück oder Weiter wähle. Es ist nichts Unmoralisches, wenn das Kontextmenü funktionieren soll. Der Siteautor, der es in erster Linie deaktiviert, ist dumm. – JYelton

+0

Haben Sie versucht, 'document.oncontextmenu = null;'? –

Antwort

4

Wenn Sie wirklich verzweifelt versuchen, diese Zugabe vor der addEventListener genannt wird. Es funktioniert sowohl in FF als auch in Chrome. Ich habe nichts anderes überprüft.

document.superListener = document.addEventListener; 
document.addEventListener = function(type, listener, useCapture){ 
    if(type != 'contextmenu') 
     document.superListener(type, listener, !!useCapture); 
}; 

Es kann nicht der beste Weg, Dinge zu tun, aber es sollte der Auftrag auf Ihren spezifischen Beispiel :)

+0

Vielen Dank für Ihre Antwort. Es scheint, dass es unmöglich ist, das Kontextmenü nach dem Anruf wieder zu aktivieren ... –

16

ich meine Bookmarklet verwenden in solchen Fällen geschehen:

javascript:(function(w){ 
    var arr = ['contextmenu','copy','cut','paste','mousedown','mouseup','beforeunload','beforeprint']; 
    for(var i = 0, x; x = arr[i]; i++){ 
     if(w['on' + x])w['on' + x] = null; 
     w.addEventListener(x, function(e){e.stopPropagation()}, true); 
    }; 
    for(var j = 0, f; f = w.frames[j]; j++){try{arguments.callee(f)}catch(e){}}})(window); 
+0

Dieser hat gut funktioniert. Musste nur die Optionen auf 'Kontextmenu' beschränken. – ThiagoPonte

+0

Funktioniert sehr gut, danke –

+0

Wie kann ich das 10 mal wählen? Vielen Dank! – tyron

Verwandte Themen