弹窗是怎么和打开它的页面通信的

2013-09-28 16:39:02 +08:00
 node
比如像quora上的google登陆,这种弹窗是用window.open打开的吗?在这种跨域的情况下,弹窗又是怎样让打开它的窗口知道登录成功的?
3262 次点击
所在节点    程序员
8 条回复
zhujinliang
2013-09-28 16:50:41 +08:00
window.opener
loveminds
2013-09-28 17:45:50 +08:00
OAuth不是这样的吧
pubby
2013-09-28 17:50:14 +08:00
window.opener

解决跨域的话,一种办法是用到一些iframe,保证域一致就可以
lizheming
2013-09-28 20:30:42 +08:00
这个问你是不是用window.open打开弹窗是没关系的,跳转的地址每次都会带一个redirect_uri参数,最后会将登陆信息发送到这个redirect_uri上去的。
比如你用window.open('http://google.com/?redirect_uri=http://abc.com/callback'), 在google的这个页面认证成功之后google会将相关的个人信息一块发送到http://abc.com/callback去,然后你就获取到用户的信息啦~
node
2013-09-28 22:09:16 +08:00
感谢楼上各位
@lizheming 还想请教一下,是不是说弹窗无论怎么跳转,window.opener都还是指向原来的主窗口?
lizheming
2013-09-28 22:28:24 +08:00
@node 也不是,是不管怎么跳转,都带着一个redirect_uri参数,google那边始终能了解你最终要跳转回哪个地址。
pubby
2013-09-28 22:40:46 +08:00
@node 是的,但是能否访问window.opener里的资源,要看是否跨域而定。
node
2013-09-28 23:30:29 +08:00
@pubby @lizheming
嗯,明白了,多谢指教啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/84041

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX