opener
opener即谁打开我的,比如A页面利用window.open或a标签弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。
注: a标签默认打开的页面会带opener,如果加上 rel="noopener noreferrer",则新跳转的页面 opener === null;noreferrer属性则是为了兼容旧版本的浏览器,功能是一样的。
加上 noopener noreferrer的好处
- 安全方面,可以防钓鱼网站和网页劫持,例如,window.opener.location=newURL可以将您的页面导航至不同的网址
- 性能方面,可以强制浏览器为新页面重开一个进程,使新页面与旧页面运行在不同的进程中。例如若不加,则新页面将与您的页面在同一进程上运行,如果新页面正在执行开销极大的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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。