【发布时间】:2017-07-05 16:10:01
【问题描述】:
我有很多弹出窗口 window.open,用于搜索一个项目,从 window.opener 回调一个 javascript 函数来选择该项目(当用户点击它时)。
这在所有浏览器中都有效,但不适用于 Edge。我发现 window.opener 仅在 Edge 中是“未定义的”。 不管我是在本地还是在我的网络服务器上尝试,我都会遇到同样的问题。 而且它不可能是安全跨域的东西,我的弹出窗口是来自同一个网站的页面。
Edge 有什么我错过的吗?我们使用 window.open 方式的新要求?
例如,如果我有一个输入按钮:
window.open('search.aspx','searching');
和一个 javascript 函数到 head 部分,如:
function SelectItem(ID)
{
// insert magic here
alert('test');
}
search.aspx 中的以下 javascript 代码在 Edge 中不起作用:
window.opener.SelectItem(123);
如果我把它改成
alert(window.opener);
我会看到它是未定义的。
编辑 1: 不,它不是 Window.opener in Microsoft Edge undefined when running at localhost 的副本。在问我的问题之前,我已经阅读了这个问题。我的问题不仅来自本地主机,还来自网络服务器。这不是主机名问题。
编辑 2: 测试它的简单方法,我从 w3schools“自己尝试”示例中遇到同样的问题:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_open3
更新(解决方案):我在 Edge 38.14393(Windows 10 版本 1607)中遇到了这个问题。我刚刚升级到 Win10 版本 1803(Edge 42.17134),现在它可以正常工作了。可能是以前 Edge 版本的错误!
【问题讨论】:
-
这些解决方案有帮助吗? stackoverflow.com/questions/31196295/…
-
没有。在问我的问题之前,我已经阅读了这个问题。我的问题不仅来自本地主机,还来自网络服务器。这不是主机名问题。
-
我已标记该问题以删除“重复”标签。我有同样的错误。我有 prod1.example.com 和 prod2.example.com (指向公共 IP),window.opener 工作,但是在某些可以访问 dev1.example.com (指向本地 IP)的计算机上,window.opener 是在 prod1.example.com 上损坏。我怀疑 Edge 已将 *.example.com 标记为“本地”,因为如果是 dev1.example.com,那么它会破坏 prod1.example.com。
-
我也投票支持重新开放。我无法理解投票结束此类问题的人们的行为。
标签: javascript microsoft-edge window.opener