xul: apre un file html locale relativo a & # 8220; myapp.xul & # 8221; nel browser xul

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

  •  01-07-2019
  •  | 
  •  

Domanda

in breve: c'è un modo per trovare il percorso completo della directory corrente di un'applicazione xul?

spiegazione lunga:

Vorrei aprire alcuni file html in un'applicazione browser xul. Il percorso dei file html deve essere impostato a livello di programmazione dall'applicazione xul. I file html risiedono al di fuori della cartella della mia applicazione xul, ma allo stesso livello. (gli utenti eseguiranno il checkout di entrambe le cartelle da SVN, nessuna installazione disponibile per l'app xul)

Ha aperto i file bene se ho impostato un percorso completo come " file: /// c: \ temp \ processing-sample \ index.html "

quello che voglio fare è aprire il file relativo alla mia applicazione xul.

Ho scoperto di poter aprire il percorso del profilo dell'utente:

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

c'è un modo per trovare il percorso completo della directory corrente di un'applicazione xul?

È stato utile?

Soluzione

Ho trovato una soluzione alternativa: http://developer.mozilla.org/ it / Code_snippets / File_I% 2F% 2FO non riesco ad aprire esattamente un file usando un percorso relativo " ../../ index.html " ma posso ottenere la directory dell'app e lavorare con quello.

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;

Altri suggerimenti

Sì, i file html all'interno dell'estensione possono essere indirizzati utilizzando gli URI di Chrome. Un esempio da una delle mie estensioni:

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

In un'applicazione xul, puoi accedere alla cartella chrome dell'applicazione usando un URL chrome.

Ho relativamente poca esperienza con l'elemento, quindi non sono sicuro che funzionerà esattamente per te. È il modo in cui includi i file sorgente javascript nel tuo file xul:

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

Quindi, forse se il file risiede in c: \ applicationFolder \ chrome \ content \ index.html, puoi accedervi da:

chrome://content/index.html 

in qualche modo.

Puoi anche guardare jslib , una libreria che semplifica molte cose, incluso l'i / o dei file. IIRC, ho avuto problemi ad arrivare a un percorso relativo usando '../', comunque.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top