Как получить текущий 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>
Ответы
Ответ 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]);
});
}
});
}
});
};