首页 > 解决方案 > 重定向后弹出窗口上的Javascript事件监听器

问题描述

我有以下代码,它创建一个弹出窗口并向来自该窗口的消息添加一个事件侦听器:

let popupWindow = parent.window.open('/popup/' + encodeURIComponent(url), "popupwindow", "width=800, height=1000");
if (popupWindow.addEventListener) {
  popupWindow.addEventListener('message', (result) => {
    console.log(result);
    if(result.data.success){
      this.orderCreated.emit(data);
      this.ShowOrderCreated();
      popupWindow.close();
    }
    if(result.data.success == false){
      popupWindow.close();
    }
  });
}

这有效,因为我在进入该窗口时执行以下操作:

window.parent.postMessage({windowparent: true}, '*');

然后由初始窗口的控制台接收。然而,在某些时候,弹出窗口会改变它的hrefwindow.location.href

弹出窗口重定向到的 url 仍然在同一个域中。但是,当尝试从新位置触发 postMessage 时,它​​不再被创建弹出窗口的窗口拾取。

有没有办法解决这个问题?

标签: javascript

解决方案


推荐阅读