2012-10-12 36 views
0

我在頁面顯示彈出窗口。彈出窗口有一個頁面,然後重定向到另一個頁面(LinkedIn授權頁面,清除),然後在成功登錄後,再次打開初始授權頁面。 我想在彈出窗口關閉時重新加載父頁面,但不能這樣做。 的代碼如下:彈出窗口重新導入時執行功能關閉

function OpenAuthorizePopUp() { 
    var w = window.open("AuthorizePage.aspx", "PopUp", "width=450,height=540"); 
    w.onunload = function() { 
     SubmitPage(); 
    }; 

    return false; 
} 
function SubmitPage() { 
    alert("SUBMIT!"); 
} 

這裏的問題是,當窗口被關閉SubmitPage()函數被調用不大,但是顯示的彈出窗口之後。我想這是因爲在彈出窗口中重定向,並且當我們從第一頁移動時會引發卸載。

有沒有辦法在這種情況下捕捉窗口關閉的實際時刻?

回答

0

找到解決方案。而不是訪問父窗口與window.parent,寫道

opener.location.reload(true); 

它的工作。

0

所以在彈出的流程是這樣的:

1. Your page -> 2. LinkedIn Page -> 3. Your Page

可以更改LinkedIn送你回(3)的網址是什麼?如果是這樣,請讓LinkedIn回到其上有window.onunload = window.parent.SubmitPage;的頁面。

如果你不能,也就是說,LinkedIn總是會把你送回第一頁 - 讓第三頁測試成功連接到LinkedIn,如果它存在,執行window.onunload = window.parent.SubmitPage;

對於您的想法可能有所改進,只需要「成功」頁面調用window.parent.SubmitPage();,然後window.close();,因爲您不再需要彈出窗口。

+0

正如我在調試器中看到的,在popup從LinkedIn頁面重定向到我的驗證頁面之後,window.parent.name變成了「PopUp」。所以它看起來像是在重定向window.parent改變之後。當我調用window.parent.SubmitPage()時,我得到TypeError。 – MyUserName

+0

也許嘗試'window.parent.parent'?如果你陷入困境,找到另一個使用LinkedIn登錄的網站,看看他們如何管理它。 – evan

+0

試過這個,以及window.parent.parent.parent :)。仍然不起作用,只是返回彈出式窗口。 – MyUserName