chrome.storage.local.get和set

47 javascript google-chrome google-chrome-extension

我正在尝试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});
}
Run Code Online (Sandbox Code Playgroud)

我相信我做得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);
}
Run Code Online (Sandbox Code Playgroud)

当警报触发时,它会打印出来[object Object].这是为什么?我究竟做错了什么?我查看了文档/示例,但我似乎无法确定问题所在.

Sud*_*han 62

这段代码适合我:

function load() {
    var channels = "";
    var keywords = "";
    chrome.storage.local.get('channels', function (result) {
        channels = result.channels;
        alert(result.channels);
        $("#channels").val(channels);
    });
} 
Run Code Online (Sandbox Code Playgroud)

Chrome.storage.local.get()返回一个对象,其键值映射中包含项目,因此您必须在搜索模式中使用键的索引.

IMP:

感谢Rob识别:Chrome.storage.local.get()异步的,您应该修改代码以确保它们在callback()成功后工作.

如果您需要更多信息,请与我们联系.


7za*_*rk7 7

调试或使用

alert(JSON.stringify(result));
Run Code Online (Sandbox Code Playgroud)

了解更多关于你要回来的细节