iframe如何获取父级页面的变量亦或者window对象?

打印以后发现是这样访问的:iframe里面,window.widow.VAL


但是window里面包含了非常多层,这是什么原因?


即我在父页面的window挂一个变量VAL

window.VAL = 1

那么在父页面里面的iframe访问VAL可以通过:window.widow.VAL/window.widow.window.VAL。

为什么window一直包含window?


猛跑小猪
浏览 6977回答 5
5回答

弑天下

如果是父子级关系假如我在父页面定义一个变量var value=1子页面可以直接通过parent.value 获取父页面的这个变量注意的是 父页面的定义的变量必须是全局的window不知道,但应该也可以根据这种方法套,比如parent.$("#id")

侃侃尔雅

window.parent.VAL

30秒到达战场

父窗口对象:window.parent.document

慕慕森

window.parent

千巷猫影

一、同源环境 1、首先在父页面获取iframe中的window,然后获取元素,根据window,不仅可以获取元素,还能调用里面的方法,前提是绑定在window上面var ifW = $('#ifr')[0].contentWindow;ifW.document.getElementsByClassName('wrap')2、在iframe中获取父页面的window1window.parent3、那么问题来了。这里有些人可能发现,获取元素的时候,根本获取不到,或者有时候有,有时候没有,很奇怪。。。其实呢,这是因为你引入iframe的时候,不能确定iframe是否加载完成,另外具体是iframe里面的js先执行,还是父页面的js先执行,也是个问题。既然问题找到了,那就可以给  ifW.document.getElementsByClassName('wrap')这句代码加个延时,或者写在点击事件里面,等点击触发才去获取,这个时候就没有问题了二、非同源可以使用 HTML5的api , window.postMessage在 iframe 里面,向父页面发送消息1window.top.postMessage("close",'*');  在父页面,,监听消息1234window.addEventListener("message", function(event){var origin = event.origin || event.originalEvent.origin;}, false);当然也可以在 iframe里面监听事件, 父页面发送消息
打开App,查看更多内容
随时随地看视频慕课网APP