gpt4 book ai didi

javascript - window.opener 在 Microsoft Edge 中未定义

转载 作者:行者123 更新时间:2023-12-01 06:01:24 26 4
gpt4 key购买 nike

我有很多弹出窗口 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 版本中的错误!

最佳答案

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

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

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

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

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

关于javascript - window.opener 在 Microsoft Edge 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44931233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com