访问chrome.storage.local的问题.从options.html中设置/获取

Problems with accessing chrome.storage.local.set/get from options.html

本文关键字:html 设置 获取 options storage chrome local 问题 访问      更新时间:2023-09-26

从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('this function is called!');秒后开始调用点击相应的按钮。这是否意味着我不能使用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>

我需要这个类别到我的内容脚本。

FORM不是一个void元素,所以在开始标签的末尾写上/>并不会关闭它:

开始标签由以下部分组成,顺序完全如下:

  • 一个"<"字符。
  • 元素的标签名。
  • 可选的一个或多个属性,每个属性之前必须有一个或多个空格字符。
  • 可选,一个或多个空格字符。
  • 可选,一个"/"字符,只有当元素是void元素时,才可能出现。
  • 一个">"字符。

BUTTON元素实际上是在表单内部,你可以在元素检查器中看到,因此提交表单点击,重新加载文档,你可以在devtools网络面板中看到。

解决方案:

  • 通过在click处理程序中使用return false来防止默认事件动作:jQuery将其转换为event.preventDefault()event.stopPropagation()
  • 使用type="button"属性:<button type="button" id="go-button">Go!</button>