Cancelando onBeforeUnload com addEventListener
-
21-12-2019 - |
Pergunta
Estou tentando descobrir como evitar o onBeforeUnload
evento seja acionado no IE9+ ao usar links sem hrefs.
Eu configurei um violino aqui (um teste simplificado de um cenário real), que descreve muito bem o que estou tentando realizar.Em qualquer momento onBeforeUnload
é acionado (portanto, quando um link é clicado), o fundo da página fica azul.Ao usar attachEvent
Eu posso facilmente return false
para evitar que isso aconteça.Mas ao adicionar o evento click do link com addEventListener
, a instrução return não faz nenhuma diferença.Mais ou menos, gostaria que o link 4 se comportasse como o link 2.
Sim, mudar de links para botões seria uma solução.Alterar a funcionalidade onBeforeUnload (como ter esse código como parte da funcionalidade de clique) seria outra.Mas, infelizmente, não tenho controle desses trechos de código.
Então.Existe alguma maneira de interromper eventos de clique em links do gatilho onBeforeUnload
quando configurado com addEventListener
?Ou a MS removeu essa possibilidade ao migrar de attachEvent
para addEventListener
, porque geralmente é uma má ideia impedir que os usuários saiam de uma página?
Solução
Ao usar addEventListener você pode adicionar um parâmetro à sua função de ouvinte.
O parâmetro conterá o evento que é disparado (você pode parar isso)
Usar event.preventDefault()
assumindo que o parâmetro é chamado de evento.
Veja isso jsFiddle como um exemplo