Tengo una aplicación web en la que he conectado eventos de mouse up y mouse down; Los uso para la selección y manipulación del lenguaje gráfico para el cual mi aplicación es editor. Para evitar que aparezca el menú contextual / clic derecho proporcionado por Firefox, coloqué:

if (evt.preventDefault) {
  evt.preventDefault();
}

En la parte superior de cada uno de mis controladores de eventos mouse up y mouse down. No quiero devolver falso; De hecho, quiero que el evento se propague.

En Mac, el menú del botón derecho no aparece; Esto es lo que espero. En Windows, sin embargo, aparece obstinadamente, a pesar de que Firebug confirma que mi llamada a "preventDefault" está ocurriendo y que "defaultPrevented" se establece en true.

¿Alguna idea de lo que da? ¿Alguien más se ha encontrado con este problema? Estoy ejecutando Firefox 6.0.2 tanto en Mac como en Windows.

[Actualización: las versiones más recientes de Firefox arrojaron resultados consistentes en Mac y Windows: el menú contextual no se pudo suprimir en ambas plataformas.]

5
M. Anthony Aiello 20 sep. 2011 a las 00:55

3 respuestas

La mejor respuesta

Bueno. Después de dejar esto de lado y volver a él varias veces, finalmente encontré la solución.

Intentar lidiar con la apariencia del menú contextual en los diferentes oyentes del mouse parece ser fundamentalmente defectuoso. En cambio, gracias al código que encontré aquí, yo fue puesto en la esencia del evento contextmenu. Ese evento parece ser la forma correcta de manejar las cosas, aunque el código realmente publicado en ese sitio no funcionó, simplemente llamar "stopPropagation" y devolver false no fue suficiente.

Lo siguiente funcionó para mí:

element.addEventListener('contextmenu', function(evt) { 
  evt.preventDefault();
}, false);

Esto ha sido probado con Firefox 10.0 en una Mac y Firefox 9.0.1 y 10.0 en Windows 7.

14
M. Anthony Aiello 9 feb. 2012 a las 16:12
  1. Vaya a Herramientas> Opciones.
  2. Vaya a la pestaña Contenido.
  3. Haga clic en el botón Avanzado junto a la opción Habilitar JavaScript.
  4. Deshabilitar o reemplazar menús contextuales. Marque esta casilla y mágicamente funcionará nuevamente.

No hay forma de evitar esta configuración en JavaScript.

-2
epascarello 19 sep. 2011 a las 21:02

Esta opción se elimina en la versión 23 de Mozilla.

0
Tunaki 12 abr. 2016 a las 13:37