(Cette question est similaire à Celui-ci , mais il est d'utiliser XMLHTTPRequest au lieu d'un iframe pour la comète.)
Je démarre un sondage longue asynchrone comme ceci: p>
document.addEventListener('DOMContentLoaded', function () { setTimeout(function () { var xhr = new XMLHttpRequest(); xhr.open('POST', url); xhr.send(); }, 0); });
4 Réponses :
Quand vous dites: p>
... Cela entraînera le chargement du document pour toujours. p> blockQuote>
Qu'est-ce que tu veux dire exactement par ceci? Voulez-vous dire que la barre de progression ne se termine jamais? Ou est-ce que le document réel n'est-il même pas entièrement visible? Il n'est pas probable qu'une demande AJAX empêche tout le document du chargement, mais de toute façon ... p>
Case 1: La barre de progression ne finit jamais h3>
Ceci est probablement causé par la demande AJAX ne terminant jamais. Avez-vous essayé de regarder la demande Ajax dans une console Firebug? Il vous montrera à la fois la demande et la réponse du serveur. Je commencerais ici simplement pour vous assurer que le serveur envoie quelque chose em> retour. P>
Cas 2: Les éléments du document ne sont pas entièrement chargés / visibles h3>
Vous pouvez essayer de mettre votre
Pourquoi ne pas utiliser une bibliothèque JS? JQuery fera bien ici.
Est-ce la même chose si vous mettez le code JavaScript avant la fermeture de la balise de fermeture corporelle>?
Makram, j'ai besoin de garder cela très i> minimal. Je ne pense pas que JQuery fait une différence ici. C'est prêt l'événement, il suffit d'utiliser DomContentOaré sur Safari.
La plupart des implémentations de comète appuient les mises à jour sur un document interne ou iframe caché et ne font pas partie de la page. Je vérifierais le fichier JS du serveur météore pour des exemples de comment faire cela.
Je ne veux pas faire ça. Cette question est spécifiquement sur XHR. Le même problème pour la méthode IFrame est posé dans la question que je lie dans le premier paragraphe.
Retardez la commande d'envoi afin que cela ne tire pas dans Domready. Cela fixe au moins pour chrome.