在动态填充的iframe中重新运行Javascript

时间:2014-02-11 18:00:55

标签: javascript jquery ajax iframe

在页面上,我尝试使用ajax结果的HTML代码填充空<iframe id="myFrame"></iframe>。这很有效,除了代码中的脚本标签不是执行,所以我必须将它们读到iframe的页面:

$.post('page.php', function(code) {

    $("#myFrame").contents().find("html").get(0).innerHTML = code;

    $("#myFrame").contents().find("script").each(function() {

        $old_script = $(this);
        $frame = document.getElementById("myFrame");

        $new_script = $frame.contentWindow.document.createElement("script");
        $new_script.type = "text/javascript";
        $new_script.src = $old_script.attr("src");

        $old_script.remove();
        $frame.contentWindow.document.head.appendChild($new_script);

    });

});

基本上可行,但该文档似乎以不同的顺序加载Javascript文件。有3个js文件要加载:jquery.min.js,一个jquery插件和一个main.js文件来控制iframe中的bahavior:

// main.js:

$(document).ready(function() {
    alert("frame document loaded");
    // call the jquery plugins etc...
});

该页面提醒我“框架文档已加载”,但无法执行jquery插件。仔细检查脚本路径,但它们是正确的。似乎在插件文件之前加载了jquery.min.js和main.js.

如何按照ajax请求返回的代码中原来指定的方式逐个加载javascript文件?

编辑:忘了说有时一切正常,javascript似乎正确加载。重装后再次破裂。

0 个答案:

没有答案