如何等待脚本节点完成加载?

时间:2013-05-23 17:08:11

标签: javascript jquery html

在javascript中,我将<script tag>插入iframe中,如下所示:

var iframe = document.getElementById('iframe');
var doc= iframe.contentWindow.document.getElementsByTagName('head')[0];

var jquery = document.createElement("script");
jquery.type = "text/javascript";
jquery.src   = "jquery-1.9.1.min.js";

var script   = document.createElement("script");
script.type  = "text/javascript";
script.src   = "blah.js";

doc.appendChild(jquery);
doc.appendChild(script);

但是,blah.js中存在jquery代码,有时此脚本失败,因为jquery脚本尚未完成加载。有没有办法等到它加载完毕?

感谢。

2 个答案:

答案 0 :(得分:2)

关键是使用script.onload = functionName;修复IE8。有关完整代码,请参阅https://stackoverflow.com/a/15437678/2227298

加载jQuery后,您可以将jQuery.getScript与success参数一起使用。

答案 1 :(得分:1)

在第一个脚本的末尾添加一个回调。

在jquery.js的末尾:

if (window.jqueryLoaded)
    window.jqueryLoaded();
你的代码中的

// create the function that will be called once jquery finishes loading
function jqueryLoaded()
{
    doc.appendChild(blah);
}

// load jquery
doc.appendChild(jquery);

如果您无法修改jquery.js文件,请使用计时器替代(不是真正推荐)方式:

var checkjQuery = window.setInterval(function() {
    if (!window.jQuery)
        return;
    window.clearInterval(checkjQuery);

    window.jqueryLoaded();
}, 10);