Esqueci a senha

Campus Online

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)

Execute o exemplo