Javascript 如何以及在何处使用Chrome.storage API在Chrome扩展中存储用户首选项?

Javascript 如何以及在何处使用Chrome.storage API在Chrome扩展中存储用户首选项?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我试图将复选框的值存储在popup.html文件中。我的popup.js文件中有两个函数: function storeUserPrefs() { var isHighlighting = false; var highlightedCheckBoxVal = $("#highlightedCheckbox").is(":checked"); chrome.storage.sync.set({isHighlighting: highlightedCheckBoxVal},

我试图将复选框的值存储在
popup.html
文件中。我的
popup.js
文件中有两个函数:

function storeUserPrefs() {
    var isHighlighting = false;
    var highlightedCheckBoxVal = $("#highlightedCheckbox").is(":checked");
    chrome.storage.sync.set({isHighlighting: highlightedCheckBoxVal}, function() {
        console.log("saved " + isHighlighting + "as " + highlightedCheckBoxVal);
    })
}

function getUserPrefs() {
    chrome.storage.sync.get(['isHighlighting'], function(result) {
        console.log('Value is currently ' + result.isHighlighting);
      });
}
我的第一个问题是:

如果我试图保存变量
isHighlighting
的真/假值,然后将保存的值设置为
highlightedCheckBoxVal
这两个函数是否正确

我的第二个问题是:

我在哪里调用这两个函数?我应该将它们保存在
popup.js
中,还是将它们放在
background.js

我的第三个问题是:

每次选中/取消选中复选框时,我是否会使用Chrome.storage.onChanged函数更新这些值?

非常感谢您的帮助,如果您需要更多详细信息,请告诉我

试图保存正确/错误

set()很好

get()没有任何有用的功能,因此它的回调需要

$("#highlightedCheckbox").prop('checked', result.isHighlighting)
这两个函数在哪里调用

在弹出窗口中

后台脚本在一个单独的隐藏后台页面中运行,该页面有自己的空DOM

使用Chrome.storage.onChanged函数

没有

注册
更改
单击调用set()以存储新值的
侦听器

在脚本开头执行此操作,并添加getUserPrefs()调用,以便在每次弹出窗口打开时加载数据:

$("#highlightedCheckbox").change(storeUserPrefs)
getUserPrefs();

这是有帮助的,但仍然无法保存值。控制台显示弹出窗口打开时,
result.ishighlight
未定义。有什么想法吗?如果没有看到完整的代码,我无法进一步帮助。可能您没有将
更改
侦听器放在我建议的位置,或者您的popup.js中有其他错误。无论如何,所有这些都是调试的问题,您可以方便地在devtools中为弹出窗口执行调试。