微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法让新窗口与产生它的窗口进行通信?

如何解决有没有办法让新窗口与产生它的窗口进行通信?

我有一个应用程序要求用户使用 Reddit 登录。当他们接受时,它会打开一个新窗口(称为 SpawnedWindow),Reddit 询问他们是否要连接,当他们这样做时,SpawnedWindow 会重定向到我服务器上的 GET 端点,并提供成功/失败信息。我的服务器将进行一些计算以确定身份验证是否真的成功,如果成功,它将向 SpawnedWindow 发送一个“ok”(作为对 GET 请求的响应)。

我希望原始页面能够检测到这个“正常”并继续进行用户注册。我如何在新窗口和原始窗口之间进行通信?

如果您熟悉“使用 Google 登录”按钮:正如我们所知,有一个弹出窗口,根据身份验证的结果,主页将具有动态行为(基于登录成功与否)。这基本上就是我想要实现的目标。

解决方法

API(以及许多具有类似授权过程的 API)提供了一个 redirect_uri,用户将在授权成功后重定向到该 redirect_url。您可以传递一个 Select E,CASE WHEN QUALIFER = '1' THEN 'NAME1' WHEN QUALIFER = '2' then 'NAME2' ELSE 'FINALNAME' END AS TYPE,count(rt.ID) 'Number ' from TABLE_ONE co (nolock) join TABLE_TWO rt (nolock) on co.ID = rt.ID where co.E in (select * from #tempEmail) AND convert(date,co.INSERTED_TIMESTAMP)between '1/1/2020' and '8/15/2020' AND TRANS_STATUS = 'APPROVED' group by E,QUALIFER order by E,QUALIFER 查询参数,该参数会转到您网站上的某个页面。这样,一旦授权成功,新打开的页面(在您的网站上,Google 已将弹出窗口重定向到该页面)可以与原始页面(在您的网站上)通信。

一种方法是使用 BroadcastChannel - 在原始页面上打开一个频道,然后等待消息。在新页面打开同一个频道发送消息,旧页面可以收听消息。

另一种选择是使用本地存储。在原始页面上,侦听 storage change 事件。在新页面上,更改存储以触发事件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?