我有很多弹出窗口(window.open),用于搜索项目,并从 window.opener 调用 JavaScript 函数以选择该项目(当用户单击它时)。
在所有浏览器中,这一直有效,但是在 Edge 中却不行。我发现只有在 Edge 中 window.opener 是“未定义”的。 无论是本地尝试还是在我的 Web 服务器上,我都遇到了同样的问题。 而且这不可能是跨域安全性问题,因为我的弹出窗口是来自同一个网站的页面。
我是否忽略了 Edge 的某些内容?我们使用 window.open 的方式是否有新要求?
例如,如果我有一个输入按钮执行以下操作:
将以下 JavaScript 函数添加到 head 部分中:
以下来自search.aspx的javascript代码在Edge浏览器上无法使用:
我将看到它是未定义的。
编辑1: 不,这不是Window.opener在本地主机上运行时在Microsoft Edge中未定义的重复。我在提问之前已经阅读了这个问题。我的问题不仅来自本地主机,而且来自Web服务器。这不是主机名的问题。
编辑2: 测试的简单方法是,我从w3schools的“Try it yourself”示例获得了相同的问题:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_open3 更新(解决方案):我在Edge 38.14393(Windows 10版本1607)中遇到了这个问题。我刚刚升级到Win10版本1803(Edge 42.17134),现在一切都按预期正常工作了。可能是以前的Edge版本中出现了错误!
在所有浏览器中,这一直有效,但是在 Edge 中却不行。我发现只有在 Edge 中 window.opener 是“未定义”的。 无论是本地尝试还是在我的 Web 服务器上,我都遇到了同样的问题。 而且这不可能是跨域安全性问题,因为我的弹出窗口是来自同一个网站的页面。
我是否忽略了 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在本地主机上运行时在Microsoft Edge中未定义的重复。我在提问之前已经阅读了这个问题。我的问题不仅来自本地主机,而且来自Web服务器。这不是主机名的问题。
编辑2: 测试的简单方法是,我从w3schools的“Try it yourself”示例获得了相同的问题:https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_open3 更新(解决方案):我在Edge 38.14393(Windows 10版本1607)中遇到了这个问题。我刚刚升级到Win10版本1803(Edge 42.17134),现在一切都按预期正常工作了。可能是以前的Edge版本中出现了错误!