xul:打开一个相对于“ myapp.xul”的本地html文件。在xul浏览器中

StackOverflow https://stackoverflow.com/questions/104267

  •  01-07-2019
  •  | 
  •  

简而言之:有没有办法找到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应用程序的当前目录完整路径?

有帮助吗?

解决方案

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

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;

其他提示

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

content.document.location.href = "chrome://{appname}/content/logManager/index.html"

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

我对元素的经验相对较少,所以我不确定这是否适合你。这是你在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,但是我很难使用'../'来到相对路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top