Tengo un temporizador en mi JavaScript que necesita emular haciendo clic en un enlace para ir a otra página una vez que transcurre el tiempo. Para hacer esto estoy usando la click()
función de jQuery . Lo he usado $().trigger()
y window.location
también, y puedo hacerlo funcionar según lo previsto con los tres.
He observado algunos comportamientos extraños click()
y estoy tratando de entender qué sucede y por qué.
Estoy usando Firefox para todo lo que describo en esta pregunta, pero también estoy interesado en lo que otros navegadores harán con esto.
Si no he usado $('a').bind('click',fn)
o $('a').click(fn)
para configurar un controlador de eventos, llamar no $('a').click()
parece hacer nada. No llama al controlador predeterminado del navegador para este evento, ya que el navegador no carga la nueva página.
Sin embargo, si configuro un controlador de eventos primero, entonces funciona como se esperaba, incluso si el controlador de eventos no hace nada.
$('a').click(function(){return true;}).click();
Esto carga la nueva página como si hubiera hecho clic en el mismo.
Entonces mi pregunta es doble: ¿Es este comportamiento extraño porque estoy haciendo algo mal en alguna parte? ¿Y por qué las llamadas no click()
hacen nada con el comportamiento predeterminado si no he creado un controlador propio?
EDITAR:
Como Hoffman determinó cuándo intentó duplicar mis resultados, el resultado que describí anteriormente en realidad no sucede. No estoy seguro de qué causó los eventos que observé ayer, pero hoy estoy seguro de que no fue lo que describí en la pregunta.
Entonces, la respuesta es que no puede hacer "falsos" clics en el navegador y que todo lo que hace jQuery es llamar a su controlador de eventos. Todavía puede usar window.location
para cambiar de página, y eso funciona bien para mí.