Chrome扩展程序 - 将URL从popup.js传递到Firebase

时间:2016-05-16 18:32:25

标签: javascript google-chrome-extension firebase

我正在使用chrome.tabs.query来获取当前活动的网址,然后我想将它传递给我在firebase中的后端。在以下代码中:

function geturl() {
  chrome.tabs.query({currentWindow: true, active: true}, function (tabs){
  var tabURL = tabs[0].url;
     document.getElementById("demo").innerHTML = tabURL; //The line I changed to pass the URL to html.
   });

  fbase.set({
    title: tabURL,      // If I set this to title: "test", it works
  });

}

现在当我触发它时,没有任何反应,所以我检查并填写测试,这确实有效。这让我觉得Chrome不希望我这样做。我可以将该网址传递给我的popup.html,该网址确实显示了该网址,但无法将其从popup.js发送出去。是否有解决方法,或者我是否需要使用popup.html

干杯

1 个答案:

答案 0 :(得分:1)

因为chrome.tabs.query是异步的。

fbase.set被调用,而chrome.tabs.query未完成执行。

您必须将fbase.set置于chrome.tabs.query的回调中。

function getUrl() {

    chrome.tabs.query({currentWindow: true, active: true}, function (tabs) {

        var tabURL = tabs[0].url;

        fbase.set({title: tabURL});
    });
}

Asynchronous vs. synchronous methods