web-dev-qa-db-fra.com

Comment récupérer l'URL de l'onglet en cours dans mon extension chrome en utilisant javascript

Je viens tout juste de commencer à développer Google Chrome Extension et mon projet consiste à créer une extension qui, une fois cliquée, imprime l'URL de la page ou de l'onglet qui est actuellement ouvert. 

Donc, si je suis sur la page d'accueil de Google et que je clique sur mon extension, je dois obtenir " https://www.google.com/ " comme sortie dans l'extension.

J'ai besoin de faire cela en utilisant javascript et je suis incapable de trouver le code que je comprends et qui fait le travail. J'ai lu des articles sur l'utilisation de "window.location" et de "document.href", mais cela ne me donne-t-il pas l'URL de mon extension et pas l'onglet actuel? 

S'il vous plaît, aidez-moi à démarrer. Merci d'avance.

23
Darth Coder

Essayer

chrome.tabs.getCurrent(function(tab){
        console.log(tab.url);
    }
);

Notez que vous devez avoir le droit tabs défini dans votre fichier manifeste

"permissions": [
    "tabs"
],

http://developer.chrome.com/extensions/tabs.html

ou l'autorisation activeTab si elle est initiée par un clic sur le bouton d'extension [ Xan ]

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


Si ce qui précède ne fonctionne pas, essayez

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    console.log(tabs[0].url);
});
49
Musa

En utilisant javascript, cela fonctionnera si vous ne l'utilisez pas en popup, car javascript en popup retournera l'URL du popup. Par conséquent, en popup, vous devez utiliser l'API de l'onglet Chrome et définir l'autorisation dans le manifeste Chrome.

chrome.tabs.query({currentWindow: true, active: true}, function(tabs){
    console.log(tabs[0].url);
});

Donc, le meilleur moyen est d'utiliser l'API de l'onglet Chrome

26
saadsaf

Vous devez faire attention à ce que vous entendez par "onglet actuel". Si l'utilisateur a plusieurs fenêtres ouvertes, chacune avec plusieurs onglets, Chrome définit la "fenêtre actuelle" comme celle qui exécute le script de contenu utilisant l'API chrome.tabs. Cela m’est arrivé et j’ai résolu le problème en faisant référence non pas à la fenêtre "courante" mais à la dernière focalisée:

chrome.tabs.query({ active: true, lastFocusedWindow: true }, function (tabs) {
    // Do something
});

Références:

https://developer.chrome.com/extensions/windows#current-windowhttps://developer.chrome.com/extensions/tabs#method-query

J'espère que ça aide!

6
Clint Eastwood

NE PAS utiliser getSelected 

Selon les Documents de développement Chrome : chrome.tabs.getSelecteda été deprecated depuis Chrome ver.33

_ {Au lieu de} _ use: 

chrome.tabs.query({active:true}, __someCallbackFunction__) comme la deuxième suggestion de Musa. 

0
Rich Werden

cela a fonctionné pour moi l'essayer 

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);
 });
0
jayant singh

UPDATE: cette méthode est maintenant obsolète. Ne l'utilisez donc pas

Dans mon cas, tout ce qui précède n'a pas fonctionné. Alors j'ai utilisé ceci:

chrome.tabs.getSelected(null, function(tab) {
    console.log(tab.url)
})

et ça a très bien fonctionné! J'espère que ça aide.

0
Kamil