IE8 – comment exécuter le code jQuery après le chargement du contenu?

Je suis dans une situation où je charge une page Web parente (qui se trouve être Java JSP) dont le contenu est chargé en utilisant ajax (asynch) dans une fonction de préparation de document, dans laquelle la page doit restituer rapidement le contenu, puis exécuter le code jquery effectuer un travail asynchrone après l’affichage de la page.

Cela fonctionne comme prévu dans firefox – page rend rapidement et ensuite le code jquery exécute les appels ajax charger d’autres éléments.

Dans IE8, il attend que tout soit terminé, puis affiche les résultats complets. Cela n’honore pas ma tentative de document prêt. Il rest assis à charger la page pendant que je code dans la section Document Ready, puis les résultats complets sont affichés dans le navigateur.

Y at-il une solution de contournement? N’importe quel moyen pour que IE8 se comporte comme Firefox à cet égard … restituez la page le plus rapidement possible, puis exécutez des appels jquery code / ajax APRÈS le rendu?

Il s’agit d’un bogue affectant IE6 7 et 8. Le gestionnaire de documents prêts de jQuery ne se déclenche qu’avant ou juste après le chargement de la fenêtre dans IE 6 7 et 8. Cela ne se produit pas dans IE9.

Une solution consiste à gérer l’événement vous-même.

  

puis utilisez dans votre script ceci:

 function init() { // code here will be ran when document is ready $("body").css("background-color","green"); } if ( $("body").is(".jquerydomready") ) { $(init); // not oldIE } else { // oldIE way document.onreadystatechange = function() { if (document.readyState == "interactive") init(); }​ } 

Gardez toutefois à l’esprit que si vous exécutez des requêtes ajax et que vous vous attendez à ce qu’elles arrivent rapidement, sinon le code ne fonctionnera pas, je suggère de passer à un système qui ne les nécessite pas rapidement car vous ne pouvez pas toujours compter sur le réseau. être rapide.

ticket: http://bugs.jquery.com/ticket/12282

Il n’est actuellement pas considéré comme un bogue, mais si vous suivez l’historique de ce problème, il a été corrigé et résolu plusieurs fois au cours du développement de jQuery.

Edit: Je ne suis pas tout à fait sûr de la partie IE6 de cette réponse, je n’ai pas testé IE6 avec cela.

Voici un support de JSFiddle montrant qu’il attend incorrectement dans IE7 et 8 (encore une fois non testé dans IE6).

Avant le correctif ci-dessus: http://jsfiddle.net/PFWmS/

Après le correctif ci-dessus: http://jsfiddle.net/PFWmS/7

Avez-vous essayé de déplacer votre section à la fin de la page?