【问题标题】:window.opener is useless after a redirect in the popup window (JavaScript)window.opener 在弹出窗口中重定向后无用(JavaScript)
【发布时间】:2012-01-09 05:19:48
【问题描述】:

我正在构建一个涉及通过第三方进行身份验证的应用。为了使该过程不重定向实际应用程序,我打开一个新窗口,然后进行身份验证并在成功后返回主窗口。

但是,这并没有按计划进行。当弹出窗口重定向到第三方并返回时,window.opener 得到null。仍然可以通过window.close() 关闭弹出窗口,但我还需要刷新主窗口中的登录区域,如下所示:

window.opener.check_auth_status();

我真的希望有办法解决这个问题,例如将函数绑定到主窗口中的弹出关闭?刷新整个页面是非常不必要的。

一种方法是set an interval to main window 检查弹出窗口是否已关闭,但这似乎很繁琐。

【问题讨论】:

  • 正是这对我有用。我打开一个弹出窗口到 twitter/facebook,在他们将弹出窗口重定向回来后,我调用 window.opener 进行刷新。也许您的回调是不同的域/端口,因为仅适用于同一页面以这种方式访问​​开启器。

标签: javascript window


【解决方案1】:

由于安全更新,您有一些选项可能会或可能不会在最新版本的浏览器中运行

1) 检查窗户是否从开启器关闭 - 不繁琐,实际上是最安全的

2) 给开瓶器起个名字

window.name="myMainWindow";

在弹出窗口中(来自同一域的脚本)- 通常不应打开新窗口或更改内容

var handle = window.open("","myMainWindow"); 
handle.check_auth_status();

3) 在弹出窗口中使用 iFrame,当您想要访问开启器时,请使用 top.opener

【讨论】:

  • 我希望以兄弟般的方式:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 2019-03-18
  • 2012-01-08
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
相关资源
最近更新 更多