`return false` em um manipulador de eventos anexado por addEventListener ou elemento.on*
-
27-09-2019 - |
Pergunta
Certo, vamos divulgar o caminho primeiro. Sim, eu quero ocultar o menu de contexto. Não, não estou tentando impedir que alguém levante o conteúdo da minha página. Seu uso pretendido é entrada para um jogo de navegador e será limitado a uma área específica na página da web.
Movendo -se do ideológico para o técnico ...
var mouse_input = function (evt) {
// ...
return false;
}
document.onmousedown = mouse_input; // successful at preventing the menu.
document.addEventListener('mousedown', mouse_input, true); // unsuccessful
Alguém poderia me explicar por que o addEventListener
A versão não pode impedir que o menu de contexto seja disparado? A única diferença que pude ver em Safári's Inspetor da Web foi isso document.onmousedown
tinha um isAttribute
valor que era verdade enquanto o addEventListener
A versão tinha o mesmo valor que false.
Solução
Então, minha pesquisa infrutífera de repente se tornou frutífera.
var mouse_input = function (evt) {
evt.preventDefault();
}
document.addEventListener('contextmenu', mouse_input, false);
Trabalha para Safári, Raposa de fogo, Ópera. preventDefault()
impede que as ações usuais aconteçam. Eu tive que mudar o evento que foi ouvido para acomodar Safári E é mais lógico de qualquer maneira. Mais informações: funções que implementam EventListener não deve retornar valores então return false
não teve efeito.
Outras dicas
Para explicar a diferença .. element.onmousedown = somefunction;
é uma atribuição absoluta; tu es substituindo o manipulador de eventos no elemento. element.addEventListener(...)
é, como o nome indica, adicionando um manipulador, além de qualquer manipulador já anexado para o evento.