JavaScript的window.opener
属性在各种浏览器中可靠吗?它是否免疫任何安全设置和限制?打开的窗口和原窗口都在同一个域下。
有人在某些情况下遇到过问题或不良经验吗?
我提出这个问题是因为我正在计划构建一个大量依赖该属性并应支持尽可能多平台的工具。
JavaScript的window.opener
属性在各种浏览器中可靠吗?它是否免疫任何安全设置和限制?打开的窗口和原窗口都在同一个域下。
有人在某些情况下遇到过问题或不良经验吗?
我提出这个问题是因为我正在计划构建一个大量依赖该属性并应支持尽可能多平台的工具。
我曾是两个网站的开发人员,这两个网站广泛使用window.opener,但我不知道任何时候它会失败。这些应用程序在IE[678]、Firefox和Webkit上进行了测试;我曾非正式地使用Opera,但也没有注意到问题。
现在,"opener"关系本质上是脆弱的,因为你无法防止用户在用于打开单独弹出窗口的主浏览器窗口中访问"cnn.com"等网站。一旦原始窗口加载了新内容,"子"窗口的"window.opener"引用也就无效了。同样,当用户打开一个新的主浏览器窗口并导航到您的站点时,您的"孤立"窗口也无法真正找到它。
当然,我不能向您提供100%的保证一切都会没问题 :-) 我的故事是真实的。也许我的依赖"window.opener"没有你计划的那么严重或深入;我无法说我的应用程序中的所有内容都依赖于它的工作。
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连接加载(如同级答案中所述)。
browser.link.open_newwindow=1
,这使得网站完全无法打开新窗口。(通过强制它们在当前标签页中导航而不是打开新标签页) - ssokolow