1

opener

opener即谁打开我的,比如A页面利用window.open或a标签弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。
注: a标签默认打开的页面会带opener,如果加上 rel="noopener noreferrer",则新跳转的页面 opener === null;noreferrer属性则是为了兼容旧版本的浏览器,功能是一样的。

加上 noopener noreferrer的好处

  1. 安全方面,可以防钓鱼网站和网页劫持,例如,window.opener.location=newURL可以将您的页面导航至不同的网址
  2. 性能方面,可以强制浏览器为新页面重开一个进程,使新页面与旧页面运行在不同的进程中。例如若不加,则新页面将与您的页面在同一进程上运行,如果新页面正在执行开销极大的JavaScript,您的页面性能可能会受影响。

opener的使用

例如,从A页面跳B页面。要求在B页面关闭时刷新A页面,或是将A页面链接到其他指定页面。

 closeWindow() {

 window.onbeforeunload = this.berforeUnload

 window.close()

 },

 berforeUnload() {

 let routeUrl = this.$router.resolve({

 name: 'examManageIndex'

 })

  

 window.opener.location.href = routeUrl.href

 window.onbeforeunload = null

 }

parent

parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。
注: 一般通过window.parent 和window.top、 window.self的比较,判断当前是否是顶层窗口;当前窗口若为顶层窗口,则window.top === window; window.parent === window


这有一个错误
28 声望1 粉丝

!盗版前端工程师