当用户点击扩展程序图标时,我想通过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
popup.html
目前,控制台无法打印任何内容。此外,该扩展程序还有一个按钮,可以重定向到指定的链接(google.com),在我编写保存标签链接的代码之前工作正常,但现在还没有工作。请说明是否还需要添加更多内容。
答案 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:true
和currentWindow: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();