在我们的 Angulajs Controller 中,我们尝试在同一窗口中打开外部 URL(这是在同一浏览器中打开 URL 的要求,而不是创建弹出窗口),使用以下行:
window.open("www.youraddress.com","_self")
当我们尝试获取父窗口的实例(以访问 Controller 方法)时,我们总是将 window.opener
作为 undefined
。你能告诉我可能是什么原因吗?
如果我们使用 window.location.href="www.youraddress.com"
请让我知道我们在这里缺少什么?
最佳答案
如果您在同一个窗口中打开页面,旧的窗口对象将被销毁。 window.opener
不再有可引用的对象。如果窗口仍然存在,您只能继续引用它。即使可以,您也会被拒绝访问其内容,因为您正在将外部 URL 加载到其中,因此同源策略开始发挥作用。即使不是针对 SOP,该窗口中曾经存在的所有内容(包括它曾经拥有的 JavaScript 环境)也会被破坏。
您打算继续使用的任何代码或数据都需要在您尝试使用 window.opener
的窗口中(或在另一个未被替换的相关窗口中)。
关于javascript - 当在同一个窗口中打开 url 时,window.opener 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560102/