Chrome.storage.local.get и установить
Я пытаюсь использовать chrome.storage.local
в своем расширении, и он, похоже, не работает. Я использовал localStorage
, но понял, что не могу использовать его в сценариях контента на нескольких страницах.
Итак, вот что я придумал:
function save()
{
var channels = $("#channels").val();
var keywords = $("#keywords").val();
chrome.storage.local.set({'channels': channels});
chrome.storage.local.set({'keywords': keywords});
}
Я действительно верю, что делаю save()
правильно, но проблема возникает в load()
:
function load()
{
var channels = "";
chrome.storage.local.get('channels', function(result){
channels = result;
alert(result);
});
var keywords = "";
chrome.storage.local.get('keywords', function(result){
keywords = result;
alert(result);
});
$("#channels").val(channels);
$("#keywords").val(keywords);
}
Когда срабатывает предупреждение, он выводит [object Object]
. Почему это? Что я делаю не так? Я посмотрел документацию/примеры, но я не могу точно определить проблему.
Ответы
Ответ 1
Этот код работает для меня:
function load() {
var channels = "";
var keywords = "";
chrome.storage.local.get('channels', function (result) {
channels = result.channels;
alert(result.channels);
$("#channels").val(channels);
});
}
Chrome.storage.local.get() возвращает объект с элементами в своих сопоставлениях с ключом, поэтому вам нужно использовать индекс ключа в своем шаблон поиска.
IMP:
Благодаря Rob для идентификации: Chrome.storage.local.get() асинхронный, вы должны изменить свой код, чтобы убедиться, что они работают после завершения обратного вызова().
Сообщите мне, если вам нужна дополнительная информация.
Ответ 2
отладить или использовать
alert(JSON.stringify(result));
для более подробной информации о том, что вы получаете назад
Ответ 3
Значение "результат", которое вы используете, является объектом, который содержит значение хранилища, чтобы получить значение, которое вы должны использовать result.keywords
, которое получит значение ключевых слов. EX:
function load(){
chrome.storage.local.get('keywords', function(result){
var keywords = result.keywords;
alert(keywords);
});
chrome.storage.local.get('channels', function(result){
var channels = result.channels;
alert(channels);
});
}