comment obtenir le tabId actuel à partir de la page d’arrière-plan? tabId actuel est l’onglet permettant à l’utilisateur de voir son contenu.
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>
getSelected
a été obsolète . La nouvelle façon de le faire est:
chrome.tabs.query(
{currentWindow: true, active : true},
function(tabArray){...}
)
Si vous souhaitez effectuer un rappel sur l'onglet actif, vous pouvez envelopper le message ci-dessus comme suit:
function doInCurrentTab(tabCallback) {
chrome.tabs.query(
{ currentWindow: true, active: true },
function (tabArray) { tabCallback(tabArray[0]); }
);
}
Par exemple
var activeTabId;
doInCurrentTab( function(tab){ activeTabId = tab.id } );
Exécuter ceci dans votre page d'arrière-plan
chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d);})
ou même mieux
chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d[0].id);})
De nombreuses méthodes API interprètent null
comme un onglet en cours. chrome.tabs.sendRequest
est l'un d'entre eux.
Autrement:
chrome.tabs.getSelected(null, function(tab) { ... })
Si vous avez l'autorisation tabs
, la méthode de requête est la suivante: 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);
});
});
}