Инструменты пользователя

Инструменты сайта


software:firefox-xpi-programming:0ther

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:firefox-xpi-programming:0ther [2010/01/29 11:12] – создано artursoftware:firefox-xpi-programming:0ther [2017/03/23 21:59] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 ====== Разные куски кода ====== ====== Разные куски кода ======
 +
 +===== Настройки: Чтение-запись =====
 +
 +<code javascript>var prefs = Components
 +                .classes["@mozilla.org/preferences-service;1"]
 +            .getService(Components.interfaces.nsIPrefService)
 +            .getBranch("extensions.ADDONNAMEGOESHERE.");
 +
 +var string = prefs.getCharPref("PREFERENCE NAME");
 +prefs.setCharPref("PREFERENCE NAME", string);
 +
 +var bool = prefs.getBoolPref("PREFERENCE NAME");
 +prefs.setBoolPref("PREFERENCE NAME", bool);</code>
 +
 +
 +
 +===== Read Chrome files =====
 +
 +<code  javascript>function chromeToPath (aPath) {
 +
 +   if (!aPath || !(/^chrome:/.test(aPath)))
 +      return; //not a chrome url
 +   var rv;
 +   
 +      var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces["nsIIOService"]);
 +        var uri = ios.newURI(aPath, "UTF-8", null);
 +        var cr = Components.classes['@mozilla.org/chrome/chrome-registry;1'].getService(Components.interfaces["nsIChromeRegistry"]);
 +        rv = cr.convertChromeURL(uri).spec;
 +
 +        if (/^file:/.test(rv))
 +          rv = this.urlToPath(rv);
 +        else
 +          rv = this.urlToPath("file://"+rv);
 +
 +      return rv;
 +}
 +
 +function urlToPath (aPath) {
 +
 +    if (!aPath || !/^file:/.test(aPath))
 +      return ;
 +    var rv;
 +   var ph = Components.classes["@mozilla.org/network/protocol;1?name=file"]
 +        .createInstance(Components.interfaces.nsIFileProtocolHandler);
 +    rv = ph.getFileFromURLSpec(aPath).path;
 +    return rv;
 +}</code>
 +
 +
 +
  
 ===== Чтение из файла ===== ===== Чтение из файла =====
  
  
-<code js>function getContents(aURL){+<code javascript>function getContents(aURL){
   var ioService=Components.classes["@mozilla.org/network/io-service;1"]   var ioService=Components.classes["@mozilla.org/network/io-service;1"]
     .getService(Components.interfaces.nsIIOService);     .getService(Components.interfaces.nsIIOService);
Строка 24: Строка 74:
 }catch(e){alert(e)} }catch(e){alert(e)}
 </code> </code>
 +
 +===== Запись в файл =====
 +
 +<code js>function doXmlStuff () {
 +   var somefile = chromeToPath("chrome://path/to/file");
 +   var xmlDoc;
 +   var file = Components.classes["@mozilla.org/file/local;1"]
 +         .createInstance(Components.interfaces.nsILocalFile);
 +   file.initWithPath(somefile);
 +   if (!(file.exists())) {
 +      var fcStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
 +         .createInstance(Components.interfaces.nsIFileOutputStream);
 +      fcStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
 +
 +      var data = '<xml><rootnode></rootnode>';
 +      fcStream.write(data,data.length);
 +      fcStream.close
 +   }
 +
 +   xmlDoc = document.implementation.createDocument("","",null);
 +   xmlDoc.load("chrome://piratequesting/content/trainingLog.xml");
 +   xmlDoc.onload = function () {
 +      xmlDoc.documentElement.appendChild(....whatever you want to append....);
 +      var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
 +                         .createInstance(Components.interfaces.nsIFileOutputStream);
 +      //clear the file for writing the new doc
 +      foStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // write, create, truncate
 +      var ser = new XMLSerializer();
 +      //write the serialized XML to file
 +      ser.serializeToStream(xmlDoc, foStream, "");
 +      foStream.close();   
 +   }
 +}</code>
software/firefox-xpi-programming/0ther.1264752759.txt.gz · Последнее изменение: 2017/03/23 21:57 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki