3

简而言之:有没有办法找到 xul 应用程序的当前目录完整路径?

长解释:

我想在 xul 浏览器应用程序中打开一些 html 文件。应从 xul 应用程序以编程方式设置 html 文件的路径。html 文件位于我的 xul 应用程序的文件夹之外,但在同一级别。(用户将从 SVN 签出这两个文件夹,xul 应用程序没有可用的安装)

如果我设置像“file:///c:\temp\processing-sample\index.html”这样的完整路径,它会很好地打开文件

我想要做的是打开与我的 xul 应用程序相关的文件。

我发现我可以打开用户的个人资料路径:

var DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1", "nsIProperties");
var path = (new DIR_SERVICE()).get("UChrm", Components.interfaces.nsIFile).path;
var appletPath;

// find directory separator type
if (path.search(/\\/) != -1)
{
appletPath = path + "\\myApp\\content\\applet.html"
}
else
{
appletPath = path + "/myApp/content/applet.html"
}

// Cargar el applet en el iframe
var appletFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
appletFile.initWithPath(appletPath);
var appletURL = Components.classes["@mozilla.org/network/protocol;1?name=file"].createInstance(Components.interfaces.nsIFileProtocolHandler).getURLSpecFromFile(appletFile);
var appletFrame = document.getElementById("appletFrame");
appletFrame.setAttribute("src", appletURL); 

有没有办法找到 xul 应用程序的当前目录完整路径?

4

3 回答 3

2

我找到了一种解决方法:http: //developer.mozilla.org/en/Code_snippets/File_I%2F%2FO我无法使用相对路径“../../index.html”完全打开文件,但我可以得到app 目录并使用它。

var DIR_SERVICE = new Components.Constructor("@mozilla.org/file/directory_service;1", "nsIProperties");
var path = (new DIR_SERVICE()).get(resource:app, Components.interfaces.nsIFile).path;
var appletPath;
于 2008-09-19T19:48:13.173 回答
2

是的,您的扩展程序中的 html 文件可以使用 chrome URI 进行寻址。我的一个扩展中的一个例子:

content.document.location.href = "chrome://{appname}/content/logManager/index.html"
于 2009-02-25T03:57:21.317 回答
0

在 xul 应用程序中,您可以使用 chrome url 访问应用程序的 chrome 文件夹。

我对 element 的经验相对较少,所以我不确定这是否适合你。这是您在 xul 文件中包含 javascript 源文件的方式:

<script src="chrome://includes/content/XSLTemplate.js" type="application/x-javascript"/>

因此,也许如果文件位于 c:\applicationFolder\chrome\content\index.html ,您可以在以下位置访问它:

chrome://content/index.html 

以某种方式。

您还可以查看jslib,这是一个简化很多事情的库,包括文件 i/o。IIRC,不过,我无法使用“../”找到相对路径。

于 2008-09-20T05:14:29.520 回答