【发布时间】:2011-08-20 22:00:37
【问题描述】:
所以我在我的网站上添加了一个“使用 Twitter 登录”按钮。我在弹出窗口中显示 twitter 登录。当用户登录 twitter 时,他们会被重定向回我网站上的一个页面,该页面调用 window.opener 上的 javascript 函数来通知页面登录已完成并刷新。
问题是在 twitter 将用户重定向回我的站点之后 window.opener 为空。如果我绕过 twitter 登录页面,该脚本可以正常工作。这似乎也是一个 IE 问题,因为它在 Firefox 中运行良好。
有什么想法吗?
提前致谢!
【问题讨论】:
-
window.opener 何时为空。当您重定向弹出窗口或父页面时?如果是后者,这是 IIRC 的正常行为,
opener指向打开的文档而不是窗口。 -
它指向
window对象,但是是的,opener是暂时的,不会在文档加载后幸存下来。在弹出窗口中登录不是一个好主意。 -
是的,要明确的是弹出窗口被重定向并试图调用window.opener。我的要求是使用 twitter 登录并且不引导用户离开我们的页面。 Twitter 阻止在 iFrame 中使用他们的登录信息,因此弹出窗口是我在这里唯一真正的选择。如果重定向后我无法引用 window.opener 那么如何通知父窗口子窗口正在关闭并且登录已完成?
-
如果你真的需要,可以在支持它的浏览器上使用 HTML5
postMessage进行跨窗口通信,或者无法从一个窗口写入document.cookie并在另一个窗口中读取它。但这不是一个好主意。 “不将用户重定向到我们的页面”是一个典型的虚假经理要求。
标签: javascript internet-explorer twitter oauth