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.
InformationsquelleAutor xKripz | 2014-01-12