Ski*_*zit 7 javascript storage google-chrome-extension
我正在寻找一种可以在网站上存在的存储机制.我有原始数据类型数字/字符串,我需要存储.localStorage对我不起作用,因为它属于同一原产地政策.我需要我的数据在所有网站上都是相同的,但很多是特定于标签的,并通过内容文字访问.
有人可以建议一个合适的机制来实现这一目标吗?
编辑: 我目前正在实施第一个答案代码,并没有太多的外观.我有以下......
background.html
注意:tabStorage是此函数中的类变量
function store(){
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.req == "save") {
tabStorage[sender.tab.id] = request.data;
}
if(request.req == "load") {
sendResponse(tabStorage[sender.tab.id]);
}
});
}
Run Code Online (Sandbox Code Playgroud)
contentscript.js
回应正在回归 undefined
chrome.extension.sendRequest({req: "load"}, function(response) {
console.log("getting stak");
console.log(response.data);
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?代码正在访问加载和保存,所以我知道它已经到达那里但是返回但未定义.为什么?
您需要使用您从后台页面访问的扩展程序自己的localStorage.如果在内容脚本中需要此信息,则需要使用消息传递将请求发送到后台页面,在那里读取,并将结果发送回响应中的内容脚本.
更新 如果您不需要存储来保持浏览器重新启动之间的值,那么您不需要localStorage.只需将所有内容存储在后台页面中,然后按ID标识标签.只要打开浏览器,后台页面就会保留这些值.例如:
内容脚本:
//save
chrome.extension.sendRequest({cmd: "save", data: {param1: "value1", param2: "value2"});
...
//load
chrome.extension.sendRequest({cmd: "load"}, function(response) {
console.log("tab data:", response)
});
Run Code Online (Sandbox Code Playgroud)
背景页面:
var tabStorage = [];
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
if(request.cmd == "save") {
tabStorage[sender.tab.id] = request.data;
}
if(request.cmd == "load") {
sendResponse(tabStorage[sender.tab.id]);
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2485 次 |
最近记录: |