Obtenir l'URL actuelle de l'intérieur chromé.contextMenus.onClicked auditeur
Je crée ma première extension Chrome et j'ai besoin d'aide. Moi je pense que tout fonctionne, sauf le fait que je ne peux pas obtenir l'URL de l'onglet.
var menu = chrome.contextMenus.create({
"title": "extension",
"contexts": ["all"]
});
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var siteUrl = tabs[0].url;
});
chrome.contextMenus.onClicked.addListener(function(activeTab)
{
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var siteUrl = tabs[0].url;
});
var finalUrl = "http://example.com/";
finalUrl += encodeURI(siteUrl);
//Open the page up.
chrome.tabs.create(
{
"url" : finalUrl
}
);
});
Quelqu'un peut-il m'aider? Merci.
EDIT:
Merci pour vos réponses. J'ai eu de travail en déplaçant
var finalUrl = "http://example.com/";
finalUrl += encodeURI(siteUrl);
//Open the page up.
chrome.tabs.create(
{
"url" : finalUrl
}
À l'intérieur de
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var siteUrl = tabs[0].url;
});
- Ne
document.location.href
pas de travail? - Pas de, qui permettra de récupérer chrome-extension://bjbdnjemkpaehlbckilllpakbphkkfme/src/bg/background.html
- Double Possible de Pourquoi ma variable inchangée après je le modifie à l'intérieur d'une fonction? - Le code asynchrone de référence
- Le code en question et suivantes modifier par l'OP, il est clair que la question de l'OP de la mise en œuvre a été un duplicata de la Async code réf question liée dans le commentaire ci-dessus. Cependant, la accepté de répondre fournit une solution à la situation qui est suffisamment mieux que je ne ressens pas cette question devrait être fermé comme un doublon. En d'autres termes, cette question est une XY problème. L'OP de la mise en œuvre a la dup problème, mais la meilleure solution est de résoudre la situation réelle, pour ne pas fixer l'OP de la mise en œuvre.
Vous devez vous connecter pour publier un commentaire.
Les informations dont vous avez besoin sont fournis déjà dans le rappel de la
onClicked
port d'écoute.E. g. vous pouvez obtenir ce que vous voulez comme ceci:
manifeste.json:
background.js:
info.pageUrl && info.pageUrl;
devrait êtreinfo.pageUrl;
(de même pourframeUrl
. +1 pour la bonne façon d'aborder le problème!OU si vous êtes dans un contenu de script,
Si vous utilisez le contenu du script que vous pouvez utiliser
document.location
est l'Objet et peut fournir l'ensemble de utile morceaux dans l'URLdocument.location.host
retourne le nom de domaine ex: "http://www.google.com/"document.location.path
retourne la partie après le nom de domainedocument.location.hash
renvoie ce que après le symbole # dans l'urlFonction:
Appel de la fonction:
"activeTab"
autorisation pour la popup cas.