2012-07-12 7 views
0

Le code ci-dessous fonctionne sur une page:événement lorsque le fichier est chargé

(function() { 
    function asyncLoad() { 
    var urls = ["https://something.com/script.js"]; 
    for (var i = 0; i < urls.length; i++) { 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.async = true; 
     s.src = urls[i]; 
     var x = document.getElementsByTagName('script')[0]; 
     x.parentNode.insertBefore(s, x); 
    } 
    } 
    window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false); 
})(); 
//]]> 

je besoin d'un écouteur d'événement qui se déclenche lorsque ce fichier est disponible dans les DOM.

J'ai besoin d'utiliser des variables de ce script.

J'ai besoin de savoir quand https://something.com/script.js a été chargé et si ce n'est pas le cas, je voudrais qu'une sauvegarde se déclenche. Cela peut se produire si le fichier n'a pas été chargé au cours d'une période donnée.

Sinon, je pourrais utiliser un événement pour quand une variable est disponible à partir du fichier script.js.

Répondre

1

éléments de script soutiennent l'événement de charge, de sorte que vous devez définir l'auditeur sur l'élément de script avant d'insérer dans le DOM, par exemple

s.src = urls[i]; 

    s.onload = asyncLoad; // add load listener 

    var x = document.getElementsByTagName('script')[0]; 
    x.parentNode.insertBefore(s, x);  

Si vous voulez savoir s'il est arrivé ou non succčs, utilisez XMLHttpRequest pour obtenir le contenu, puis l'affecter à la propriété texte de l'élément de script. De cette façon, vous pouvez savoir si le script a été récupéré, définir un délai en cas d'échec et prendre des mesures correctives et ne pas verrouiller le navigateur en attendant.

1

Si dans votre script.js a une fonction par exemple: function a() alors vous pouvez attraper quand il est disponible comme celui-ci

var checkScript = function(){ 
    if (typeof a === "function"){ 
     //fire event 
    }else{ 
     setTimeout(checkScript, 1000); 
    } 
} 
checkScript(); 
+0

http://stackoverflow.com/questions/756382/bookmarklet-wait-until-javascript-is-loaded http://stackoverflow.com/questions/3955770/dynamically-include-javascript-and-wait –

Questions connexes