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

发布于 2024-07-04 19:15:00 字数 1282 浏览 9 评论 0原文

简而言之:有什么方法可以找到 xul 应用程序的当前目录完整路径吗?

长解释:

我想在 xul 浏览器应用程序中打开一些 html 文件。 html 文件的路径应从 xul 应用程序以编程方式设置。 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 应用程序的当前目录完整路径吗?

in short: is there any way to find the current directory full path of a xul application?

long explanation:

I would like to open some html files in a xul browser application. The path to the html files should be set programmatically from the xul application. The html files reside outside the folder of my xul application, but at the same level. (users will checkout both folders from SVN, no installation available for the xul app)

It opened the files just fine if I set a full path like "file:///c:\temp\processing-sample\index.html"

what i want to do is to open the file relative to my xul application.

I found i can open the user's profile path:

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

is there any way to find the current directory full path of a xul application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

傲世九天 2024-07-11 19:15:00

我找到了解决方法: 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;

I found a workaround: http://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO i cannot exactly open a file using a relative path "../../index.html" but i can get the app directory and work with that.

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;
少女净妖师 2024-07-11 19:15:00

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

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

Yes, html files within your extension can be addressed using chrome URIs.
An example from one of my extensions:

content.document.location.href = "chrome://{appname}/content/logManager/index.html"
七色彩虹 2024-07-11 19:15:00

在 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,不过,我在使用“../”访问相对路径时遇到了麻烦。

In a xul application, you can access the chrome folder of the application using a chrome url.

I have relatively little experience with the element , so I'm not sure if this will work exactly for you. It is the way you include javascript source files in your xul file:

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

So, perhaps if the file resides at c:\applicationFolder\chrome\content\index.html , you can access it at:

chrome://content/index.html 

in some fashion.

You may also look at jslib, a library that simplifies a lot of things, including file i/o. IIRC, I had trouble getting to a relative path using '../', though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文