2013-05-13 74 views
0

我需要從用戶將要離開的選項卡中獲取數據(切換到其他選項卡或進入其他程序)。如何替換chrome.tabs.onSelectionChanged棄用的方法?

但chrome.tabs似乎沒有提供一個事件,允許的..

之前有明顯chrome.tabs.onSelectionChanged(未測試),但它的棄用。

與其他事件被賦予新的選項卡不是一個剛剛離開的用戶的數據...

我也嘗試jQuery的$(窗口).blur事件,但我已經做出了一個電話用戶留下的選項卡的chrome.storage(我爲每個選項卡id命名的選項卡創建一個存儲空間),並且我沒有及時獲得該事件的存儲響應(存儲的結果用於if( )知道如果我有或不顯示確認對話框。

有人能幫助我嗎?

THX!

回答

2

要檢測標籤更改,只需使用chrome.tabs.onActivated。由於您對上一個標籤感興趣,因此請將事件結果存儲在每個事件結束時。例如,像這樣:

var storedWindowInfo = {}; 
chrome.tabs.onActivated.addListener(function(activeInfo) { 
    var windowLastTabId = storedWindowInfo[activeInfo.windowId]; 
    if (windowLastTabId) { 
     // Do something with previous tab, e.g. send a message: 
     chrome.tabs.sendMessage(windowLastTabId); 
    } 
    // Update ID of currently active tab in the current window 
    storedWindowInfo[activeInfo.windowId] = activeInfo.tabId; 
}); 

注意:只有tabID和windowID被提供給這個事件。您需要發出chrome.tabs.query以獲取更多信息,例如該選項卡是否存在,其URL等。

+0

它工作得很好!非常感謝Rob! – RomB6 2013-05-13 16:15:32

+0

只是,爲什麼lastTabId存儲在activeInfo.windowId中?這不合乎邏輯嗎?因爲我試圖獲取activeInfo.tabId,但包含新標籤的ID ......如果lastTabId存儲在一個新的屬性中,像activeInfo對象中那樣存儲,它會更清楚嗎?不是? – RomB6 2013-05-13 16:16:34

+0

我創建了一個字典'storedWindowInfo'。每個窗口都有一個「上次活動標籤」。我將此選項卡的ID作爲值存儲在字典中供以後檢索。由於窗口是'windowId'的唯一標識符,因此我使用'windowId'作爲關鍵字。 – 2013-05-13 16:18:19

相關問題