Javascript 用于将数据保存到本地文件的Chrome扩展名

Javascript 用于将数据保存到本地文件的Chrome扩展名,javascript,google-chrome-extension,html5-filesystem,Javascript,Google Chrome Extension,Html5 Filesystem,我正在制作chrome扩展,它将保存浏览器中的每个操作,如新建选项卡、新建窗口、切换选项卡、关闭选项卡。。。但我想在csv文件中本地存储信息。我尝试了许多指南和教程,但仍然不起作用。 对于开始,我只想将测试字符串保存到本地文件中,该文件是否可见?我计划从大约20个人那里得到这些数据 在舱单中: { "manifest_version": 2, "name": "Getting started example", "description": "This is testing des

我正在制作chrome扩展,它将保存浏览器中的每个操作,如新建选项卡、新建窗口、切换选项卡、关闭选项卡。。。但我想在csv文件中本地存储信息。我尝试了许多指南和教程,但仍然不起作用。 对于开始,我只想将测试字符串保存到本地文件中,该文件是否可见?我计划从大约20个人那里得到这些数据

在舱单中:

{
  "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

在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);
}
}
控制台发出错误
uncaughtreferenceerror:fs未在
filesystem=fs行定义
没有创建文件,或者我没有找到它。我假设root位于C:/或C:/窗口的某个位置


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

您需要将
onInitFs()
更改为
onInitFs(fs)
作为
窗口。requestFileSystem
函数将把新的文件系统句柄作为参数传递给回调。

您需要将
onInitFs()
更改为
onInitFs(fs)
作为
窗口。requestFileSystem
函数将把新的文件系统句柄作为参数传递给回调函数。

您似乎没有在任何地方分配
fs
变量,这就是它为空的原因。谢谢,,,没有看到小错误。。由于本指南()fs未赋值,它只是函数的参数,因此我将fs作为onInitFs(fs)的参数,并且控制台错误消失,但我从ErrorHandler获得了“未知错误”。您似乎没有在任何地方赋值
fs
变量,这就是为什么它为null的原因。谢谢,在这里没有看到小错误。。由于此指南()fs未分配,它只是函数的参数,因此我将fs作为onInitFs(fs)的参数,控制台错误消失,但我从errorHandler获得了“未知错误”