当前位置:  开发笔记 > 编程语言 > 正文

jQuery/JavaScript:访问iframe的内容

如何解决《jQuery/JavaScript:访问iframe的内容》经验,为你挑选了8个好方法。

我想使用jQuery操纵iframe中的HTML.

我以为我可以通过将jQuery函数的上下文设置为iframe的文档来实现这一点,例如:

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

然而,这似乎不起作用.一些检查显示我的变量frames['nameOfMyIframe']undefined除非我等待一段时间加载iframe.但是,当iframe加载时,变量不可访问(我得到permission denied-type错误).

有没有人知道这方面的解决方法?



1> Yasir Laghar..:

如果


以上是如何通过iframe编辑外部页面而不拒绝访问等的示例...


当然,因为您的服务器正在获取远程页面而不是用户的浏览器,所以不会将cookie发送到远程页面.因人而异.
@basysmith请注意:存在"同源策略"存在的原因,而这个答案的提议并不能免除它.
@geon:但浏览器不会将外域的cookie发送到您的PHP脚本

5> zupa..:

我觉得这样清洁:

var $iframe = $("#iframeID").contents();
$iframe.find('selector');



6> 小智..:

使用

iframe.contentWindow.document

代替

iframe.contentDocument


如今,即使从控制台也无法运行
我相信它只适用于其他域名,如果你是从控制台进行的.从脚本中,不允许访问.

7> Andreas Grec..:

您需要将事件附加到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中加载来自其他域的页面,则由于安全限制,您将无法访问该页面.


关于此代码的几点注意事项:您应该使用iframe.contentDocument而不是.document,并且应该使用.load()而不是.ready()来避免等待.(不完美,但更好)

8> B.Asselin..:

您可以使用window.postMessage在页面和他的iframe之间调用函数(是否跨域).

文档

page.html中




    Page with an iframe
    
    
    


    

Page with an iframe

Iframe.html的




    iframe
    
    
    


    

iframe

It's the iframe.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有