監聽 window.open 打開的窗口關閉並回調


 

第三方的登錄的解決方案通常有兩種方式,一是打開一個新的標簽頁,然后登錄回調回來; 二是通過父窗口打開一個子窗體去第三方登錄,登陸成功時關掉子窗體回到父窗口。

這里寫圖片描述

問題來了

我的父窗體怎么樣才知道子窗體被關閉了呢? 
查了下 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM