同域场景下,如何从iframe自身访问父窗口?
如何在同源iframe中访问父窗口?
嘿,既然你的iframe和顶层页面是同源的(都是https://www.example.com域名下,协议、域名、端口完全一致),浏览器的同源策略不会限制你,访问父窗口的方法超直接:
- 用
window.parent:这个对象指向当前iframe的直接父窗口。就像你给出的结构,你的iframe是直接嵌套在顶层页面里的,所以window.parent就等于最外层的顶层窗口。 - 用
window.top:如果之后页面结构有多层iframe嵌套,这个属性会直接指向最外层的顶层窗口,不管中间有多少层嵌套,用它更稳妥。
举个实际操作的例子,在article/4325这个iframe里,你可以这么写代码:
// 获取父页面里所有带loaded类的iframe const allParentIframes = window.parent.document.querySelectorAll('iframe.loaded'); // 甚至直接修改顶层页面的样式 window.top.document.body.style.backgroundColor = '#f5f5f5';
要记住哦,只有同源的情况下才能这么自由地访问父窗口的DOM和对象,如果是非同源的话,浏览器会出于安全考虑阻止这类操作,这就是同源策略的作用。
内容的提问来源于stack exchange,提问作者user9612743
相关产品推荐
相关产品推荐

