1

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

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

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

错误是Permission Denied并且window.opener是否undefined 有任何方法可以解决此问题并让我的弹出窗口将消息发送到 Internet Explorer 11.0.x 中的打开器窗口?

谢谢。

4

1 回答 1

0

我没有在 Internet Explorer 上尝试过,但如果它适合你,请告诉我。

创建一个空对象以将数据保存在窗口对象上。

例如。

window._myData = {};

在窗口对象上创建一个函数。该函数是您想要做的事情,设置数据并在新窗口关闭时被调用。

例如。

window._popupClosing = function(data){ this._myData = data; console.log('done....', this._myData); };

打开你的弹出窗口。

例如。

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

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

例如。

var timer = setInterval(function(){ if(w.closed){ clearInterval(timer); window.parent._popupClosing(window.location.href); } }, 1000);

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

window.close();

结合这些

window._myData = {}; window._popupClosing = function(data){ this._myData = data; console.log('done....', this._myData); }; var w = window.open('https://google.com','_blank'); var timer = setInterval(function(){ if(w.closed){ clearInterval(timer); window.parent._popupClosing(window.location.href); } }, 1000);

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

如果您可以将数据发布到端点,然后在弹出关闭函数中从端点检索数据,那将比在窗口之间发送数据更好。我认为。

于 2018-01-25T17:42:43.477 回答