Firefox无法从Window.postMessage接收数据

时间:2019-06-17 02:48:17

标签: javascript php backend

我有一个PHP后端代码,它将使用社交网络进行身份验证,而前端代码将打开一个新窗口以加载身份验证的HTML文件。来自后端的最终回调窗口会将postMessage()中的对象发送到窗口打开器。此功能适用于Firefox以外的任何浏览器。你们有没有遇到过这个问题并设法解决了?

我已经尝试使用窗口侦听器,但也没有成功。

login: function (url, provider) {
    return new Promise(function (resolve, reject) {
      window.open(url + '/v1/user/login/' + provider, '_new', 'height=500,width=500');
    });
  },

  getLoginResponse: function () {
    return new Promise(function (resolve, reject) {
      window.onmessage = function (e) {
        resolve(e.data);
      };
    });
  }

let data = '{{$data}}';
data = JSON.parse(data.replace(/"/g, '"'));

let opener = window.opener;
opener.postMessage(data, "*");

对于其他浏览器,resolve(e.data)部分有效,但在Firefox上无效。

1 个答案:

答案 0 :(得分:0)

WindowEventHandlers.onmessage是实验性的,Firefox尚未正式支持(至少在v76中不支持),因此window.addEventListener("message", cb)将不起作用。

https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onmessage