※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

拡張開発メモ

ローカルパスを色々と操作

nsIFile, nsIURI

ローカルパスからnsIFileを作成

Cu.import("resource://gre/modules/FileUtils.jsm");
var path = "C:\\temp\\sample.txt"; // ローカルパス文字列
var file = new FileUtils.File(path); 

URLからnsIURIを作成

Cu.import("resource://gre/modules/Services.jsm");
var url = "http://www.sample.com/"; // URL文字列
Services.io.newURI(url, null, null); 
Cu.import("resource://gre/modules/NetUtil.jsm");
var url = "http://www.sample.com/"; // URL文字列
NetUtil.newURI(url); 

nsIFileからnsIURIを作成

Cu.import("resource://gre/modules/Services.jsm");
var file = new FileUtils.File(xxxx); // nsIFile
Services.io.newFileURI(file); 
Cu.import("resource://gre/modules/NetUtil.jsm");
var file = new FileUtils.File(xxxx); // nsIFile
NetUtil.newURI(file); 

タイトルバー左のアイコンを独自の物にする


XPCOMを読み込む方法


label の value を書き換えるときは setAttribute を使う

<toolbarbutton>
    <tooltip id="mytooltip">
        <label value="test tooltip"/>
        <label value=""/>
    </tooltip>
</toolbarbutton>
上のような xul で、
var tooltip = document.getElementById('mytooltip');
tooltip.lastChild.value = 'test message';
みたいな事をしてみたら、Firefox 起動直後は大丈夫なのだが、ツールバーのカスタマイズ後では value がまったく書き換わらない状態になった。
(正確には、javascriptオブジェクトでは書き換わっているのだが、xulオブジェクトは書き換わっていない。)
tooltip.lastChild.setAttribute('value', 'test message');
と、setAttribute を使用すると問題なく動く。

イベント


SQLite

同期・基本
// sql はSQL文
var Cu = Components.utils;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/FileUtils.jsm");
var file = FileUtils.getFile("ProfD", ["sample.sqlite"]);
var dbConn = Services.storage.openDatabase(file);
var statement = dbConn.createStatement(sql);
statement.execute();
statement.finalize();
dbConn.close();
同期・パラメーター設定と結果の取得
var statement = dbConn.createStatement("SELECT * FROM table_name WHERE id = :row_id");
statement.params.row_id = 1234;
while (statement.executeStep()) {
    let value = statement.row.column_name;
}