Je m'amuse avec l'extension Google Chrome, et je veux juste savoir comment puis-je stocker l'URL de l'onglet actuel dans une variable?
Je m'amuse avec l'extension Google Chrome, et je veux juste savoir comment puis-je stocker l'URL de l'onglet actuel dans une variable?
Utilisez chrome.tabs.query()
comme ceci:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Cela nécessite que vous demandiez l'accès à l' chrome.tabs
API dans votre manifeste d'extension :
"permissions": [ ...
"tabs"
]
Il est important de noter que la définition de votre "onglet actuel" peut différer selon les besoins de votre extension.
La configuration lastFocusedWindow: true
dans la requête est appropriée lorsque vous souhaitez accéder à l'onglet actuel dans la fenêtre ciblée de l'utilisateur (généralement la fenêtre la plus élevée).
Le paramètre currentWindow: true
vous permet d'obtenir l'onglet actuel dans la fenêtre où le code de votre extension est en cours d'exécution. Par exemple, cela peut être utile si votre extension crée une nouvelle fenêtre / popup (changement de focus), mais souhaite toujours accéder aux informations de l'onglet depuis la fenêtre où l'extension a été exécutée.
J'ai choisi d'utiliser lastFocusedWindow: true
dans cet exemple, car Google évoque les cas dans lesquels il se currentWindow
peut que ce ne soit pas toujours présent .
Vous êtes libre d'affiner davantage votre requête d'onglet en utilisant l'une des propriétés définies ici: chrome.tabs.query
Avertissement!
chrome.tabs.getSelected
est obsolète . Veuillez utiliserchrome.tabs.query
comme indiqué dans les autres réponses.Tout d'abord, vous devez définir les autorisations pour l'API dans manifest.json:
Et pour stocker l'URL:
la source
chrome.tabs.getSelected
n'est pas définie, dois-je la poser dans une question séparée?chrome.tabs.getSelected
méthode est obsolète, la méthode correcte est répertoriée dans la réponse ci-dessous .D'autres réponses supposent que vous voulez le savoir à partir d'un script contextuel ou d'arrière-plan.
Si vous souhaitez connaître l'URL actuelle à partir d'un script de contenu , la méthode standard JS s'applique:
Vous pouvez utiliser les propriétés de
window.location
pour accéder à des parties individuelles de l'URL, telles que l'hôte, le protocole ou le chemin.la source
window.location.host
voir si je suis sur "stackoverflow.com" ou non.match:"<all_urls>"
situation sur la section content_script et Chrome n'est pas recommandé <all_urls>.contentScript.js
et non dans lebackground.js
. Transmettez simplement toutes les données que vous avez filtrées de l'URL dans le messagebackground.js
. Exemple:let message = { type: "fetchVideoDate", id: getVideoId() };
oùgetVideoId()
contient une exécution dewindow.location.toString()
. Sinon, vous obtiendrez deschrome://temp_background_file.html
données. Notez également que parfoismessage
est appelérequest
.Le problème est que chrome.tabs.getSelected est asynchrone. Ce code ci-dessous ne fonctionnera généralement pas comme prévu. La valeur de 'tablink' sera toujours indéfinie lorsqu'elle est écrite dans la console car getSelected n'a pas encore appelé le rappel qui réinitialise la valeur:
La solution consiste à encapsuler le code là où vous utiliserez la valeur dans une fonction et à l'invoquer par getSelected. De cette façon, vous êtes assuré d'avoir toujours une valeur définie, car votre code devra attendre que la valeur soit fournie avant d'être exécuté.
Essayez quelque chose comme:
la source
Bonjour, voici un exemple de Google Chrome qui envoie par e-mail le site actuel à un ami. L'idée de base derrière est ce que vous voulez ... tout d'abord, il récupère le contenu de la page (ce qui ne vous intéresse pas) ... ensuite, il obtient l'URL (<- bonne partie)
De plus, c'est un bon exemple de code de travail, que je préfère vivement à la lecture de documents.
Peut être trouvé ici: Envoyer cette page par e-mail
la source
Cette solution est déjà TESTÉE.
définir les autorisations pour l'API dans manifest.json
Lors de la première fonction d'appel de charge. https://developer.chrome.com/extensions/tabs#event-onActivated
Sur la fonction d'appel de changement. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
la fonction pour obtenir l'URL
la source
Pour ceux qui utilisent le
context menu api
, les documents ne sont pas immédiatement clairs sur la façon d'obtenir des informations sur les onglets.https://developer.chrome.com/extensions/contextMenus
la source
Vous devez vérifier cela .
HTML
manifest.json
JavaScript
Le code ci-dessous enregistrera toutes les URL de la fenêtre active dans l'objet JSON lors d'un clic sur le bouton.
la source