`Volver false` en un controlador de eventos que concede addEventListener o element.on *
-
27-09-2019 - |
Pregunta
Derecho Vamos a conseguir esto de la manera en primer lugar. Sí, quiero ocultar el menú contextual. No, no estoy tratando de evitar que el contenido de elevación a alguien de mi página. Su uso previsto es de entrada para un juego en el navegador y se limita a un área específica en la página web.
El paso de lo ideológico a la técnica ...
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
Podría alguien explicarme por qué la versión addEventListener
es incapaz de detener el menú contextual de disparar? La única diferencia que fue capaz de ver en el Safari 's inspector web fue que tenía un valor document.onmousedown
isAttribute
que era verdad, mientras que la versión addEventListener
tenía el mismo valor que falsa.
Solución
Así que mi búsqueda infructuosa de repente se convirtió fructífera.
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
Obras de Safari , Firefox , Opera . preventDefault()
detiene las acciones habituales suceda. Tenía que cambiar el evento que se escuchó para dar cabida a Safari y es de todos modos más lógico. Para más información: funciones que implementan EventListener no debe devolver valores tan return false
no tuvo ningún efecto.
Otros consejos
Para explicar la diferencia .. element.onmousedown = somefunction;
es una asignación absoluta; usted es reemplazando el controlador de eventos en el elemento. element.addEventListener(...)
es, como su nombre implica, añadir un controlador, además de cualquier controlador (s) que ya está fijado para el evento.