2014-07-06 64 views
1

我已閱讀了一堆帖子,但他們似乎都沒有回答我確切的問題。檢測新的選項卡從父母關閉(開瓶器)

是否有可能檢測到由target="_blank"屬性打開的選項卡關閉?

我需要一個新的選項卡/窗口來打開,用戶將選擇一個選項,然後選項卡關閉。

當該選項卡關閉時,我需要原始窗口(父或開啓者)來刷新。

任何想法?

編輯:

進一步的解釋

我有打開的iframe中其他應用程序的應用程序。 iframe中的應用程序開放連接到社交媒體以發佈共享。打開的新選項卡用於認證/ oauth舞蹈。在主窗口中打開的頁面顯示已連接的帳戶,並允許您連接新帳戶(在iframe的主窗口中)。身份驗證/ oauth會打開一個新的窗口/選項卡來執行跳舞,然後關閉它自己。我需要父窗口(帶有iframe的主窗口)知道新標籤頁/窗口關閉,以便刷新內容並反映新連接。

FINAL NOTE 我使用了許多認證方法,所以真的是無關緊要的。

我只需要找到一種方法來監視已打開的新標籤頁/窗口,或者甚至讓新窗口/標籤頁觸發瀏覽器事件onunload,以便父窗口/主窗口知道它關閉以便刷新。

回答

2

所以如果任何人有興趣,這是我現在的工作,直到我找到一個更好的解決方案。

首先,我所做的是讓javascript通過將它分配給一個變量來打開我的窗口,以便它有一個引用名稱。

var checkWindow = false; 
var fbAuthWindow; 

function openFBAuth(url) { 
    fbAuthWindow=window.open(url); 
    checkWindow = true; 
    setTimeout(function() { checkAuthWindow('fb'); }, 1000); 
} 

這也設置超時運行每秒,而checkWindow == true檢查是否關閉該窗口。 如果窗口關閉(我的腳本在身份驗證完成後關閉窗口),那麼頁面重新加載最終會重新設置爲checkWindow回到false。

function checkAuthWindow(win){ 
    if(checkWindow == true){ 
     if(win == 'fb'){ 
      if(fbAuthWindow.closed){ 
       window.location.reload(); 
      } else { 
       setTimeout(function() { checkAuthWindow('fb'); }, 1000);  
      } 
     }  
    } 
} 

它是不是最漂亮的,任何方式最佳實踐有檢查窗口每秒,但現在它的工作,直到我找到一個更好的解決方案。

+1

其工作的罰款結帳這裏的演示http://jsfiddle.net/sureshpattu/w8x7dqxr/ –

+0

'checkWindow'和'贏'的目的是什麼?沒有它們,它不會起作用嗎? – yohosuff

相關問題