【问题标题】:HTML5 File API in Firefox Addon SDKFirefox 插件 SDK 中的 HTML5 文件 API
【发布时间】:2012-09-18 12:17:47
【问题描述】:

有没有办法在内容脚本中访问 Fire Fox addon sdk 中的 Html5 文件 api?

这是为了存储用户添加的单词及其含义所必需的。数据可能会变得很大,因此无法选择本地存储。

 window.requestFileSystem3 = window.requestFileSystem || window.webkitRequestFileSystem;

给我错误TypeError: window.requestFileSystem3 is not a function

我问这个是因为我从 Google Chrome 扩展程序中移植了这段代码,它允许在内容脚本中访问文件 api。

其他问题

1) 如果不允许使用 HTML5 文件 API,那么我应该使用 file 模块吗?

2) 文件模块是否允许访问文件系统上的任何文件,而不是 Html5 文件 api,它只能访问沙盒访问文件系统?

3) 假设我必须使用 文件模块 存储我的文件的最佳位置(如用户配置文件目录或扩展目录)以及如何在代码中获取此路径。

对于这个问题中有这么多子问题,我深表歉意。谷歌在这个话题上不是很有帮助。

任何示例代码都会很有帮助。

【问题讨论】:

    标签: firefox-addon-sdk content-script html5-filesystem


    【解决方案1】:

    Firefox 尚不支持通过 File API 写入文件,即使添加此功能,它也可能只能被网页访问,而不能被扩展访问。换句话说:是的,如果您绝对需要写入文件,那么您应该使用低级 API。您希望将数据存储在用户配置文件目录中(没有扩展目录,您的扩展通常安装为单个打包文件)。像这样的东西应该可以写一个文件:

    var file = require("sdk/io/file");
    var profilePath = require("sdk/system").pathFor("ProfD");
    var filePath = file.join(profilePath, "foo.txt");
    var writer = file.open(filePath, "w");
    writer.writeAsync("foo!", function(error)
    {
      if (error)
        console.log("Error: " + error);
      else
        console.log("Success!");
    });
    

    供参考:sdk/io/filesdk/system

    您可以使用TextReader.read()file.read() 来读取文件。不幸的是,附加 SDK 似乎不支持异步文件读取,因此读取会阻止 Firefox UI。唯一的选择是通过 chrome 权限导入 NetUtilFileUtils,如下所示:

    var {components, Cu} = require("chrome");
    var {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", null);
    var {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", null);
    NetUtil.asyncFetch(new FileUtils.File(filePath), function(stream, result)
    {
      if (components.isSuccessCode(result))
      {
        var data = NetUtil.readInputStreamToString(stream, stream.available());
        console.log("Success: " + data);
      }
      else
        console.log("Error: " + result);
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多