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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top