Je m'amuse avec l'extension Google Chrome, et je veux juste savoir comment puis-je stocker l'URL de l'onglet en cours dans une variable?Comment puis-je obtenir l'URL de l'onglet en cours à partir d'une extension Google Chrome?
Répondre
Un ami répond à ma question.
D'abord, vous avez à définir les autorisations pour l'API onglet:
"permissions": [
"tabs"
]
Et pour stocker l'URL:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
Salut est ici un échantillon Google Chrome les e-mails du Site en cours à 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 (pas interessant pour vous) ... après il obtient l'URL (< - bonne partie)
De plus, il est un bel exemple de code de travail, que je préfère timidement à la lecture de documents.
se trouvent ici: Email this page
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 elle être undefined encore lorsqu'il est écrit à la console car getSelected n'a pas encore invoqué le rappel qui remet à zéro la valeur:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
La solution consiste à envelopper le code où vous utiliserez la valeur dans une fonction et avoir celle invoquée par getSelected. De cette façon, vous avez toujours une valeur définie, car votre code devra attendre que la valeur soit fournie avant d'être exécutée.
Essayez quelque chose comme:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
Merci pour le code, cela a fonctionné pour moi, "tabs" doit être ajouté aux autorisations dans le fichier manifest.json "permissions": [ "tabs" ] –
Aussi cela fonctionne comme un charme: [Obtenir la fenêtre actuelle sur un popup (extension Google Chrome)] (http://stackoverflow.com/questions/3030738/getting-current-window-on-a-popup-google-chrome-extension) – chemark
Et, comment obtenir liens de tous les onglets ouverts – Enve
Mise à jour: La méthode chrome.tabs.getSelected()
est maintenant dépréciée.
La méthode recommandée pour obtenir l'URL de l'onglet en cours consiste à utiliser chrome.tabs.query()
.
Un exemple d'utilisation:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
});
Cela exige que vous demandez l'accès à l'API chrome.tabs
dans votre extension manifest:
"permissions": [ ...
"tabs"
]
Il est important de noter que la définition de votre "onglet en cours" peut différer en fonction des besoins de votre extension.
Le paramètre lastFocusedWindow: true
dans la requête est approprié lorsque vous souhaitez accéder à l'onglet en cours dans la fenêtre de l'utilisateur (généralement la fenêtre la plus haute).
Le réglage currentWindow: true
vous permet d'obtenir l'onglet actuel dans la fenêtre où le code de votre poste 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 veut quand même 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 appelle les cas dans lesquels currentWindow
may not always be present.
Vous êtes libre d'affiner votre onglet requête en utilisant l'une des propriétés définies ici: chrome.tabs.query
Pourquoi l'URL est-elle toujours indéfinie? – nnm
Si l'url n'est pas définie, essayez de recharger votre extension à partir de chrome: // extensions Cela rechargera la configuration de l'extension et appliquera l'autorisation "onglets" nouvellement ajoutée. – flashbackzoo
url est indéfini parce que http://stackoverflow.com/questions/28786723/why-doesnt-chrome-tabs-query-return-the-tabs-url-when-called-using-requirejs (réponse: fermez la fenêtre de vos outils de développement ou changez en currentWindow au lieu de lastFocusedWindow) – kspearrin
Pour ceux qui utilisent le context menu api
, les documents ne sont pas immédiatement claires sur la façon d'obtenir des informations de l'onglet.
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
Vous devez vérifier this.
HTML
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
JavaScript
Le code ci-dessous enregistrera toutes les urls de fenêtre active en objet JSON dans le cadre du bouton Cliquez sur.
var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
myArray = [];
chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition});
function (array_of_Tabs) { //Tab tab
arrayLength = array_of_Tabs.length;
//alert(arrayLength);
for (var i = 0; i < arrayLength; i++) {
myArray.push(array_of_Tabs[i].url);
}
obj = JSON.parse(JSON.stringify(myArray));
});
}, false);
Mon extension chromatique pour l'enregistrement des URL sur les fenêtres actives est https://chrome.google.com/webstore/detail/tabstore-plugin/jngplpdonggccbjlmbphlbancacmpmpp –
D'autres réponses supposent que vous voulez le connaître à partir d'un script contextuel ou d'arrière-plan.
Si vous voulez connaître l'URL actuelle à partir d'un script de contenu, la manière standard JS applique:
window.location.toString()
Vous pouvez utiliser les propriétés de window.location
pour accéder à des parties individuelles de l'URL, comme hôte , protocole ou chemin.
thumb up, la solution la plus simple. – dalvarezmartinez1
Bonne réponse. Tout ce que je voulais, c'était 'window.location.host' pour voir si je suis sur" stackoverflow.com "ou non. – Salyangoz
La deuxième partie du code est pour le cas d'un fichier popup – Axiol
La raison pour laquelle c'est juste pour le popup (action de la page, action du navigateur) est parce que vous envoyez un "null" dans le premier paramètre. http://code.google.com/chrome/extensions/tabs.html#method-getSelected L'état docs le premier paramètre est le windowId, si vous voulez l'utiliser dans les options, ou la page d'arrière-plan, vous auriez besoin pour mettre dans l'id de la fenêtre ou vous obtiendrez l'onglet actuel votre vision qui est indéfini, les options respectivement. –
oui cela fonctionne, mais je ne sais pas pourquoi la méthode chrome.tabs.getSelected est introuvable dans le document de référence. – swimmingfisher