RomB6
RomB6

Reputation: 48

How to replace chrome.tabs.onSelectionChanged deprecated method?

I need to get data from the tab the user is leaving (switching on other tab or going on other program).

But chrome.tabs seems not providing an event allowing that..

Before there was apparently chrome.tabs.onSelectionChanged (not tested) but it's deprecated.

And other event are giving the data of the new tab not the one the user just left...

I try also jQuery $(window).blur event, but i have to make a call to the chrome.storage of the tab left by the user (i create a storage for each tab named by the tab id) and i did not get the response of storage in time with this event (the result of the storage is used in a if() to know if i have or not to display an confirm box.

Someone could help me ?

Thx !

Upvotes: 0

Views: 619

Answers (1)

Rob W
Rob W

Reputation: 348972

To detect a tab change, just use chrome.tabs.onActivated. Since you're interested in the previous tab, store the result of the event at the end of each event. For instance, like this:

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;
});

Note: Only the tabID and windowID are provided to this event. You need to issue chrome.tabs.query to get more information, such as whether the tab still exists, its URL, etc.

Upvotes: 2

Related Questions