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

¿De ninguna manera?¿Cómo volver a habilitar el menú contextual en este caso?

Editar: document.oncontextmenu = null no funciona.

P.S. No puedo tener la referencia de la función de oyente ya que no soy el propietario del sitio que impide el menú contextual.

+0

lo ¿te refieres con "ética"? –

+7

Los sitios que desactivan deliberadamente el menú contextual merecen que se supriman o no se ejecuten los scripts, en mi opinión. (Uso NoScript.) A menudo navego haciendo clic con el botón derecho y seleccionando Atrás o Adelante. No hay nada poco ético en querer que el menú contextual funcione. El autor del sitio que lo deshabilita en primer lugar es estúpido. – JYelton

+0

¿Has probado 'document.oncontextmenu = null;'? –

Respuesta

4

Si usted es realmente desesperado, trate de añadir esto antes de la addEventListener se llama. Funciona tanto en FF como en Chrome. No revisé nada más.

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

puede no ser la mejor manera de hacer las cosas, pero debe ser el trabajo hecho en el ejemplo específico :)

+0

Gracias por su respuesta. Parece que es imposible volver a habilitar el menú contextual "después" de la llamada ... –

16

uso mi bookmarklet en tales casos:

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

Esta funcionó bien. Solo tuve que limitar las opciones a 'contextmenu'. – ThiagoPonte

+0

Funciona muy bien, gracias –

+0

¿Cómo puedo votar esto 10 veces? ¡Gracias! – tyron

Cuestiones relacionadas