J'utilise jQuery pour lier tous les liens de la page (j'utilise l'événement 'click', mais j'ai essayé différentes combinaisons de 'mousedown' et 'mouseup', avec bind() et live() pour pas disponible).javascript Comment déclencher l'action de clic natif (événement de relecture) plus tard?
Je peux intercepter le clic sans problème (avec toutes les méthodes ci-dessus). Ce que j'essaie de faire est d'envoyer des données via une requête GET, et quand elle se termine, permettre l'action de clic par défaut pour continuer.
Depuis que je communique à travers le domaine, je dois utiliser GET plutôt que POST, et ne peut donc pas faire un appel synchrone.
Par conséquent, je dois retourner 'faux' de l'événement de clic intercepté, stocker l'événement pour plus tard, puis le renvoyer manuellement une fois la communication terminée. Si je renvoie true, la communication est coupée à mi-chemin lorsque l'emplacement de la page change.
Le problème est, je ne peux pas trouver un moyen de déclencher l'événement de clic natif plus tard.
var storedEvent;
$("#wrapper a").bind('click', function(event, processed) {
$(event.target).unbind('click'); // temporary to make code branching easier
storedEvent = event.target;
event.stopPropagation();
$.ajax({
dataType: 'jsonp',
data: linkData,
jsonp: 'cb',
url: 'xxx',
cache: false,
complete: function(response) {
// How do I now go back and fire the native click event here?
$(storedEvent).click();
}
});
return false;
}
J'ai essayé d'utiliser click() et trigger() à l'endroit indiqué, mais aucun n'a fonctionné.
Je sais que la soumission est réussie, et le code se branche correctement - j'ai débogué aussi loin. Je ne semble pas être capable de rejouer l'événement.
Notez que je ne peux pas faire quelque chose de simple, comme stocker le href et définir window.location plus tard - certains des liens ont leurs propres onClicks ensemble, tandis que d'autres ont spécifié des cibles varius. J'aimerais idéalement rejouer l'événement que j'ai arrêté plus tôt.
J'ai commencé à utiliser la délégation d'événements avec live() et j'avais tout mis en œuvre, en dehors de cela - je l'ai simplifié jusqu'à un bind() afin de simplifier le problème.
À quoi ressemble l'événement de clic d'origine? Est-ce différent pour tout? – spinon
Parfois, il s'agit d'un clic spécifique, parfois d'un clic lié (par exemple pour thickbox/colorbox), parfois aucun événement - juste un lien, mais peut avoir plusieurs cibles (par exemple _top). J'ai réussi à obtenir le dispatching JavScript natif dans firefox - mais j'ai besoin de travailler dans IE. Dois-je inspecter l'élément et déterminer manuellement s'il faut déclencher un événement lié ou définir l'emplacement (cible). – Jhong
Je crois que vous auriez à travailler par vous-même oui – redsquare