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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top