Как включить локальный JavaScript для чтения / записи файлов на моем компьютере? - PullRequest
2 голосов
/ 17 мая 2010

Поскольку 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 Ответ

4 голосов
/ 17 мая 2010

Вы можете использовать их в рамках 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");

См. Также

...