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

Javascript 如何等待脚本节点完成加载?,javascript,jquery,html,Javascript,Jquery,Html,在javascript中,我在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 = "

在javascript中,我在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脚本还没有完成加载。有没有办法等到装载完毕


谢谢。

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

在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);

关键是使用
script.onload=functionName并修复了IE8。有关完整代码,请参阅


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

script.onready=function(){…}
(或者作为一个很酷的家伙,使用addEventListener/attachEvent)我想你是说
jQuery.onready=function(){…}
,然后在函数中,我加载了
script
变量?我尝试了这个
jquery.onready=function(){alert(1);}
,但警报从未发生过。实际上,它的
onload
不是
onready
…还有其他方法吗?我不能修改
jquery-1.9.1.min.js
文件编辑答案以显示一个带有计时器的方法。