javascript - Chrome 扩展程序,Javascript : getting URL from address bar

标签 javascript tabs google-chrome-extension

我正在开发一个扩展,该扩展在栏上有一个“弹出”按钮,
我访问一个网站(例如 google.com),按下按钮,我在 popup.html 中运行以下代码:

window.addEventListener("load", windowLoaded, false);

function windowLoaded() {
  chrome.tabs.getSelected(null, function(tab) {
    localStorage['url_in_address_bar']=tab.url;
  });
}

但它不会保存 Google 地址,而是保存自己的地址,如下所示:“chrome://extensions/”

如何让它保存最后一个地址而不是它本身?

最佳答案

您的代码显示了问题。 getSelected 将选项卡作为回调返回,这意味着当 Chrome 找到所选选项卡时执行回调。这是异步,稍后执行:

window.addEventListener("load", windowLoaded, false);

function windowLoaded() {
  // 1) request selected tab
  chrome.tabs.getSelected(null, function(tab) {
    localStorage['url_in_address_bar']=tab.url; // 3) selected tab is stored
  });
}


// 2) a tab is created
var saved_email = localStorage['blocker_user_email'];
if (saved_email === undefined ||  saved_email == "a@a.com")
{   
    //self.close();
    chrome.tabs.create({url: '0_register.html'});
} else{
      // self.close();
      chrome.tabs.create({url: '1_options.html'});
}

您可以通过将代码的第二部分放入回调函数来解决它:

window.addEventListener("load", windowLoaded, false);

function windowLoaded() {
  chrome.tabs.getSelected(null, function(tab) {
    localStorage['url_in_address_bar']=tab.url;

    var saved_email = localStorage['blocker_user_email'];
    if (saved_email === undefined ||  saved_email == "a@a.com")
    {   
        //self.close();
            chrome.tabs.create({url: '0_register.html'});
    } else{
          // self.close();
          chrome.tabs.create({url: '1_options.html'});
    }
  });
}

回调函数是您作为另一个函数的参数提供的函数(例如 getSelected)。当其他函数完成其任务(例如查找选定的选项卡)时,它将执行提供的函数。但与此同时,请求之后的代码将定期执行。

关于javascript - Chrome 扩展程序,Javascript : getting URL from address bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710852/

相关文章:

tabs - Chrome扩展程序:在Tabs文档中不存在此 “chrome.tabs.getSelected”,但我在示例中看到了动画

javascript - 如何将 PhantomJS 添加到我的 Chrome 扩展程序?

javascript - 确认框多次出现

javascript - 为什么我的模板上的数据没有从我的 Angular 范围渲染?

php - 遍历标题选项卡树 MySQL 和 PHP

extjs - 如何在 extjs4 中刷新选项卡内的组件?

javascript - 内容脚本未从后台脚本接收消息 (Mv3)

javascript - 使用 Canvas 创建桌面通知图像,只有一个图像来自背景页面

javascript - 将图像文件保存在本地存储中并从文件路径html angularjs中检索图像

javascript - 我应该使用 Lua 吗?