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