J'ai une minuterie dans mon JavaScript qui doit émuler en cliquant sur un lien pour accéder à une autre page une fois le temps écoulé. Pour ce faire, j'utilise la click()
fonction de jQuery . J'ai utilisé $().trigger()
et window.location
aussi, et je peux le faire fonctionner comme prévu avec les trois.
J'ai observé un comportement étrange avec click()
et j'essaie de comprendre ce qui se passe et pourquoi.
J'utilise Firefox pour tout ce que je décris dans cette question, mais je suis également intéressé par ce que les autres navigateurs en feront.
Si je n'ai pas utilisé $('a').bind('click',fn)
ou $('a').click(fn)
défini de gestionnaire d'événements, alors l'appel $('a').click()
semble ne rien faire du tout. Il n'appelle pas le gestionnaire par défaut du navigateur pour cet événement, car le navigateur ne charge pas la nouvelle page.
Cependant, si je définis d'abord un gestionnaire d'événements, cela fonctionne comme prévu, même si le gestionnaire d'événements ne fait rien.
$('a').click(function(){return true;}).click();
Cela charge la nouvelle page comme si j'avais cliqué sur le moi-même.
Ma question est donc double: est-ce un comportement étrange parce que je fais quelque chose de mal quelque part? et pourquoi l'appel click()
ne fait rien avec le comportement par défaut si je n'ai pas créé mon propre gestionnaire?
ÉDITER:
Comme Hoffman l'a déterminé lorsqu'il a essayé de reproduire mes résultats, le résultat que j'ai décrit ci-dessus ne se produit pas réellement. Je ne suis pas sûr de la cause des événements que j'ai observés hier, mais je suis certain aujourd'hui que ce n'est pas ce que j'ai décrit dans la question.
Donc, la réponse est que vous ne pouvez pas "faux" clics dans le navigateur et que tout ce que jQuery fait est d'appeler votre gestionnaire d'événements. Vous pouvez toujours utiliser window.location
pour changer de page, et cela fonctionne très bien pour moi.