Frage

kurzum: gibt es eine Möglichkeit, das aktuelle Verzeichnis vollständigen Pfad einer xul Anwendung finden

lange Erklärung:

Ich mag einige HTML-Dateien in einer xul Browser-Anwendung öffnen. Der Pfad zu den HTML-Dateien sollte programmatisch von der xul Anwendung eingestellt werden. Die HTML-Dateien befinden sich außerhalb des Ordners meiner xul Anwendung, aber auf dem gleichen Niveau. (Benutzer werden beiden Ordner aus dem SVN Kasse, ohne die Installation zur Verfügung für die xul app)

Es öffnete sich die Dateien nur in Ordnung, wenn ich einen vollständigen Pfad wie gesetzt "file: /// c: \ temp \ verarbeitungs sample \ index.html"

, was ich tun möchte, ist die Datei in Bezug auf meine xul Anwendung zu öffnen.

Ich fand ich kann den Profilpfad des Benutzers öffnen:

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

gibt es eine Möglichkeit, das aktuelle Verzeichnis vollständigen Pfad einer xul Anwendung zu finden?

War es hilfreich?

Lösung

Ich fand eine Abhilfe: http://developer.mozilla.org/ en / Code_snippets / File_I% 2F% 2FO i einen relativen Pfad „../../index.html“ eine Datei nicht öffnen kann genau mit, aber ich kann das App-Verzeichnis erhalten und damit arbeiten.

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;

Andere Tipps

Ja, HTML-Dateien in Ihrer Erweiterung können mit Chrom URIs adressiert werden. Ein Beispiel von einem meiner Erweiterungen:

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

In einer xul Anwendung können Sie den Chrom-Ordner der Anwendung Zugriff auf eine Chrom-URL.

Ich habe relativ wenig Erfahrung mit dem Element, also bin ich nicht sicher, ob dies für Sie genau funktioniert. Es ist so, wie Sie sind Javascript-Quelldateien in Ihrer XUL-Datei:

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

, vielleicht, wenn die Datei in c befindet: \ applicationFolder \ chrome \ content \ index.html, können Sie es zugreifen:

chrome://content/index.html 

in irgendeiner Art und Weise.

Sie können auch sehen jslib , eine Bibliothek, die vereinfacht eine Menge Dinge, einschließlich der Datei-i / o. IIRC, ich hatte Mühe, zu einem relativen Pfad immer mit '../', though.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top