【问题标题】:postmessage to browser's opener window from callback in Internet Explorer 11.0.x从 Internet Explorer 11.0.x 中的回调向浏览器的打开器窗口发送消息
【发布时间】:2018-07-03 21:23:47
【问题描述】:

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

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

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

错误是Permission Deniedwindow.openerundefined 有什么办法可以解决这个问题并让我的弹出窗口向 Internet Explorer 11.0.x 中的打开器窗口发送消息?

谢谢。

【问题讨论】:

    标签: javascript internet-explorer popup payment-gateway razorpay


    【解决方案1】:

    我没有在 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();

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多