Quelques problèmes : vous pouvez utiliser des seuils de dépassement de délai avec XMLHttpRequest
(aka ajax), mais comme c'est sur une otherserver.com
vous ne pouvez pas utiliser XMLHttpRequest
(et supporter tous les navigateurs de classe A) en raison de la Restriction de la politique de la même origine .
Si le script introduit une sorte de nom global (par exemple un nom de variable, un nom de fonction, etc.), vous pouvez essayer setTimeout
pour continuer à le vérifier :
var TIMELIMIT = 5; // seconds until timeout
var start = new Date;
setTimeout(function() {
// check for something introduced by your external script.
// A variable, namespace or function name here is adequate:
var scriptIncluded = 'otherServerVariable' in window;
if(!scriptIncluded) {
if ((new Date - start) / 1000 >= TIMELIMIT) {
// timed out
alert("Please try again")
}
else {
// keep waiting...
setTimeout(arguments.callee, 100)
}
}
}, 100)
Le problème tel que je le vois est que vous ne pouvez pas annuler la demande pour le script. Que quelqu'un me corrige si j'ai tort, mais la suppression de l'élément <script>
du DOM laissera toujours la demande du navigateur pour la ressource active. Ainsi, bien que vous puissiez détecter que le script prend plus de x secondes à charger, vous ne pouvez pas annuler la demande.
Je pense que vous n'avez pas de chance.