第三方的登录的解决方案通常有两种方式,一是打开一个新的标签页,然后登录回调回来; 二是通过父窗口打开一个子窗体去第三方登录,登陆成功时关掉子窗体回到父窗口。
问题来了
我的父窗体怎么样才知道子窗体被关闭了呢?
查了下 w3c 里面的文档,貌似并没有类似 onWindowClose 这样的回调函数。
解决方案
将打开的这个窗口对象赋值给一个 jQuery 对象,在主窗体里轮询判断该对象的状态
1.打开第三方登录窗口
$windowObj = window.open("https://graph.qq.com/oauth/show?which=Login&client_id=1000001&redirect_uri=http://127.0.0.1:3000/login/qq_after_login", "q",'width=800,height=500');
2.在子窗体中登录成功时执行关闭自己的方法
self.close();
3.然后在主窗体里面轮询执行
$windowObj = null;
var loop = setInterval(function() {
if($windowObj != null && $windowObj.closed) {
clearInterval(loop);
//do something 在这里执行回调
}
}, 800);
注:转自尾巴很大的小平的博客http://blog.csdn.net/xiaoping0915/article/details/76165263