jQuery/JavaScript:访问一个iframe的内容

我想用jQuery来操作iframe里面的HTML。

我想我可以通过设置jQuery函数的上下文为iframe的文档来做到这一点,比如说。

$(function(){ //document ready
    $('some selector', frames['nameOfMyIframe'].document).doStuff()
});

然而,这似乎并不奏效。稍微检查一下,我发现frames['nameOfMyIframe']中的变量是未定义的',除非我等待一段时间让iframe加载。然而,当iframe加载时,这些变量是不可访问的(我得到了 "拒绝许可 "类型的错误)。

有谁知道这个问题的解决方法吗?

解决办法

我认为你正在做的事情受到同源政策的制约。这应该是你得到许可拒绝类型错误的原因。

评论(6)

你需要给iframe的onload处理程序附加一个事件,并在其中执行js,这样你就可以在访问iframe之前确保它已经完成加载。

$().ready(function () {
    $("#iframeID").ready(function () { //The function below executes once the iframe has finished loading
        $('some selector', frames['nameOfMyIframe'].document).doStuff();
    });
};

上述做法可以解决尚未加载的问题,但关于权限问题,如果你在iframe中加载的是来自不同域的页面,由于安全限制,你将无法访问它。

评论(6)

你有没有试过经典的方法,使用jQuery'的内置ready函数来等待加载完成?

$(document).ready(function() {
    $('some selector', frames['nameOfMyIframe'].document).doStuff()
} );

K

评论(1)