`Rückkehr false` in einem Event-Handler von addEventListener oder element.on angebracht *
-
27-09-2019 - |
Frage
Right lassen Sie uns dies zunächst aus dem Weg. Ja, ich möchte das Kontextmenü verbergen. Nein, ich versuche nicht, jemand Heben Inhalt von meiner Seite zu verhindern. Der bestimmungsgemäßen Gebrauch ist Eingang für ein In-Browser-Spiel, und es wird auf der Webseite auf einen bestimmten Bereich begrenzt werden.
Der Umzug von der ideologischen auf die technische ...
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
Könnte mir jemand erklären, warum die addEventListener
Version nicht in der Lage ist, das Kontextmenü zu stoppen Brennen? Der einzige Unterschied, den ich sehen konnte in Safari 's Webinformationen wurde, dass document.onmousedown
einen isAttribute
Wert hatte das war wahr, während die addEventListener
Version den gleichen Wert wie falsch hatte.
Lösung
Also meine unfruchtbare Suche plötzlich fruchtbar.
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
Arbeiten für Safari Firefox Oper . preventDefault()
stoppt die üblichen Aktionen nicht passiert. Ich hatte das Ereignis zu ändern, die zugehört wurde für Safari aufzunehmen und es ist logischer, sowieso. Weitere Informationen: Funktionen implementieren, dass Eventlistener sollten nicht Werte zurückgeben so return false
keine Wirkung hatte.
Andere Tipps
, um den Unterschied zu erklären .. element.onmousedown = somefunction;
ist eine absolute Zuordnung; Sie sind ersetzen der Event-Handler auf dem Element. element.addEventListener(...)
ist, wie der Name schon sagt, Hinzufügen ein Handler zusätzlich zu jedem Handler (n) bereits für den Fall angebracht ist.