как получить текущий tabId с фоновой страницы - PullRequest
31 голосов
/ 05 сентября 2011

как получить текущий tabId с фоновой страницы?current 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>

Ответы [ 4 ]

45 голосов
/ 21 августа 2012

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 } );
6 голосов
/ 20 августа 2013

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

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 голосов
/ 05 сентября 2011

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

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

chrome.tabs.getSelected(null, function(tab) { ... })
0 голосов
/ 23 апреля 2015

Если у вас есть tabs разрешение пользователя, метод запроса будет таким: chrome.tabs.query


getCurrentWindowActiveTabIndex().then(tabIndex => {
    // do something
});

// asnyc getter, not just a regular 'thunk'
function getCurrentWindowActiveTabIndex () {
    return new Promise((resolve, reject) => {
        chrome.tabs.query({
            currentWindow: true,
            active: true,
        }, (currentWindowActiveTabs = []) => {
            if (!currentWindowActiveTabs.length) reject();
            resolve(currentWindowActiveTabs[0].index);
        });
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...