大前端开发

(top/parent/self/window).locatio

2019-05-30  本文已影响1人  遇侎粒_duyuqin

前言

最近,别人的系统通过iframe嵌套引用我们系统页面出现的一个bug引发了我对框架嵌套及框架各个对象关系的深思...


窗口对象.jpg

window对象

BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色:

location对象

location对象既是window对象的属性,又是document对象的属性,换句话说,window.location和document.location引用的是同一个对象。

框架(iframe/frameset)

如果页面中包含框架,则每个框架都拥有自己的window对象,window对象中又包含top、parent、self属性,可以通过window.parent、window.top等形式访问,那这三个属性之间有什么联系呢?

总结

应用

if(window.top !==window.self) {
  //若当前window对象和浏览器窗口对象不一致,则使用当前框架的url替换掉浏览器窗口的url
  window.top.location.href=window.self.location.href;
  //或者: top.location.href=self.location.href;
  //或者: top.location.href=location.href;
}

框架嵌套存在跨域问题,若在跨域的子框架中访问父框架,是存在问题的。网上有很多相关文章,有需要的小伙伴可以自行查阅,这里不再赘述。
PS:本人才疏学浅,若有错误或考虑不周之处,欢迎大家留言指正和探讨!

上一篇 下一篇

猜你喜欢

热点阅读