【问题标题】:Chrome app not saving data to local storage [duplicate]Chrome应用程序未将数据保存到本地存储[重复]
【发布时间】:2014-11-16 11:02:22
【问题描述】:

我正在开发一个 chrome 应用程序,它需要将一些数据保存到本地存储并在之后检索它。

我遵循 Chrome 存储 API 上的指南 https://developer.chrome.com/extensions/storage

并有一个简单的代码来保存数据:

function saveCurrentPort()
{

    chrome.storage.local.set({'last_port': connectedPortPath}, function() {
              // Notify that we saved.
              writeConsole('JS last port saved:' + connectedPortPath );
              if (chrome.extension.lastError) {
                    alert('JS An error occurred: ' + chrome.extension.lastError.message);
                }
            });

}

使用有效数据调用此函数后,本地存储中不会保存任何内容。查看我的应用程序的开发人员工具窗口中的资源选项卡,我在本地存储部分(也不是会话存储)中看不到任何条目。 当然,尝试检索此数据会失败,因为找不到数据。 这应该是直截了当的,但对我来说根本不起作用。 我在本地以开发者模式运行应用程序。

在这里找其他问题我没有看到这样的案例。

知道为什么它不起作用吗?我错过了什么吗?

谢谢

【问题讨论】:

  • 我认为您按照建议使用了“权限”?

标签: google-chrome storage local


【解决方案1】:

您是否向您的manifest.json 声明了“存储”权限?

   {
        "name": "My extension",
        ...
        "permissions": [
          "storage"
        ],
        ...
      }

另外,Chrome 应用程序不允许使用 alert()。 我认为应该有更多的错误。您可能需要先修复它。

【讨论】:

  • 嗨。是的,权限当然是在 manifest.json 中设置的。我按照此 API 的说明进行操作。您对警报的看法是正确的,但它不会改变问题,因为它永远不会到达警报,lastError 未设置。
  • 你检查saveCurrentPort是否真的被调用了?
  • 是的。行 writeConsole('JS 最后保存的端口:' + connectedPortPath );在控制台日志中写入适当的条目。
【解决方案2】:

除了权限之外,您还需要输入 'last_port' 的值

var last_port_var= 'last_port';

var portObj= {};

portObj[last_port_var] = connectedPortPath;

现在按对象设置值:

chrome.storage.local.set(portObj, function() {
     //code goes here....
}

希望这会有所帮助。

【讨论】:

  • 你好。我过去曾从我看过的另一篇文章中尝试过您的建议,现在又一次尝试过。它仍然不起作用。另外,根据 API 文档,原始代码也应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2016-04-29
  • 2014-07-07
  • 2018-07-03
  • 1970-01-01
  • 2015-01-06
  • 2012-04-25
  • 2023-03-26
相关资源
最近更新 更多