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中为弹出窗口执行调试。