重复的javascript引用

时间:2014-03-04 19:39:13

标签: javascript

我要向我的客户提供一些javascript来放置他们的页面。 那个javascript代码注入我的客户端页面引用我服务器中的一些javascript。 与此类似:

if (typeof MYSUPERVAR == 'undefined') {
      var head = document.getElementsByTagName('head')[0];
      var script = document.createElement('script');
      script.src = '//mywebsite.com/myjs.js';
      script.async = true;
      script.type = 'text/javascript';
      head.appendChild(script);
   }
   //After JS is loaded call MYJS_FUNCTION_A
   MYJS_FUNCTION_A()

“myjs”创建MYSUPERVAR并创建一个应该在每次用户想要时调用的函数(通过添加相同的javascript)。 这是为了添加一些图像功能,因此用户必须每次都将脚本与imageid放在一起。 问题是这会一直为myjs创建一个脚本引用。

在添加一个引用之前,可以知道myjs是否正确加载了吗?

2 个答案:

答案 0 :(得分:1)

你可以在加载完成后加载js文件并调用回调函数。

<script>
function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(s);
}
loadJS('/script/script.js', function() { 
    // put your code here to run after script is loaded
});
</script>

答案 1 :(得分:0)

您可以在myjs.js中设置一个全局变量(如window.JSLOADED),并使用true值,并创建一个定时器(使用setInterval)来检查JSLOADED == true。 当myjs.js加载时,它设置JSLOADED,然后继续其余的。 希望你解决它。