J'écris un widget JavaScript, qui est destiné à être utilisé sur un autre site web et charge des fichiers script supplémentaires à partir de mon propre site web (ce qui signifie fondamentalement pas de XHR en raison de limitations inter-domaines). Maintenant, je veux gérer les échecs avec élégance - si un script ne parvient pas à charger, je veux charger le script à partir d'un serveur alternatif.Comment annuler le chargement d'une ressource HTML externe, à partir de JavaScript?
J'ai réussi à gérer les défaillances de serveur où le 1er serveur renvoie une erreur, mais je veux également gérer un délai d'attente - si le 1er serveur prend trop de temps pour répondre, je veux abandonner le chargement. Le problème est que je peux configurer un délai d'attente pour déclencher une méthode qui bascule vers le serveur secondaire, mais le script du serveur secondaire ne se charge pas correctement jusqu'à ce que le navigateur lui-même expire sur la demande d'origine - ce qui est trop long pour mes besoins. Je veux être en mesure de - pendant que la première balise < script> est en cours de chargement - abandonner la charge, et ajouter une deuxième balise < script qui pointe vers le serveur alternatif.
J'ai essayé de définir l'attribut src du script original sur null, et même de supprimer la balise de l'élément HEAD en utilisant removeNode(), mais sans effet.
Tout cela a été essayé sur Firefox - Je n'ai pas encore essayé IE, mais la solution doit fonctionner sur les deux. J'aimerais entendre des suggestions.
Je suis en train de charger le deuxième script à partir du même serveur (même nom d'hôte de toute façon - sa charge est équilibrée donc c'est probablement un serveur différent). Tout cela se produit après DOMReady et dans l'élément HEAD afin de ne pas retarder le rendu de la page.BTW "report" est uniquement pris en charge sur IE. – Guss
De nombreux navigateurs ont toujours 2 demandes simultanées au même nom d'hôte. Cela peut donc vous empêcher de charger le second script - si vous chargez une image ou autre chose du même nom d'hôte. Essayez de créer un nouveau sous-domaine qui utilise également l'équilibreur de charge. – gregers
cela semble fonctionner. Je vérifierai! – Guss