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

标签 javascript html angularjs javascript-objects

在我们的 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/

相关文章:

javascript - 启用 使用 Jquery 禁用某些组件

javascript - 如何使选择框动态化

javascript - Angular 变量未更新,尝试调用 $apply 会导致 "digest already in progress"错误

javascript - UI Bootstrap datepicker 日历不在文本框中显示日期

javascript - 将 NodeList 转换为数组

javascript - UseEffect 被多次调用

javascript - 未硬编码到 HTML 中的 Python Web 抓取数据

javascript - 自动调整文本区域大小

html - Chrome 中不需要的灰色背景

javascript - ngShow 上的 ngAnimate 不起作用