Firefox, Event Listeners e Return
Quem já não perdeu alguns fios de cabelo usando return false em um Event Listener no Firefox? Por mais que se tente, o evento continua com seu comportamento padrão. Nesse post vou mostrar a “grande” solução.
De acordo com a especificação do ECMAScript, Event Listeners (definidos através da famosa addEvent, para execvent, para executar funções no disparo de eventos) não possuem valores de retorno, ou seja, return false não faz efeito algum (pelo menos no Firefox, que segue esse padrão).
A solução é simples: a função não possui valor de retorno, mas recebe como parâmetro um objeto Event. Através dele, podemos usar Event.preventDefault para impedir que o comportamento padrão seja executado. Veja o código:
addEvent(myForm, "submit", function(e) {
if(e && e.preventDefault) e.preventDefault();
else return false; // JavaScript à moda IE
})
Simples, não? Espero que possa ajudar, já que também tive esse pequeno problema. Até o próximo post!







É, detalhe importante que às vezes passa despercebido… Ahh se não quiser dar um return false pro IE, pode usar a propriedade returnValue do evento também.
Abcs
Muito interessante e inteligente também.
O iE nos força mesmo a fazer tudo errado…
Percebi que o iE me deixa meio folgado, porque às vezes é tão mais fácil…melhor que ir aprender a fazer direito. rsrsrs
Abraços
@Bernardo: mas aí seria window.event, não? Que me lembre o IE não passa o evento como parâmetro.
@Eduardo: Também sentia isso antes de começar com Ajax. Mas as frescuras que o IE dá é só pra atrapalhar mesmo…
Dizem que o bom é qualidade, e não quantidade, e pode apostar que em termos de qualidade teu blog está anos luz a frente :)
Um abraço!
Sim, só por window.event…