提问人:Pekka 提问时间:3/5/2010 最后编辑:Pekka 更新时间:1/13/2020 访问量:1599
window.opener 可靠吗?
Is window.opener reliable?
问:
JavaScript 的属性是否可靠地跨浏览器可用,并且不受任何安全设置和任何形式的限制的影响?打开程序和打开的窗口将位于同一域中。window.opener
在某些情况下,是否有人遇到过麻烦,糟糕的体验?
我之所以这么问,是因为我计划构建一个严重依赖它并且应该支持尽可能多的平台的工具。
答:
我现在已经是两个网站的开发人员,这些网站广泛使用window.opener,我不知道它什么时候让我失望。这些应用程序在 IE[678]、Firefox 和 Webkit 上进行了测试;我非正式地使用过 Opera,也没有注意到那里有问题。
现在,无论如何,“opener”关系本质上是脆弱的,因为您无法阻止用户访问用于打开单独弹出窗口的主浏览器窗口中的“cnn.com”。一旦原始窗口加载了新内容,“子”窗口的“window.opener”引用无论如何都不会对你有任何好处。同样,当用户打开一个新的主浏览器窗口并导航到你的网站时,你的“孤立”窗口将无法真正找到它。
当然,我不能为您提供100%的保证,一切都会好起来的:-)然而,我的故事是真的。也许我对“window.opener”的依赖并不像你计划的那样严重或深刻;我真的不能说我的应用程序中的所有内容都依赖于它的工作。
评论
我在我的应用程序中使用了window.opener,发现它很好用。它唯一的限制是,如果用户激活了弹出窗口阻止程序,则不会打开新窗口,从而导致有时出现问题。
很好的替代品(如果弹出阻止程序是问题)是使用 yui 面板,JQuery UI 也是一个不错的选择。
除此之外,我没有遇到任何问题,而且它在浏览器上运行良好。
评论
browser.link.open_newwindow=1
值得注意的是,如果文件不是通过 Chrome 中的 HTTP 连接加载的,则 window.opener 不起作用(尽管它在 Safari 中工作正常)。
评论
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 连接加载的(如同级答案中所述)
评论