【问题标题】:window.opener is undefined in Microsoft Edgewindow.opener 在 Microsoft Edge 中未定义
【发布时间】: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。
  • 我也投票支持重新开放。我无法理解投票结束此类问题的人们的行为。
  • 不支持。见:caniuse.com/#feat=rel-noopener

标签: javascript microsoft-edge window.opener


【解决方案1】:

而不是使用window.opener 来获取对父窗口函数的引用。您可以像这样为新打开的寡妇分配一个功能:

function SelectItem(ID)
{
    // insert magic here
    alert('test');
}

var popup = window.open('search.aspx','searching');

if(popup) {
    popup.SelectItem = SelectItem;
}

现在您可以在弹出窗口中调用SelectItem

【讨论】:

  • 我认为你有一个好主意,但遗憾的是它也不起作用。我在你的“if”之前放了一个alert(popup);,在 IE11 中,正如预期的那样,我得到了“[object Window]”,但在 Edge 中,我得到了“null”。
猜你喜欢
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 2018-01-17
  • 2016-06-04
相关资源
最近更新 更多