شول:افتح ملف html محليًا يتعلق بـ "myapp.xul" في متصفح xul

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

  •  01-07-2019
  •  | 
  •  

سؤال

باختصار: هل هناك أي طريقة للعثور على المسار الكامل للدليل الحالي لتطبيق xul؟

شرح طويل:

أرغب في فتح بعض ملفات html في تطبيق متصفح xul.يجب تعيين المسار إلى ملفات html برمجياً من تطبيق xul.توجد ملفات html خارج مجلد تطبيق xul الخاص بي، ولكن على نفس المستوى.(سيقوم المستخدمون بالخروج من كلا المجلدين من SVN، ولا يتوفر تثبيت لتطبيق xul)

تم فتح الملفات بشكل جيد إذا قمت بتعيين مسار كامل مثل "file:///c: emp\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 الموجودة في ملحقك باستخدام معرفات URI الخاصة بـ chrome.مثال من أحد ملحقاتي:

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

في تطبيق xul، يمكنك الوصول إلى مجلد chrome الخاص بالتطبيق باستخدام عنوان URL الخاص بـ chrome.

لدي خبرة قليلة نسبيًا في التعامل مع العنصر، لذا لست متأكدًا مما إذا كان هذا سيعمل معك تمامًا.هذه هي الطريقة التي تقوم بها بتضمين ملفات مصدر جافا سكريبت في ملف xul الخاص بك:

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

لذا، ربما إذا كان الملف موجودًا في c:\applicationFolder\chrome\content\index.html ، فيمكنك الوصول إليه على:

chrome://content/index.html 

بطريقة ما.

يمكنك أيضًا الاطلاع على jslib, ، مكتبة تعمل على تبسيط الكثير من الأشياء، بما في ذلك إدخال/إخراج الملفات.IIRC، واجهت مشكلة في الوصول إلى مسار نسبي باستخدام "../"، بالرغم من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top