Глобальные переменные расширения Firefox и onInstalled
У меня есть расширение Chrome, использующее Omnibox API. Я хочу самостоятельно перенести это расширение на 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
наruntime.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 локального хранилища?
Спасибо!
Исходные коды здесь: