5 回答
TA贡献1818条经验 获得超8个赞
如果是父子级关系
假如我在父页面定义一个变量
var value=1
子页面可以直接通过
parent.value 获取父页面的这个变量
注意的是 父页面的定义的变量必须是全局的
window不知道,但应该也可以根据这种方法套,
比如parent.$("#id")
TA贡献1829条经验 获得超7个赞
一、同源环境
1、首先在父页面获取iframe中的window,然后获取元素,根据window,不仅可以获取元素,还能调用里面的方法,前提是绑定在window上面
var ifW = $('#ifr')[0].contentWindow;
ifW.document.getElementsByClassName('wrap')
2、在iframe中获取父页面的window
1
window.parent
3、那么问题来了。这里有些人可能发现,获取元素的时候,根本获取不到,或者有时候有,有时候没有,很奇怪。。。其实呢,这是因为你引入iframe的时候,不能确定iframe是否加载完成,另外具体是iframe里面的js先执行,还是父页面的js先执行,也是个问题。既然问题找到了,那就可以给
ifW.document.getElementsByClassName('wrap')
这句代码加个延时,或者写在点击事件里面,等点击触发才去获取,这个时候就没有问题了
二、非同源
可以使用 HTML5的api , window.postMessage
在 iframe 里面,向父页面发送消息
1
window.top.postMessage("close",'*');
在父页面,,监听消息
1
2
3
4
window.addEventListener("message", function(event){
var origin = event.origin || event.originalEvent.origin;
}, false);
当然也可以在 iframe里面监听事件, 父页面发送消息
添加回答
举报