Domanda

A destra andiamocene questo fuori il modo prima. Sì, voglio nascondere il menu contestuale. No, non sto cercando di evitare che il contenuto di sollevamento qualcuno fuori la mia pagina. Il suo utilizzo previsto è di input per un gioco in-browser e sarà limitato ad una specifica area della pagina web.

Passando dal ideologica alla tecnica ...

var mouse_input = function (evt) {
    // ...
    return false;
}

document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful

qualcuno potrebbe spiegare a me perché la versione addEventListener è in grado di fermare il menu contestuale di sparare? L'unica differenza che è stato in grado di vedere in Safari 's Web Inspector è stato che document.onmousedown aveva un valore isAttribute che era vero mentre la versione addEventListener ha avuto lo stesso valore di falso.

È stato utile?

Soluzione

Quindi, la mia ricerca senza frutto è diventato improvvisamente proficua.

var mouse_input = function (evt) {
    evt.preventDefault();
}

document.addEventListener('contextmenu', mouse_input, false);

Lavori per la Safari , Firefox , Opera . preventDefault() ferma le azioni abituali accada. Ho dovuto cambiare l'evento che è stato ascoltato per ospitare per Safari , ed è comunque più logico. Per ulteriori informazioni: funzioni che implementano EventListener non dovrebbe restituire i valori in modo return false non ha avuto effetto.

Altri suggerimenti

Per spiegare la differenza .. element.onmousedown = somefunction; è un incarico assoluto; sei sostituendo il gestore di eventi sull'elemento. element.addEventListener(...) è, come suggerisce il nome, aggiungendo un gestore in aggiunta a qualsiasi gestore (s) già fissato per l'evento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top