在我们的Angulajs控制器中,我们尝试在同一窗口中打开一个外部URL(这是在同一浏览器中打开URL而不是创建弹出窗口的要求),使用下面的行:
window.open("www.youraddress.com","_self")
当我们尝试获取父窗口的实例(访问控制器方法)时,我们始终将window.opener
作为undefined
。你能告诉我可能是什么原因吗?
如果我们使用window.location.href="www.youraddress.com"
请告诉我们这里缺少什么?
答案 0 :(得分:3)
如果在同一窗口中打开页面,旧窗口对象将被销毁。 window.opener
不再有引用的对象。如果窗口仍然存在,您只能继续引用它。即使可以,您也会被拒绝访问其内容,因为您正在将外部URL加载到其中,因此同源策略开始起作用。即使它不是SOP,过去在该窗口中的所有内容(包括它曾经拥有的JavaScript环境)都会被破坏。
您打算继续使用的任何代码或数据都需要位于您尝试使用window.opener
的窗口中(或者在未被替换的其他相关窗口中)。< / p>