Can I write a FireFox extension to open a local drive folder from FireFox in windows os?

On my webpage I have a link to a file in a local drive folder. For instance:

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

In the usual way, it is not possible to open a folder from a web browser. So, I thought I could do this from the Firefox extension, because I use Firefox in my work.

+3
source share
3 answers

To open a folder, you can use the function:

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);
}

The file reading method is shown in nhnb's answer, the writing method looks like this:

// Returns null if it can't do it, false if there 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;
}
+3
source

Links should look like this:

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

LocalLink . MozillaZine : .

0

Also the Launchy extension for Firefox is very good.

0
source

All Articles