Je sais qu'il y a beaucoup de questions similaires sur SO, mais je n'arrive pas à le faire fonctionner.
J'essaie d'obtenir l'URL de l'onglet en cours à partir de mon extension Chrome. Cependant, l'alerte (tab.url) renvoie "Non défini". J'ai ajouté les "onglets" à mes autorisations dans le fichier manifest.json. Des idées?
<html>
<head>
<script>
chrome.tabs.getSelected(null, function(tab) {
tab = tab.id;
tabUrl = tab.url;
alert(tab.url);
});
</script>
</head>
Le problème est dans cette ligne:
tab = tab.id;
Cela devrait être quelque chose comme:
var tabId = tab.id;
Juste une info pour les gens de Google:
La méthode utilisée par OP est obsolète. Pour obtenir l'onglet que l'utilisateur visualise et uniquement dans la fenêtre qu'il visualise, utilisez ceci:
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
// since only one tab should be active and in the current window at once
// the return variable should only have one entry
var activeTab = tabs[0];
var activeTabId = activeTab.id; // or do whatever you need
});
C'est ce qui a fonctionné pour moi:
chrome.tabs.query({
active: true,
lastFocusedWindow: true
}, function(tabs) {
// and use that tab to fill in out title and url
var tab = tabs[0];
console.log(tab.url);
alert(tab.url);
});
Avec un peu d'aide de ES6, vous pouvez facilement écrire du code plus agréable :)
chrome.tabs.query({
active: true,
currentWindow: true
}, ([currentTab]) => {
console.log(currentTab.id);
});
manifest.json =>
"autorisations": [ "onglets" ]
en js =>
chrome.tabs.query({
active: true,
lastFocusedWindow: true
}, function(tabs) {
// and use that tab to fill in out title and url
var tab = tabs[0];
console.log(tab.url);
alert(tab.url);
});