在JavaScript中如何等待动态注入的脚本在开始使用之前加载?

时间:2016-03-29 14:30:03

标签: javascript

不使用任何外部库如何在使用之前等待脚本加载。

在我的情况下,我正在使用:

加载脚本
(function (w,d,t,s,e,r) {

    e = d.createElement(o);
    r = d.getElementsByTagName(o)[0];
    e.async = 1;
    e.src = g;
    r.parentNode.insertBefore(e, r)

})(window, document, 'script', '//mydomain.com/path/to/script.js');

后来:

// then later I want to use some code form the script:
var obj = new classFromTheInjectedScript();

是否有等待脚本加载然后开始使用它?

  

注意:我有办法可以在我想要的脚本中触发事件   如下所示加载然后收听它,但这是一个好主意吗?

(function(w,d){

    document.addEventListener('scriptLoadedCustomEvent',onScriptReady);

    function onScriptReady(){
        // what I need to do goes here!
    }


})(window,document);

3 个答案:

答案 0 :(得分:6)

你应该可以做这样的事情!

    var script = document.createElement('script');
    script.src = url; //source 

    var callback = function (){ 
      // do stuff after loaded
    }
    script.onload = callback;

    document.head.appendChild(script); //inject where you need it to be

答案 1 :(得分:5)

您可以对onload标记使用onerror<script>个事件。好的例子here

答案 2 :(得分:-2)

您可以手动读取文件源并将其插入脚本标记中,这样您就可以获得AJAX响应事件