如何替换chrome.tabs.onSelectionChanged弃用方法?

时间:2013-05-13 15:20:34

标签: google-chrome google-chrome-extension

我需要从用户离开的标签中获取数据(切换其他标签或继续使用其他程序)。

但是chrome.tabs似乎没有提供允许这样做的事件..

之前显然有chrome.tabs.onSelectionChanged(未经测试),但已被弃用。

其他事件正在提供新标签的数据,而不是用户刚刚离开的标签......

我也尝试了jQuery $(window).blur事件,但是我必须调用用户留下的标签的chrome.storage(我为标签id命名的每个标签创建一个存储)并且我没有得到这个事件的存储响应(存储的结果用在if()中,知道我是否有显示确认框。

有人可以帮助我吗?

Thx!

1 个答案:

答案 0 :(得分: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以获取更多信息,例如标签是否仍然存在,其网址等。