J'utilise la jquery suivante pour hijaxing. C'est assez soigné car il suppose que la majorité des liens "veulent" hijaxer mais laisse ceux qui ne "optent" pas en ayant la classe "nohijax". Pourquoi fait-il parfois défaut?Nice hijax échoue parfois
$("#content a:not(.nohijax), #footer a:not(.nohijax)").live("click", function() {
$.get($(this).attr("href"), function (response) {
$("#content").replaceWith($("#content", response));
});
return false;
});
Il fonctionne 100% en chrome, 100% en IE9 sur ma machine, mais échoue rarement dans IE sur d'autres machines. Les échecs ne sont pas cohérents. Même sur une machine «défaillante», le hijaxing fonctionne la plupart du temps, mais soudainement, un lien cliqué apparaît pour «ne rien faire» parce que l'ancien contenu n'est pas remplacé par le nouveau. "Ouvrir dans un nouvel onglet" fonctionne toujours, montrant que le nouveau contenu est bien envoyé.
J'ai essayé de rechercher le problème ici. Il faut être prudent en utilisant .not() avec .live() mais je crois que j'ai raison. Aussi l'élément remplacé (ici, un div avec id = "content") ne doit pas être un enfant direct de l'élément body. Ce n'est pas (il y a une autre div entre).
S'il n'y a pas de hurleur évident, comment puis-je savoir ce qui se passe? (Je suis nouveau au javascript et au développement de navigateur). Je vous remercie.
Merci pour votre réponse rapide André, il m'a mis sur la bonne voie et je l'ai fait un petit test utilisant .on() au lieu de .live(), qu'il remplace à partir de jquery 1.7. Fonctionne bien, mais je n'ai pas eu le temps de le vérifier dans le contexte d'origine; Je rapporterai si cela résout le problème. Merci aussi pour l'astuce console.log. Désolé, je ne peux pas voter pour votre réponse, car je suis nouveau. – EyeNine