XUL: abrir um arquivo HTML local em relação ao “myapp.xul” no navegador XUL

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

  •  01-07-2019
  •  | 
  •  

Pergunta

Em suma:? Existe alguma maneira de encontrar o atual diretório de caminho completo de um aplicativo XUL

longa explicação:

Eu gostaria de abrir alguns arquivos HTML em um aplicativo do navegador XUL. O caminho para os arquivos html deve ser definido por meio de programação da aplicação XUL. Os arquivos html residem fora da pasta da minha aplicação XUL, mas ao mesmo nível. (Usuários vão fazer o checkout ambas as pastas do SVN, nenhuma instalação disponível para o aplicativo XUL)

Ele abriu os arquivos muito bem se eu definir um caminho completo como "file: /// C: \ temp \ processando-sample \ index.html"

o que eu quero fazer é abrir o arquivo em relação ao meu pedido XUL.

Eu descobri que pode abrir caminho do perfil do usuário:

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

Existe alguma maneira de encontrar o atual diretório de caminho completo de um aplicativo XUL?

Foi útil?

Solução

Eu encontrei uma solução alternativa: http://developer.mozilla.org/ en / Code_snippets / File_I% 2F% 2FO eu não posso abrir exatamente um arquivo usando um caminho relativo "../../index.html" mas eu posso obter o diretório do aplicativo e trabalhar com isso.

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;

Outras dicas

Sim, html arquivos dentro de sua extensão podem ser abordados usando o Chrome URIs. Um exemplo de uma das minhas extensões:

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

Em uma aplicação XUL, você pode acessar a pasta cromo do aplicativo usando um url cromo.

I têm relativamente pouca experiência com o elemento, então eu não tenho certeza se isso vai funcionar exatamente para você. É a maneira de incluir arquivos de origem JavaScript no seu arquivo XUL:

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

Assim, talvez se reside o arquivo em C: \ applicationFolder \ chrome \ content \ index.html, você pode acessá-lo em:

chrome://content/index.html 

de alguma forma.

Você também pode olhar para jslib , uma biblioteca que simplifica um monte de coisas, incluindo arquivo i / o. IIRC, eu tinha dificuldade em chegar a um caminho relativo usando '../', apesar de tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top