javascript - Chrome 扩展程序将数据保存到本地文件

标签 javascript google-chrome-extension html5-filesystem

我正在制作 chrome 扩展,它将保存浏览器中的每个操作,如 new_tab、new_window、switch_tab、close_tab...但我想将信息本地存储在 csv 文件中。我尝试了很多指南和教程,但仍然不起作用。 首先,我只想将测试字符串保存到本地文件中,该文件可见吗?我计划从大约 20 个人那里获取这些数据。

list 中:

{
  "manifest_version": 2,

  "name": "Getting started example",
  "description": "This is testing description",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html",
    "default_title": "Click here!"
  },
  "permissions": [
    "activeTab",
    "tabs",
    ]
}

在popup.html中导入了javascript <script type="text/javascript" src="popup.js"></script>

在 popup.js 中是这样的:

window.onload = function() {
var filesystem = null;
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;

window.requestFileSystem(window.PERSISTENT, 5*1024*1024 , onInitFs, errorHandler);

  function onInitFs() {
  filesystem = fs;

  filesystem.root.getFile('treehouse.txt', {create: true}, function(fileEntry) {

  fileEntry.createWriter(function(fileWriter) {

  fileWriter.onwriteend = function(e) {
   console.log("write done");
  };

  fileWriter.onerror = function(e) {
    console.log("write error");
  };

  var contentBlob = new Blob(['JUST OWN TEXT FOR TESTING!'], {type: 'text/plain'});

  fileWriter.write(contentBlob);

}, errorHandler);
}, errorHandler);

}


function errorHandler(e) {
  var msg = '';

  switch (e.message) {
    case FileError.QUOTA_EXCEEDED_ERR:
      msg = 'QUOTA_EXCEEDED_ERR';
      break;
    case FileError.NOT_FOUND_ERR:
      msg = 'NOT_FOUND_ERR';
      break;
    case FileError.SECURITY_ERR:
      msg = 'SECURITY_ERR';
      break;
    case FileError.INVALID_MODIFICATION_ERR:
      msg = 'INVALID_MODIFICATION_ERR';
      break;
    case FileError.INVALID_STATE_ERR:
      msg = 'INVALID_STATE_ERR';
      break;
    default:
      msg = 'Unknown Error';
      break;
  };
  console.log('Error: ' + msg);
}
}

从控制台给出错误 Uncaught ReferenceError: fs is not defined在线 filesystem = fs; 没有创建文件或者我没有找到它。我假设 root 位于 C:/或 C:/Windows

有人可以帮忙修复代码吗?或者一些有用的建议?

最佳答案

您需要将 onInitFs() 更改为 onInitFs(fs),因为 window.requestFileSystem 函数会将您的新文件系统句柄传递给您回调的参数。

关于javascript - Chrome 扩展程序将数据保存到本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37932068/

相关文章:

javascript - HTML5 API Javascript 文件系统

javascript - Html 5 文件系统 API,我收到 DOMError "NotSupporteError"

javascript - 使用 moment.js 或使用 JQuery/Javascript 以英文和日文显示日期

javascript - 为什么我删除的函数在 Node.js 中不是 typeof "undefined"?

javascript - 如何从模板或带有占位符的片段创建 bootstrap html 库以轻松更改类?

google-chrome-extension - 从 mime 类型触发或调用 Chrome 扩展

javascript - 如何在实时网页中用 mailto 链接替换电子邮件地址?

javascript - 事件触发函数的返回值

javascript - 无法在 Chrome 上使用 opentok 加速器核心 js 在 opentok 上启动 ScreenShare

javascript - Chrome 文件系统 API 是否仅适用于 Chrome 应用程序(来自 Chrome 网上应用店)?