Расширение 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
}
Другие вопросы по тегам