window.opener 可靠吗?

Is window.opener reliable?

提问人:Pekka 提问时间:3/5/2010 最后编辑:Pekka 更新时间:1/13/2020 访问量:1599

问:

JavaScript 的属性是否可靠地跨浏览器可用,并且不受任何安全设置和任何形式的限制的影响?打开程序和打开的窗口将位于同一域中。window.opener

在某些情况下,是否有人遇到过麻烦,糟糕的体验?

我之所以这么问,是因为我计划构建一个严重依赖它并且应该支持尽可能多的平台的工具。

JavaScript 安全性

评论


答:

5赞 Pointy 3/5/2010 #1

我现在已经是两个网站的开发人员,这些网站广泛使用window.opener,我不知道它什么时候让我失望。这些应用程序在 IE[678]、Firefox 和 Webkit 上进行了测试;我非正式地使用过 Opera,也没有注意到那里有问题。

现在,无论如何,“opener”关系本质上是脆弱的,因为您无法阻止用户访问用于打开单独弹出窗口的主浏览器窗口中的“cnn.com”。一旦原始窗口加载了新内容,“子”窗口的“window.opener”引用无论如何都不会对你有任何好处。同样,当用户打开一个新的主浏览器窗口并导航到你的网站时,你的“孤立”窗口将无法真正找到它。

当然,我不能为您提供100%的保证,一切都会好起来的:-)然而,我的故事是真的。也许我对“window.opener”的依赖并不像你计划的那样严重或深刻;我真的不能说我的应用程序中的所有内容都依赖于它的工作。

评论

0赞 Pekka 3/6/2010
干杯@Pointy,这与我对酒店的体验相符。这种连接绝对是一个脆弱的连接,但在我的情况下并不重要 - 我计划为所见即所得的编辑器构建一个占用全屏空间的“媒体管理器”。
1赞 Anil Namde 3/5/2010 #2

我在我的应用程序中使用了window.opener,发现它很好用。它唯一的限制是,如果用户激活了弹出窗口阻止程序,则不会打开新窗口,从而导致有时出现问题。

很好的替代品(如果弹出阻止程序是问题)是使用 yui 面板JQuery UI 也是一个不错的选择。

除此之外,我没有遇到任何问题,而且它在浏览器上运行良好。

评论

1赞 Jeremy 3/5/2010
+1 表示窗口内弹出窗口。一个网站应该保持在它的范围内(用户要求加载它的窗口)只是我个人的意见。
0赞 Pekka 3/6/2010
@Anil @Jer 我通常同意你的观点并使用窗口内弹出窗口,但这是一种特殊情况,外部窗口(或选项卡)是绝对必要的。
0赞 ssokolow 9/12/2013
@Pekka웃 我知道已经三年了,但请记住,有些人(包括我自己)使用扩展程序或浏览器属性,这使得网站完全不可能打开新窗口。(通过强制他们浏览当前选项卡而不是打开新选项卡)browser.link.open_newwindow=1
5赞 Michael Heilemann 11/18/2010 #3

值得注意的是,如果文件不是通过 Chrome 中的 HTTP 连接加载的,则 window.opener 不起作用(尽管它在 Safari 中工作正常)。

评论

1赞 Michael Heilemann 11/19/2010
不,这是我通过使用它发现的那些东西之一。我希望有这样的资源,但这些从浏览器到浏览器的奇怪之处似乎在很大程度上没有记录在案。
1赞 Razi 1/13/2020 #4

2020 年在这里。不,window.opener 不可靠。由于各种原因,它在 IE11 中可能为空:

1) 如果导航到子窗口中的新位置,则 window.opener 会在页面转换时被清除

2) 如果 IE11 配置为保护模式,则 window.opener 未设置为 https://social.msdn.microsoft.com/Forums/ie/en-US/5d9efaa1-78d5-45dc-a04d-d9fde768379f/ie-11-windowopener-in-popup-dialog

3) 如果文件不是通过 Chrome 中的 HTTP 连接加载的(如同级答案中所述)