Question

Je vais avoir du plaisir avec l'extension Google Chrome, et je veux juste savoir comment puis-je stocker l'URL de l'onglet en cours dans une variable?

Était-ce utile?

La solution

Mise à jour: méthode chrome.tabs.getSelected() est maintenant dépréciée.

La méthode recommandée d'obtenir l'URL de l'onglet en cours est d'utiliser chrome.tabs.query().

Un exemple d'utilisation:

chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    var url = tabs[0].url;
});

Il faut pour cela que vous demandez l'accès à l'API chrome.tabs dans votre l'extension manifeste :

"permissions": [ ...
   "tabs"
]

Il est important de noter que la définition de votre « onglet en cours » peut varier en fonction des besoins de votre extension.

Réglage lastFocusedWindow: true dans la requête est appropriée lorsque vous souhaitez accéder à l'onglet en cours dans la fenêtre ciblée de l'utilisateur (généralement la fenêtre supérieure).

Réglage currentWindow: true vous permet d'obtenir l'onglet en cours dans la fenêtre où est en cours d'exécution du code de votre extension. Par exemple, cela pourrait être utile si votre extension crée une nouvelle fenêtre / pop-up (focus changement), mais veut toujours accéder aux informations de l'onglet de la fenêtre où l'extension a été exécutée.

J'ai choisi d'utiliser lastFocusedWindow: true dans cet exemple, parce que Google appelle les cas où currentWindow peut pas toujours présent .

Vous êtes libre d'affiner votre onglet requête en utilisant l'une des propriétés définies ici: chrome .tabs.query

Autres conseils

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;
});

D'autres réponses supposent que vous voulez savoir à partir d'un script pop-up ou arrière-plan.

Si vous voulez connaître l'URL actuelle à partir d'un script de contenu , la méthode 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, le protocole ou le chemin.

Le problème est que chrome.tabs.getSelected est asynchrone. Ce code ci-dessous généralement fonctionne pas comme prévu. La valeur de « tablink » sera encore indéfini quand 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 qui ont invoqué par getSelected. De cette façon, vous êtes assuré d'avoir toujours un ensemble de valeurs, parce que votre code devra attendre la valeur à être fournie avant qu'elle ne soit 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);
}

Salut voici un échantillon Google Chrome qui l'e-mails du site actuel à un ami. L'idée de base est derrière ce que vous voulez ... tout d'abord, il va chercher le contenu de la page (non interessting pour vous) ... après, il obtient l'URL (<- bonne partie)

En outre, il est un bel exemple de code de travail, que je préfère motstly sur les documents de lecture.

Peut être trouvé ici: Envoyer cette page

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);
  });

https://developer.chrome.com/extensions/contextMenus

Vous devez vérifier cette .

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 cliquage.

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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top