拡張開発メモ
ローカルパスを色々と操作
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;
}
最終更新:2016年04月29日 11:22