javascript - Firefox 扩展全局变量和 onInstalled
问题描述
我有一个使用 Omnibox API 的 chrome 扩展。我想自己将此扩展程序移植到Firefox。
我已经尝试了几乎所有可能有帮助的方法,可悲的是,我筋疲力尽并且没有解决方案。
无论如何,扩展程序基本上在 Chrome 中执行这些步骤,没有错误:
- 加载名为的全局变量
sites
,它是一个对象数组
var sites = [
{
"name":"ytb",
"desc":"YouTube",
"url":"https://www.youtube.com/results?search_query={%query%}"
},
{
"name":"ggl",
"desc":"Google",
"url":"https://www.google.com/search?q={%query%}"
},
{
"name":"dvand",
"desc": "Android Devs",
"url": "https://developer.android.com/s/results?q={%query%}"
},
{
"name":"bng",
"desc":"Bing",
"url":"https://www.bing.com/search?q={%query%}"
},
...
];
- 将站点对象保存到
storage.local
onruntime.onInstalled
:
browser.runtime.onInstalled.addListener((details) => {
if (details.reason == "install") {
console.log("First install");
save(); //which saves sites to local storage...
load(); //which load sites from local storage...
}
});
这是保存和加载功能:
function save() {
browser.storage.local.set({"ssearch_sites":sites}, () => {
console.log("Saved!",sites);
sites = sites;
});
}
function load() {
browser.storage.local.get('ssearch_sites', (res) => {
console.log("Got!",res.ssearch_sites);
sites = res.ssearch_sites;
});
}
我认为问题可能取决于这些:
- onInstalled 不工作
- 不存储站点等全局变量(这不太可能)。
- 本地存储 api 不能很好地工作......
哦,我必须说,当
我从这些运行扩展:
web-ext run
它有时可以按预期工作,但是当我从商店下载它时,它不起作用。这怎么可能?我的意思是如何在测试中工作而在生产阶段不起作用?
还有一件事,你知道本地存储 API 的替代方案吗?
谢谢!
源代码在这里:
解决方案
推荐阅读
- javascript - 更新嵌套数组中的元素,不可变
- c++ - 检查基类对象的子类 - 继承
- swift - 关于 swift 中的通用柯里化
- python - 无法使用 Flask 和 Nameko 连接到 RabbitMQ
- google-cloud-platform - 使用面部识别来识别照片集中有多少个独特的面孔
- spring - 如何在 Redis 会话中使用 Spring Boot 身份验证
- java - 构造函数 PlainTextByLineStream(StringReader) 未定义
- swift - 分离视图控制器的数据不起作用
- r - R正则表达式匹配字符串的开头和结尾,忽略中间
- bash - 在使用 '=~' 的 Bash 测试中如何匹配 '[default]'?