Можно ли написать расширение FireFox для открытия папки локального диска из FireFox в Windows OS? - PullRequest
3 голосов
/ 18 марта 2011

На моей веб-странице есть ссылка на папку с локальным диском. Такие как:

<a href="D:\folder\file.txt">file.txt</a> 
<a href="D:\folder>folder</a>

Как правило, открыть папку из веб-браузера невозможно. Итак, я подумал, что могу сделать это из расширения Firefox, потому что я использую Firefox в своей работе.

Ответы [ 3 ]

3 голосов
/ 18 марта 2011

Для открытия папки вы можете использовать функцию:

function openDir(val)
{
    if (val == "")
    {
        alert("Directory not defined");
        return;
    }
    if(navigator.userAgent.indexOf("Firefox") == -1)
    {
        alert("Currently active folder links supported only for Mozilla Firefox web browser");
        return;
    }
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    var localFile = 
        Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);

    var env =
        Components.classes["@mozilla.org/process/environment;1"]
        .createInstance(Components.interfaces.nsIEnvironment);

    var systemRoot = env.get("SystemRoot");
    if (systemRoot == "")
    {
        alert("Unable to retrieve SystemRoot environment variable");
    }

    localFile.initWithPath(systemRoot + "\\explorer.exe");
    var process =
        Components.classes["@mozilla.org/process/util;1"]
        .createInstance(Components.interfaces.nsIProcess);
    process.init(localFile);
    process.run(false, Array(val), 1);
}

Метод чтения файла показан в ответе nhnb, метод записи выглядит так:

// Returns null if it can't do it, false if there's an error, true if it saved OK
function mozillaSaveFile(filePath,content)
{
    if(window.Components) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
            file.initWithPath(filePath);
            if(!file.exists())
                file.create(0,0664);
            var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
            out.init(file,0x20|0x02,00004,null);
            out.write(content,content.length);
            out.flush();
            out.close();
            return true;
        } catch(ex) {
            return false;
        }
    }
    return null;
}
0 голосов
/ 27 декабря 2012

Также очень хорошо подходит расширение Launchy для Firefox.

0 голосов
/ 18 марта 2011

Ссылки должны выглядеть следующим образом:

file:///d:/folder/file.txt

Расширения LocalLink позволят вам открывать такие ссылки.В MozillaZine обсуждаются альтернативы и риски безопасности: Ссылки на локальные страницы не работают .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...