Javascript 访问chrome.storage.local.set/get from options.html时出现问题

Javascript 访问chrome.storage.local.set/get from options.html时出现问题,javascript,google-chrome-extension,Javascript,Google Chrome Extension,从my options.html调用以下代码: $('#go-button').click(function () { var selectedCategories = GetSelectedCategories(); chrome.storage.local.set({ 'selectedCategories': selectedCategories }, function () { console.log('this function

从my options.html调用以下代码:

 $('#go-button').click(function () {
        var selectedCategories = GetSelectedCategories();
        chrome.storage.local.set({ 'selectedCategories': selectedCategories }, function () {
            console.log('this function is called!');
            chrome.storage.local.get('selectedCategories', function (result) {
                console.log('local.get result: ' + result.selectedCategories);
            })
            //window.close();
        });
    });
seceltedCategories
var很好-我已经在控制台中检查过了。意味着,
GetSelectedCategories()
方法工作正常

但是
console.log('local.get result:'+result.selectedCategories)永远不要打电话

console.log('调用此函数!')在第二次单击相应按钮后开始调用。这是否意味着我不能使用options.js访问
storage.local

<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="/bower_components/jquery.min.js"></script>
  <script type="text/javascript" src="options.js"></script>
</head>
<body>
  <form id="listOfCategories_form" />
  <button id="go-button">Go!</button>
</body>
</html>

走!

我需要将这些类别添加到我的内容脚本中

表单
不是一个表单,因此在其开始标记末尾写入
/>
不会关闭它:

开始标记由以下部分组成,顺序如下:

  • “”字符
按钮
元素实际上位于表单内部,如您在元素检查器中所看到的,因此在单击时提交表单,如您在devtools网络面板中所看到的那样重新加载文档

解决方案:

  • 通过在单击处理程序中使用
    return false
    来防止默认事件操作:jQuery将其转换为
    event.preventDefault()
    event.stopPropagation()
  • 使用
    type=“button”
    属性:
    Go

以及从
GetSelectedCategories
返回什么类型的数据?它对JSON友好吗?@Xan只是一维字符串数组,比如
['category1','category2']
。快速检查是否正常:什么类型的元素是
#go按钮
?是在一张表格里吗?@Xan哈哈<代码>开始但我使用jQuery按id选择此按钮。为什么我要将其放入表单中?我只是检查它是否实际存在。情况似乎并非如此。