Cancelando Eventos
Cancelando Eventos
Temos também diferenças entre os navegadores quando precisamos cancelar um evento. Chamamos de cancelar um evento evitar que a ação padrão disparada por aquele evento ocorra. Por exemplo, o clique em um botão submit de formulário faz com que o formulário seja submetido. Cancelar o evento é fazer com que ele não seja submetido, o que é essencial ao se fazer, por exemplo, validação de formulário. Segundo a documentação do W3C, para cancelar um evento qualquer, precisamos chamar o método preventDefault do objeto de evento. Mas em nosso amigo Internet Explorer as coisas funcionam de maneira um pouco diferente. No Internet Explorer, para cancelar um evento, é preciso fazer com que a função que está tratando o evento retorne false.
Sendo assim, vamos criar uma pequena função de tratamento de eventos que testa se é possível chamar preventDefault. Se o método existir é executado. E ela retorna false de qualquer forma:
function cancelEvent(e){
if(e.preventDefault)e.preventDefault()
return false
}
Assim, quando quisermos cancelar um evento, precisamos executar na função que trata o evento:
return cancelEvent(e)
Veja como isso fica num exemplo real, que cancela o clique em um link:
function clicou(e){
alert("Cancelando o evento")
//Cancela o evento, evitando a navegação.
return cancelEvent(e)
}
function init(){
//Chama a função clicou ao clicar no primeiro (e único) link da página
addEvent(document.getElementsByTagName("a")[0],"click",clicou)
}
//Chama a init quando terminar de carregar
addEvent(window,"load",init)