gpt4 book ai didi

javascript - 从 Internet Explorer 11.0.x 中的回调向浏览器的 opener 窗口发送消息

转载 作者:行者123 更新时间:2023-11-28 03:46:33 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序中编写一个回调,该回调打开一个弹出窗口,执行一些操作并响应弹出打开窗口以将操作标记为完成。

弹出窗口使用 window.opener.postmessage() 方法与浏览器中的开启窗口进行通信。

它适用于大多数浏览器。但是,Internet Explorer 11.0.x 无法发送消息,而 11.192.x 可以。我没有用 IE 检查过,9/10。

错误是权限被拒绝并且window.opener未定义有什么方法可以解决此问题并使我的弹出窗口将消息发送到 Internet Explorer 11.0.x 中的开启器窗口吗?

谢谢。

最佳答案

I haven't tried this on Internet Explorer, but let me know if it works for you.

创建一个空对象来保存窗口对象上的数据。

例如。

window._myData = {};

在窗口对象上创建一个函数。该函数执行您想要执行的操作,设置数据并在新窗口关闭时调用。

例如。


window._popupClosing = 函数(数据){
this._myData = 数据;
console.log('完成....', this._myData);
};

打开弹出窗口。

例如。

var w = window.open('https://google.com','_blank');

设置一个计时器来检查窗口是否已关闭。然后运行您的函数。

例如。


var 计时器 = setInterval(function(){
如果(w.关闭){
清除间隔(计时器);
window.parent._popupClosing(window.location.href);
}
}, 1000);

请记住使用弹出窗口中的脚本关闭新弹出窗口

window.close();

结合这些


窗口._myData = {};
window._popupClosing = 函数(数据){
this._myData = 数据;
console.log('完成....', this._myData);
};
var w = window.open('https://google.com','_blank');
var 计时器 = setInterval(function(){
如果(w.关闭){
清除间隔(计时器);
window.parent._popupClosing(window.location.href);
}
}, 1000);

完成后请记住关闭新的弹出窗口。 window.close();

If you can post your data to an endpoint then retrieve the data from the endpoint in your popup close function, that will be better than sending data between windows. I think.

关于javascript - 从 Internet Explorer 11.0.x 中的回调向浏览器的 opener 窗口发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48429141/

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