1

在 javascript 中,我将 a 插入<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);

但是, 中有 jquery 代码blah.js,有时这个脚本会失败,因为 jquery 脚本还没有完成加载。有没有办法等到它完成加载?

谢谢。

4

2 回答 2

3

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

加载 jQuery 后,您可以使用jQuery.getScriptsuccess 参数。

于 2013-05-23T17:30:59.940 回答
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);
于 2013-05-23T17:13:13.423 回答