Расширение Chrome: преобразование значения localStorage в логическое значение в скрипте содержимого
В настоящее время я конвертирую один из моих пользовательских скриптов в расширение Chrome. Единственная вещь, с которой я все еще застрял, - это успешно хранить значения localStorage в переменных в моем скрипте контента. Я приведу один пример здесь, другие похожи, но с другими именами.
var REMOVE_WARNINGS;
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
});
Как вы можете видеть, я запрашиваю localStorage моего расширения для значения, которое было присвоено "REMOVE_WARNINGS". Я делаю это потому, что в дальнейшем в скрипте содержимого эта переменная проверяется, чтобы увидеть, должна ли она выполнять определенные действия или нет. Исходное значение присваивается в localStorage через страницу параметров с помощью опции HTML, true или false, что происходит без проблем. Значение "true" (или "false") успешно возвращается в метод сценария содержимого и печатается в консоли, потому что я его проверил. Что не работает, так это присвоение значения глобальной переменной REMOVE_WARNINGS в моем скрипте содержимого.
Я перепробовал несколько вариантов, в том числе REMOVE_WARNINGS = response.status;
, REMOVE_WARNINGS = response.status == "true";
и я также попытался удалить строку вывода консоли, думая, что она может печатать деструктивно. Кажется, что ни один из этих параметров не может успешно сохранить логическое значение "true" или "false" в глобальной переменной, поскольку скрипт не выполняет действия, которые он должен выполнить.
Кто-нибудь видит, что я здесь делаю не так? Я полностью потерян в этой точке, особенно потому, что чёткое чтение значения не проблема. Это хранит его в глобальной переменной скрипта контента, вот в чем проблема.
Ура Кеннет
1 ответ
Пожалуйста, поправьте меня, если я ошибаюсь, но я думаю, что вы пытаетесь сделать что-то вроде:
var REMOVE_WARNINGS;
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
});
console.log(REMOVE_WARNINGS); //this console.log will fail? right?
Попробуйте изменить ваш код следующим образом:
chrome.extension.sendRequest({method: "REMOVE_WARNINGS"}, function(response) {
console.log(response.status);
REMOVE_WARNINGS = response.status == "true";
doSomething();
});
function doSomething() {
console.log(REMOVE_WARNINGS); //this one should work
}