是否可以编写FireFox扩展来从Windows操作系统中的FireFox打开本地驱动器文件夹?

时间:2011-03-18 06:26:52

标签: javascript firefox

在我的网页中,我有一个指向本地驱动器文件夹的文件链接。如:

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

通常情况下,无法从Web浏览器打开文件夹。所以,我认为我可以通过Firefox扩展来实现它,因为我在工作中使用Firefox。

3 个答案:

答案 0 :(得分:3)

要打开文件夹,您可以使用功能:

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 answer中显示,write方法如下:

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

答案 1 :(得分:0)

链接应如下所示:

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

扩展程序LocalLink将允许您打开此类链接。关于MozillaZine的替代品和安全风险的讨论:Links to local pages do not work

答案 2 :(得分:0)

此外,Firefox的Launchy扩展程序非常好。