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

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


software:firefox-xpi-programming:0ther

Разные куски кода

Настройки: Чтение-запись

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

Read Chrome files

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

Чтение из файла

function getContents(aURL){
  var ioService=Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService);
  var scriptableStream=Components
    .classes["@mozilla.org/scriptableinputstream;1"]
    .getService(Components.interfaces.nsIScriptableInputStream);

  var channel=ioService.newChannel(aURL,null,null);
  var input=channel.open();
  scriptableStream.init(input);
  var str=scriptableStream.read(input.available());
  scriptableStream.close();
  input.close();
  return str;
}

try{
  alert(getContents("chrome://browser/content/browser.css"));
}catch(e){alert(e)}

Запись в файл

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();   
   }
}
software/firefox-xpi-programming/0ther.txt · Последнее изменение: 2017/03/23 21:59 — 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki