Почему переменную из localStorage не получается взять во всех скриптах в расширении chrome
Пишу расширение для chrome. У меня есть переменная, которая изначально создаётся в файле background.js через localStorage.
background.js
if (localStorage.getItem('IsOn') === null) {
localStorage.setItem('IsOn', 'true');
}
Она у меня отлично работает в файле popup.js т.е. если написать
localStorage.getItem('IsOn');
То функция спокойно отработает и вернёт 'true', если до этого переменная не была отредактирована, но если я хочу получить значение этой переменной в файле content_script.js, то функция возвращает null.
Как мне можно получить переменную с localStorage в файле content_script.js?
Вот так выглядит manifest.json
{
"name":"SmartSiteBlocker",
"description":"Blocks sites you don't wanna use",
"version":"1.0",
"manifest_version":2,
"options_page": "options.html",
"browser_action":{
"default_popup":"popup.html"
},
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches":["<all_urls>"],
"js":["jquery-3.5.0.min.js", "content_script.js"],
"run_at":"document_end"
}
],
"icons": {
"16": "icon.png",
"48": "icon.png",
"128": "icon.png"
},
"permissions": ["storage"],
"web_accessible_resources": ["blocked.html"]
}
Ответы (1 шт):
Я понял как это можно сделать без localStorage. Первым делом добавляем строчку в manifest.json
"permissions": ["storage"]
Затем, чтобы создать переменную, например IsOn со значением true, нужно написать
var storage = chrome.storage.sync;
storage.set({ IsOn: true });
А чтобы получить её в другом скрипте, пишем
var storage = chrome.storage.sync;
storage.get('IsOn', function (items) {
});
Внутри функции эта переменная будет названа items.IsOn