使用appendChild加载脚本不能很好地加载其内容?

时间:2018-03-28 08:37:02

标签: javascript

我创建了一个脚本,通过将其附加到文档头来添加javascript文件。

以下是代码:

var Dim = (function(s){ 
    var storage; 
    function loadError (oError) {
        throw new URIError("The script " + oError.target.src + " is not accessible.");
    }
    return {
        require : function(script,callback){
            var oScript = document.createElement("script");
            oScript.type = "text\/javascript";
            oScript.onerror = loadError;
            if (callback) { 
                oScript.onload = callback; 
            }
            document.head.appendChild(oScript);
            oScript.src = script;
        }
    };
})();

让我们说我们这样使用:

Dim.require("script.js", function(){alert(token)}); alert(token);

script.js代码是:

alert(" Ok"); var token = " Hello";

问题是脚本已加载,但我无法使用其内容。

有人能指出我的问题吗?

1 个答案:

答案 0 :(得分:0)

Dim.require("script.js", function(){alert(token)}); alert(token);

它首先运行警报,因为它在回调中,当浏览器加载脚本时调用它。

if (callback) { 
  oScript.onload = callback; 
}

第二个没有给你提醒,因为它给你一个错误

  

未捕获的ReferenceError:未定义标记

您正在异步加载script.js并在执行第二次提醒时,script.js尚未加载。