在同一窗口中打开url时,window.opener未定义

时间:2016-02-22 17:31:11

标签: javascript html angularjs javascript-objects

在我们的Angulajs控制器中,我们尝试在同一窗口中打开一个外部URL(这是在同一浏览器中打开URL而不是创建弹出窗口的要求),使用下面的行:

window.open("www.youraddress.com","_self")

当我们尝试获取父窗口的实例(访问控制器方法)时,我们始终将window.opener作为undefined。你能告诉我可能是什么原因吗?

如果我们使用window.location.href="www.youraddress.com"

,则可以看到相同的行为

请告诉我们这里缺少什么?

1 个答案:

答案 0 :(得分:3)

如果在同一窗口中打开页面,旧窗口对象将被销毁。 window.opener不再有引用的对象。如果窗口仍然存在,您只能继续引用它。即使可以,您也会被拒绝访问其内容,因为您正在将外部URL加载到其中,因此同源策略开始起作用。即使它不是SOP,过去在该窗口中的所有内容(包括它曾经拥有的JavaScript环境)都会被破坏。

您打算继续使用的任何代码或数据都需要位于您尝试使用window.opener的窗口中(或者在未被替换的其他相关窗口中)。< / p>