Подтвердить что ты не робот

Как получить текущий tabId из фоновой страницы

как получить текущий tabId из фоновой страницы? текущая tabId - это вкладка, в которой пользователь может видеть ее содержимое.

background.html

<html>
<head>
    <script>

    if(typeof localStorage.state == 'undefined')
        localStorage.state = 'off'
    chrome.browserAction.onClicked.addListener(function(tab) {
        if(localStorage.state == 'on')
        {
            localStorage.state = 'off';
        }
        else
        {
            localStorage.state = 'on';
        }
        chrome.browserAction.setBadgeText({text: localStorage.state, tabId: tab.id});
        chrome.tabs.sendRequest(tab.id, {state: localStorage.state});
        //chrome.tabs.sendRequest(tab.id, {state: localStorage.state});
    });
    </script>
</head>

4b9b3361

Ответ 1

getSelected был устарел. Новый способ сделать это:

chrome.tabs.query(
  {currentWindow: true, active : true},
  function(tabArray){...}
)

Если вы хотите выполнить обратный вызов на активной вкладке, вы можете обернуть это так:

function doInCurrentTab(tabCallback) {
    chrome.tabs.query(
        { currentWindow: true, active: true },
        function (tabArray) { tabCallback(tabArray[0]); }
    );
}

Например

var activeTabId;
doInCurrentTab( function(tab){ activeTabId = tab.id } );

Ответ 2

Запустите это на своей фоновой странице

chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d);})

или даже лучше

chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d[0].id);})

Ответ 3

Многие методы API интерпретируют null как текущую вкладку. chrome.tabs.sendRequest является одним из них.

В противном случае:

chrome.tabs.getSelected(null, function(tab) { ... })

Ответ 4

chrome.tabs.query

мое расширение chrome с помощью chrome.tabs.query


function onNextTabDetermined (callback) {
    chrome.tabs.query({
        currentWindow: true,
        active: true
    }, function (currentTabs) {
        var nextTabIndex = (currentTabs[0].index + (forward ? 1 : -1));
        if (nextTabIndex === -1) {
            chrome.tabs.query({
                "currentWindow": true
            }, function (allTabs) {
                callback(allTabs[allTabs.length - 1]);
            }); 
        } else {
            chrome.tabs.query({
                "index": nextTabIndex,
                "currentWindow": true
            }, function (nextTabs) {
                if (nextTabs[0]) {
                    callback(nextTabs[0]);
                } else {
                    chrome.tabs.query({"index": 0}, function (nextTabs) {
                        callback(nextTabs[0]);
                    });
                }
            });
        }
    });
};