如何使用JS在本地保存用户访问的网址,通过Chrome扩展程序?

时间:2018-04-24 11:17:51

标签: javascript arrays google-chrome-extension

当用户点击扩展程序图标时,我想通过Chrome扩展程序保存活动标签的网址链接。该URL应保存在本地存储中,并应保持存储,直到活动窗口未关闭。我正在尝试将网址保存在数组Mockito.verify( registersMock, times(1) ).sp = 0x300

这里是tablink

manifest.json

这是我的{ "manifest_version": 2, "name": "saveLink", "version": "1.0", "browser_action": { "default_icon": "xyz.png", "default_popup": "popup.html", "default_title": "saveLink" }, "permissions": [ "activeTab", "storage", "tabs" ] } ,其中包含popup.js

的js代码
popup.html

目前,控制台无法打印任何内容。此外,该扩展程序还有一个按钮,可以重定向到指定的链接(google.com),在我编写保存标签链接的代码之前工作正常,但现在还没有工作。请说明是否还需要添加更多内容。

1 个答案:

答案 0 :(得分:1)

打开弹出窗口时将当前标签页保存到列表

popup.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  var tabUrl = tabs[0].url;
  chrome.storage.local.get('urlList', function(item){
    var newUrlList = item.urlList;
    newUrlList.push(tabUrl);
    console.log(newUrlList);
    chrome.storage.local.set({urlList: newUrlList});
  });
});
  

说明:   基本上,tabs.query会获得一个标签列表,它会包含active:truecurrentWindow:true等搜索字词。使用这些参数,它只返回一个选项卡,但结果仍被视为列表,因此我们使用tabs[0]。然后,您将获得保存在存储中的当前选项卡列表,并将变量newUrlList设置为选项卡列表。要将新项目添加到列表中,比tablink[0] = newvalue更好的方法是推送'列表中的变量,newUrlList.push(tabUrl)。然后我们用newUrlList替换存储的列表。

修改 如果urlList已设置为chrome.storage中的列表,则上述代码有效,下面的代码确保urlList已初始化(如果它尚未存在)

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  var tabUrl = tabs[0].url;
  chrome.storage.local.get({'urlList':[]}, function(item){
    var newUrlList = item.urlList;
    if (newUrlList.indexOf(tabUrl) === -1) {
      newUrlList.push(tabUrl);
    }
    console.log(newUrlList);
    chrome.storage.local.set({urlList: newUrlList});
  });
});
  

说明:   chrome.storage.local.get({'urlList':[]})获取urlList的值(如果存在),但如果它不存在,则将其初始化为[]。另外,我认为你要将这个代码添加到一个函数中,所以它只在你点击popup.html中的一个按钮时运行,但是我添加了一个if语句来检查URL是否不存在以便只添加新网址。

此外,在使用chrome.storage时,它对我有用,至少要清除存储空间以检查它是否正常工作:chrome.storage.local.clear();