vean que oncontextmenu ocultar inspeccionar fuente false evitar elemento deshabilitar derecho contextual como comentarios codigo bloquear javascript android mobile-webkit

javascript - que - Deshabilitar el menú contextual en pulsaciones largas en Android



menu contextual android listview (10)

Me gustaría desactivar el menú contextual que aparece después de un toque prolongado (tocar y mantener) en las imágenes de mi aplicación web. He visto publicaciones con diferentes ideas de cómo hacerlo, pero ninguna de ellas parece funcionar para mí.

¿Hay alguna manera de hacer esto en Android a través de HTML / CSS / Javascript?


A través de javascript en bruto no hay eventos que sean llamados para el menú contextual. Tal vez en el mundo de Java haya algo ... En realidad, hay varios problemas con respecto a los eventos de JavaScript (como el enfoque que no funciona bien) en el juego web de Android.


Eso se puede hacer usando CSS :

img { pointer-events: none; }


Para mí, la absorción de todos los eventos no era una opción, ya que quería desactivar las descargas de la pulsación larga y al mismo tiempo permitir al usuario acercar y alejar la imagen. Pude resolver esto con css y html solo al superponer un div "escudo" en la parte superior de la imagen así:

<div class="img-container"> <div class="shield"></div> <img src="path.jpg"> </div> img { max-width: 100%; } .shield { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 1; }

¡Espero que esto ayude a alguien!


Solo tuve un problema similar. Las sugerencias anteriores no me funcionaron en el navegador Andoid, pero descubrí que mostrar la imagen problemática como una imagen de fondo de CSS en lugar de una imagen incrustada solucionó el problema.


Usa estos códigos CSS para dispositivos móviles

-webkit-touch-callout: none; -webkit-user-select: none; /* Disable selection/copy in UIWebView */


Utilizo el ejemplo completo de Nurik pero el elemento (una imagen de entrada en mi página) también se deshabilitó para hacer clic.

Cambio la línea original por esto:

línea original:

node.ontouchstart = absorbEvent_;

Mi cambio:

node.ontouchstart = node.onclick;

con esta aplicación desactivo el menú emergente de guardar imagen en la impresión de registro pero mantengo el evento click.

¡Estoy probando en una tableta de 7 "con Android 2.2 en un navegador Dolphin HD y funciona bien!


El menú contextual tiene su propio evento. Solo necesitas atraparlo y evitar que se propague.

window.oncontextmenu = function(event) { event.preventDefault(); event.stopPropagation(); return false; };


Esto debería funcionar en 1.6 o posterior (si no recuerdo mal). No creo que haya una solución para 1.5 o anterior.

<!DOCTYPE html> <html> <head> <script> function absorbEvent_(event) { var e = event || window.event; e.preventDefault && e.preventDefault(); e.stopPropagation && e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false; } function preventLongPressMenu(node) { node.ontouchstart = absorbEvent_; node.ontouchmove = absorbEvent_; node.ontouchend = absorbEvent_; node.ontouchcancel = absorbEvent_; } function init() { preventLongPressMenu(document.getElementById(''theimage'')); } </script> </head> <body onload="init()"> <img id="theimage" src="http://www.google.com/logos/arthurboyd2010-hp.jpg" width="400"> </body> </html>


pointer-events: none; // for Android -webkit-touch-callout: none; // for iOS -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none;


<a id="moo" href=''''> </a> <script type="text/javascript"> var moo = document.getElementById(''moo''); function handler(event) { event = event || context_menu.event; if (event.stopPropagation) event.stopPropagation(); event.cancelBubble = true; return false; } moo.innerHTML = ''right-click here''; moo.onclick = handler; moo.onmousedown = handler; moo.onmouseup = handler; </script>

Capture el evento onContextMenu y devuelva falso en el controlador de eventos.

También puede capturar el evento click y verificar qué botón del mouse activó el evento con event.button, en algunos navegadores de todos modos.