javascript - 在客户端打开、创建文件和保存数据并重复使用该数据

标签 javascript io google-chrome-app

我正在使用纯 javascript 和 Bootstrap 创建一个 chrome 应用程序。最初用户必须提供一些数据,应用程序会保留这些数据并在下次使用。我想我必须存储它 文件中的数据。我可以使用普通的 javascript 文件 IO 来做到这一点,还是有一种特殊的方法可以在 chrome 风格中做到这一点。 (因为某些功能在打包的应用程序中被禁用)

最佳答案

你是对的,本地存储没有为 Chrome 打包应用程序启用。但是,根据您管理的数据类型,有两个 API 应该可以工作。

chrome.storage.local是一个通用的键值存储,它将在本地机器上保存数据(chrome.storage.sync 是一个相同的 API,也将同步用户设备之间的数据,但我不推荐它用于大文件)

API 使用简单:

chrome.storage.local.set({myKey: "myValue"}, function() {
    if (!chrome.runtime.lastError) {
        console.log("The value has been stored!");
    } else {
        console.error("There was an error!");
    }
});

chrome.storage.local.get("myKey", function(data) {
    if (!chrome.runtime.lastError) {
        console.log("The value is " + data.myKey);
    } else {
        console.error("There was an error!");
    }
});

(如果您使用的是 chrome.storage.sync,那么您可能还想向 chrome.storage.onChanged 事件添加一个监听器,以了解何时从另一个位置更改了数据)

另一种方式可能是您认为的“普通 javascript 文件 IO”——W3C File System API由打包的应用程序支持。您可以向用户请求存储空间并存储您可以用 JavaScript 读写的实际文件。有介绍的很好here .

关于javascript - 在客户端打开、创建文件和保存数据并重复使用该数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453002/

相关文章:

java - 文件输出流 : Stream closed

javascript - 无法使用 chrome api 从 hid 设备获取任何输入数据

javascript - AngularJS ng-include 作用域

java - 如何解压缩字节数组中的 gzip 数据?

javascript - Sencha touch 2 存储动态代理 URL

c++ - 循环接受第一组输入,然后重用该值

javascript - Chrome 打包应用程序 : Open Website in New Tab

javascript - 处理 Chrome 应用程序窗口外部的点击

javascript - 为什么 localStorage 不保存我的变量?

javascript - Angular-初学者 NgModel 绑定(bind)