Eu tenho um timer no meu JavaScript que precisa emular o clique em um link para ir para outra página depois que o tempo passa. Para fazer isso, estou usando a click()
função jQuery . Eu usei $().trigger()
e window.location
também, e posso fazê-lo funcionar como planejado com todos os três.
Eu observei algum comportamento estranho click()
e estou tentando entender o que acontece e por quê.
Estou usando o Firefox para tudo o que descrevo nesta pergunta, mas também estou interessado no que outros navegadores farão com isso.
Se eu não usei $('a').bind('click',fn)
ou $('a').click(fn)
defini um manipulador de eventos, a chamada $('a').click()
parece não fazer nada. Ele não chama o manipulador padrão do navegador para este evento, pois o navegador não carrega a nova página.
No entanto, se eu definir um manipulador de eventos primeiro, ele funcionará conforme o esperado, mesmo que o manipulador de eventos não faça nada.
$('a').click(function(){return true;}).click();
Isso carrega a nova página como se eu tivesse clicado no a.
Portanto, minha pergunta é dupla: esse comportamento é estranho porque estou fazendo algo errado em algum lugar? e por que chamar não click()
faz nada com o comportamento padrão se eu não criei meu próprio manipulador?
EDITAR:
Como Hoffman determinou quando tentou duplicar meus resultados, o resultado que descrevi acima não acontece realmente. Não sei ao certo o que causou os eventos que observei ontem, mas hoje estou certo de que não foi o que descrevi na pergunta.
Portanto, a resposta é que você não pode "falsificar" cliques no navegador e tudo o que o jQuery faz é chamar seu manipulador de eventos. Você ainda pode usar window.location
para alterar a página, e isso funciona bem para mim.