首页 > 解决方案 > 如果其 url 更改,如何收听弹出窗口的“消息”?

问题描述

在 url 上http://localhost:9001/mypage,我有一个带有某些服务的 auth url 的弹出窗口。

const authUrl = 'http://someauthservice.com/someurl'

const authPopup = window.open(authUrl, '');

authPopup.addEventListener('message', (event: any) => {
        console.log(event);
    });

当用户在该 url 上进行身份验证时,弹出窗口会被重定向到我的回调 url http://localhost/callbackurl,它在我这边有一个简单的页面,其中包含发布窗口消息的代码:

window.postMessage('hey ho', 'http://localhost:9001/mypage');

在此流程中,事件侦听器丢失事件并且不运行回调:

  1. 打开弹出窗口const authUrl = 'http://someauthservice.com/someurl'
  2. 单击auth按钮。
  3. 重定向到我的网址。

在这个流程中它工作正常:

  1. 打开弹出窗口const authUrl = 'http://localhost/callbackurl'

所以,如果在弹出窗口中加载了一些 url,那么我的 url 被加载,事件不再被监听,但如果 url 没有改变,事件被监听并触发回调。

url更改时如何保留事件侦听器?

更新:这个想法是我想允许用户在 3rd 方服务上进行身份验证,然后当它使用一些代码重定向到我的 url 时,我知道身份验证成功,因此我希望我的主机应用程序运行一些逻辑,比如更新一些变量从PendingVerified

标签: javascript

解决方案


推荐阅读