`False` retour dans un gestionnaire d'événement attaché par addEventListener ou element.on *
-
27-09-2019 - |
Question
Droit Finissons la première manière. Oui, je veux cacher le menu contextuel. Non, je ne cherche pas à empêcher le contenu de levage quelqu'un de ma page. Son utilisation prévue est entrée pour un jeu dans le navigateur et il sera limité à une zone spécifique sur la page Web.
Le passage de l'idéologie à la technique ...
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
Quelqu'un pourrait-il me expliquer pourquoi la version addEventListener
ne peut pas arrêter le menu contextuel de la cuisson? La seule différence que j'ai pu voir dans Safari s Inspecteur Web est que document.onmousedown
avait une valeur isAttribute
qui était vrai alors que la version addEventListener
avait la même valeur que fausse.
La solution
Alors ma recherche infécond est soudainement devenu fructueux.
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
Travaux pour Safari , Firefox , Opera . preventDefault()
arrête les actions habituelles de se produire. Je devais changer l'événement qui a été écouté pour accueillir pour Safari et il est de toute façon plus logique. Pour plus d'informations: fonctions qui implémentent EventListener ne doit pas renvoyer des valeurs si return false
n'a eu aucun effet.
Autres conseils
Pour expliquer la différence .. element.onmousedown = somefunction;
est une cession absolue; vous êtes remplaçant le gestionnaire d'événements sur l'élément. element.addEventListener(...)
est, comme son nom l'indique, ajoutant un gestionnaire en plus de tout gestionnaire (s) déjà fixée pour l'événement.