javascript - 如果其 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');
在此流程中,事件侦听器丢失事件并且不运行回调:
- 打开弹出窗口
const authUrl = 'http://someauthservice.com/someurl'
。 - 单击
auth
按钮。 - 重定向到我的网址。
在这个流程中它工作正常:
- 打开弹出窗口
const authUrl = 'http://localhost/callbackurl'
。
所以,如果在弹出窗口中加载了一些 url,那么我的 url 被加载,事件不再被监听,但如果 url 没有改变,事件被监听并触发回调。
url更改时如何保留事件侦听器?
更新:这个想法是我想允许用户在 3rd 方服务上进行身份验证,然后当它使用一些代码重定向到我的 url 时,我知道身份验证成功,因此我希望我的主机应用程序运行一些逻辑,比如更新一些变量从Pending
到Verified
。
解决方案
推荐阅读
- notifications - 插件 nativescript-local-notifications 将通知复制三倍并且没有文本
- python - 您将如何在 except 子句中捕获 python 异常
- android - 具有不同项目高度和 WRAP_CONTENT 的 ViewPager2
- reactjs - 如何在到达路由器上获取参数
- excel - 如何将数组中的日期值传递给集合?
- python - Pandas——将数据聚合成多列
- python - 如何从字符串中去除方括号?
- visual-studio - ssis 2017 在尝试调试脚本任务时抛出异常
- angular - 如何访问订阅内的对象属性以呈现 HTML?
- c++ - 如何在视图上绘制?