如何在我的电脑上启用本地javascript读/写文件?

时间:2010-05-17 00:14:16

标签: javascript firefox greasemonkey

由于Greasemonkey无法从本地硬盘读取/写入文件,我听说人们建议使用Google齿轮,但我不知道齿轮。

所以,我决定添加一个

<script type="text/javascript" src="file:///c:/test.js">/script>

现在,此测试将使用FileSystemObject来读/写文件。因为file:///c:/test.js是来自本地硬盘的javascript文件,它应该能够在我的本地硬盘上读/写文件。

我尝试了但是Firefox阻止了file:///c:/test.js脚本从本地磁盘读取/写入文件。 :(

Firefox about:config中是否有任何设置我们可以指定让某个特定脚本(例如localfile或xyz.com)对我的本地磁盘文件具有读/写权限?

1 个答案:

答案 0 :(得分:4)

您可以在chrome范围内使用这些。

var FileManager =
{
Write:
    function (File, Text)
    {
        if (!File) return;
        const unicodeConverter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
            .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);

        unicodeConverter.charset = "UTF-8";

        Text = unicodeConverter.ConvertFromUnicode(Text);
        const os = Components.classes["@mozilla.org/network/file-output-stream;1"]
          .createInstance(Components.interfaces.nsIFileOutputStream);
        os.init(File, 0x02 | 0x08 | 0x20, 0700, 0);
        os.write(Text, Text.length);
        os.close();
    },

Read:
    function (File)
    {
        if (!File) return;
        var res;

        const is = Components.classes["@mozilla.org/network/file-input-stream;1"]
            .createInstance(Components.interfaces.nsIFileInputStream);
        const sis = Components.classes["@mozilla.org/scriptableinputstream;1"]
            .createInstance(Components.interfaces.nsIScriptableInputStream);
        is.init(File, 0x01, 0400, null);
        sis.init(is);

        res = sis.read(sis.available());

        is.close();

        return res;
    },
}

示例:

var x = FileManager.Read("C:\\test.js");

另见