javascript – 如何访问iframe的$(document).ready(function(){})中包含的函数?

前端之家收集整理的这篇文章主要介绍了javascript – 如何访问iframe的$(document).ready(function(){})中包含的函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

所以我有一个iframe,它有一些函数包含在$(document).ready(function(){})中.

我知道我可以用$(‘iframe’).contents().find(‘something’)之类的东西访问DOM,但是我可以从上面访问foo()函数吗?

最佳答案
您无法访问iframe的ready函数中的变量,原因与您无法访问任何其他函数的局部变量相同(您无法在范围内“关闭”).但是,如果您可以修改iframe中的代码,则可以随时进入范围.所以在你的iframe代码中:

$(document).ready(function() {
    function func1() {
        alert("Function in iframe");
    }

    parent.iframeFunctions = {
        test: func1
    }
});

下一个问题是您需要能够访问该功能.您无法使用正常的jquery文档,因为当父页面的DOM准备就绪时iframe未完成加载,因此您的iframeFunctions对象在父页面中仍未定义.你需要这个:

$(window).load(function() {
    iframeFunctions.test();
});

但是,您可以访问iframe的全局空间.哦,是的,到目前为止,这是假设iframe源属于同一域策略.如果没有,那么涉及的工作就会多得多,在很多情况下甚至都不值得.例如,jquery对象位于全局空间中,所以这里是你如何得到iframe的jquery:

$("iframe")[0].contentWindow.$("#divInIframe")

因此,如果您修改iframe源的内容以使用函数表达式而不是函数声明:

var func1 = function() {
    alert("Function in iframe");
}

$(document).ready(function() {
    func1();
});

您也可以从父级访问它(在窗口加载事件触发后):

$(window).load(function() {
    $("iframe")[0].contentWindow.func1();
});

猜你在找的jQuery相关文章