jq获取iframe中的内容

这里需要说明的是,非同源的iframe涉及跨域,我还没有遇到过,理论上是不能对没有权限的非同源iframe中内容进行操作的。
大部分同源情况下,$(window.frames[id].document)可以获取到iframe里面的document,接下来就是基本的dom操作。

另外,需要注意的是:如果你用了上面的代码没有获取到想要的内容,请思考如下问题:
1:你要操作的iframe中的dom节点,在函数运行的时候刷新出来了吗?
如果没有刷新出来,你是无论如何也获取不到的。可以用iframe的onload事件来判断是否刷新完成,或者用定时器,具体问题具体分析。
2:如果你要绑定事件,那么dom节点刷新了之后,事件还存在吗?答案是刷新了之后绑定在dom节点上的事件就相当于没了,需要利用事件委托,把事件绑定在不会变动的父节点上。

另一个方法:这里用我昨天在项目中的例子

//给iframe中的表格添加点击事件,点击表格,获取表格的内容
$("iframe[id='iframe_table']").on("load",function(){
            var iframeWindow=$("iframe[id='iframe_table']")[0];//这里的[0]是jq的方法,得到的是js节点,不是jq对象,等同于window.frames['iframe_table']
            $(iframeWindow.contentWindow.document). find("table").parent().on("click",function(e){
                alert(e.target.innerHTML);
            });
        });

你可能感兴趣的:(前端笔记)