xul + sqlite

xulでurlとサイト名を入力してsqliteにデータを格納するところまでは、 まあまあ簡単だった。 一応今回の目標はデータをローカルのHDDに保存することなので、 目的は達したのだが時間的余裕もあったので欲が出た。

リンク集みたいなリストを作ろうと思ったのだが、 HTMLをXULでじか書きしてもダメなのだった(爆)。 アンカータグはdocument.createElement('a')とか、 箇条書きは var ul = document.createElement('ul'); とか var li = document.createElement('li'); とかやって、 ul.appendChild(li); とかやらんといかんのでした。 ええっと、これはDOMとかDHTMLとかいうやつですか。 全然知らんかった。 でもはるか昔にXlibのウィンドウとかウィジェットとかプログラムしてたときと同じな感覚だった。 Java3Dなんかのscenegraphにも通じるもんがあるような。

でも結局ulとかliとかaとかのタグをXULの中で作ろうとしても全然うまくいかん。 普通のJavaScriptで書けばすかっとうまく行くので必死でネット検索したら、 ちょっとした注意点集 のようなものをみつけまして。

ははあ、XULとHTMLは必ずしも同じではないんで、 document.createElement()ではなく、 HTMLの名前空間指定して document.createElementNS() で要素を作りなさいっつーことですか。 そんなの気づかないですよ普通。 ていうかそのくらい統合して当然じゃねえのかと。 不便だろ。 なんか間違ってますか。

で、なんとかできた。 画像だけ貼ってる書きかけのページ もあります。

DOM InspectorっていうアドオンでXULの階層構造調べたもの見ると、 windowとaでnamespaceが違っているのがわかりますよね。

SQLite Managerっていうアドオンでみると、たしかにsqltestというデータベースの中に siteというテーブルができていて、 idとnameとurlというカラムがあって、 いくつか行が登録されていることがわかりますね。

ソースコードこちら にあります。sqltest.media.t-kougei.ac.jpというフォルダの名前を sqltest$media.t-kougei.ac.jpという名前に変えて($はほんとは@)、 profileのextensionsのところに入れると動くと思いますがfirefoxのバージョンは3.0.xxのみ (install.rdfを書き換えれば3.5でもたぶん動くけどね)、 動作保証は一切しません(以下略)。

問題は、こんなことうだうだプログラミングして面白がる学生が芸術学部にどのくらいいるかってことなんだが。 いや、別に芸術学部には限らんがナ。 ネットを検索してみた限りではまだあまりはやってはいないネタのようだが。