2008年07月02日

Firefox3

Firefox3をインストールして2週間ほど使っていますが、今のところ大きい問題もなく快適です。

最新ブラウザ「Firefox 3」の新機能を見る 後編:スピード、セキュリティ、レンダリングの新機
の記事によれば、JavaScriptの処理速度が大幅にアップや、長時間使用したときのメモリ消費量を最小限に抑えるようになっているので、Firefox2より快適なようです。

メモリ利用率のアップに関してはFreeBSDのjemallocが採用されたことにより実現しているようです。
Firefox 3に採用されるFreeBSD技術

唯一の大きい問題はFlashのテキストフィールドに日本語を入力できないバグがあるということです。
既知の問題点(もじら組 Wiki)

Firefox3はFirefox2 とを共存させることもできるので、Flashの日本語入力の問題が気になる人は共存させておくのも一つの方法です。
Firefox 2 と Firefox 3 の共存方法(もじら組 Wiki)
posted by jun1 at 23:59| Comment(0) | TrackBack(0) | firefox

2008年04月10日

DOM要素のtextContentプロパティについて

firefox拡張機能でXMLドキュメントを利用する時、DOMを使用していますが、そのプログラミングで参考になるサイト

・Geck DOMのリファレンス (Mozilla Developer Center)
http://developer.mozilla.org/ja/docs/Gecko_DOM_Reference

・ノード参照時におけるエラーハンドリング手法を学ぼう
http://jibun.atmarkit.co.jp/lskill01/rensai/dom03/dom01.html

上記で発見したこと。
・DOMを介してXMLドキュメントの要素のテキストデータを取り出すとき、textContentプロパティを使用していました。しかし、textContentプロパティは指定した要素とその全ての子孫要素のテキストデータを返すのが正しい仕様でした。

続きを読む
posted by jun1 at 23:56| Comment(0) | TrackBack(0) | firefox

2008年04月06日

firefox拡張機能でXMLファイルの読み込み(2)

前回の続き。

前回のサンプルプログラムでは、XMLデータを処理する箇所にXPathEvaluatorを使用していましたが、XPathEvaluatorでは取り出すデータの指定に、XPathを使用する必要があります。しかし、XPathはまだ良く理解していないので、テスト用に、取り出すデータが要素の場合と、属性の場合の2つの簡単なサンプルを作成しました。
続きを読む
posted by jun1 at 01:45| Comment(0) | TrackBack(0) | firefox

2008年04月05日

firefox拡張機能でXMLファイルの読み込み

Firefox拡張機能でローカルマシンのXMLファイルを利用したかったので調べてみました。

ネットで調べた結果、XMLHttpRequestを利用するのが一番良さそうだったので、簡単なテストプログラムを作成してみました。続きを読む
posted by jun1 at 01:05| Comment(0) | TrackBack(0) | firefox

2008年02月12日

firefox拡張機能開発メモのまとめ

Firefox拡張機能の開発に関するメモを整理して少しまとめました。

開発した拡張機能のXPIファイル化

拡張機能プログラミングのメモ
posted by jun1 at 00:43| Comment(0) | TrackBack(0) | firefox

2007年09月26日

拡張機能の開発の準備についてのまとめ

拡張機能の開発を行う前に、開発用のプロファイルを作成したり、開発用ディレクトリの作成するので、それらをまとめてみました。

http://www.aji.sakura.ne.jp/firefox/extension_prepare.html

posted by jun1 at 23:36| Comment(0) | TrackBack(0) | firefox

2007年09月20日

firefox拡張機能のxpiファイル化の簡略

開発中のfirefoxの拡張機能をXPI形式にする場合、chrome.manifestファイルの修正が必要だったりと手間がかかります。そこで、antを使用してXPIファイルの作成を簡略化します。

まず、antではbuild.xmlファイルが必要なので、これを開発中の拡張機能のトップディレクトリ(install.rdf等が有る場所)に作成します。
<?xml version="1.0" ?>
<project default="xpi">
<property name="extension_name" value="extname" />
<property name="desdir" location="." />

<property name="chromefile" value="chrome/${extension_name}.jar" />
<target name="jar">
<delete file="${chromefile}" />
<zip destfile="${chromefile}"
basedir="chrome"
/>
</target>

<target name="xpi" depends="jar">
<copy file="chrome.manifest" tofile="chrome.manifest.tmp" />
<copy file="xpi_chrome.manifest" tofile="chrome.manifest" overwrite="true" />
<zip destfile="${desdir}/${extension_name}.xpi"
update="false"
basedir="${desdir}"
includes="${chromefile}, chrome.manifest, install.rdf"
/>

<copy file="chrome.manifest.tmp" tofile="chrome.manifest" overwrite="true" />
<delete file="chrome.manifest.tmp" />
<delete file="${chromefile}" />
</target>
</project>
注. <property name="extension_name" value="extname" />
のvalueの値、"extname"は目的の拡張機能の名前に変更します。

次にファイルchrome.manifestのXPI用を作成します。chrome.manifestは開発用とXPIファイル用で異なりますので、XPI専用のchrome.manifestファイルをファイル名を"xpi_chrome.manifest"として作成します。
注. 上記のbuild.xmlではXPIファイルを作成する場合、XPIファイルの作成前にchome.manifestファイルの複製ファイルchrome.manifest.tmpを作成し、chrome.manifestをxpi_chrome.manifestで上書きします。その後、XPIファイルを作成、chrome.manifestをchrome.manifest.tmpで上書きして元に戻します。

続いて、antを簡単に実行できるようバッチファイルを作成します。(Windows用)バッチファイル名はxpi.batとでもして、中身は以下のようにします。
cmd.exe /K ant

ただし、この例では環境変数にJavaやantのパスをデフォルトで設定しておく必要があります。設定していない場合は、必要なパスを
[マイコンピュータのプロパティ] -> [詳細] -> [環境変数]
で設定します。

その結果、開発中の拡張機能のディレクトリには以下のようになります。
・chrome[ディレクトリ]
・install.rdf
・chrome.manifest
・xpi_chrome.manifest
・build.xml
・xpi.bat
注. この例ではchromeディレクトリの下にcontent、locale等のディレクトリを置いています。

XPIファイルを作成したい場合、エクスプローラ等からxpi.batを実行します。そうするとbuild.xmlファイルと同じディレクトリにXPIファイルが作成されます。
posted by jun1 at 23:03| Comment(0) | TrackBack(0) | firefox

2007年09月14日

2007年09月09日

firefox拡張機能でスタイルシートを扱うクラス

http://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service”のページより、拡張機能でスタイルシートを扱うクラスを作成。これにより拡張機能で状況に応じてスタイルシートを自由に変更することができます。 

function Stylesheet() {
this.sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
.getService(Components.interfaces.nsIStyleSheetService);
this.ios = Components.classes["@mozilla.org/network/io-service;1"]
.getService(Components.interfaces.nsIIOService);
}

Stylesheet.prototype = {
// fname
// e.g chrome://myext/content/test.css
// file:///c:/myext/css/test.css
registerUserSheet: function(fname) {
this.registerSheet(fname, this.sss.USER_SHEET);
},

unregisterUserSheet: function(fname) {
this.unregisterSheet(fname, this.sss.USER_SHEET);
},

registerAgentSheet: function(fname) {
this.registerSheet(fname, this.sss.AGENT_SHEET);
},

unregisterAgentSheet: function(fname) {
this.unregisterSheet(fname, this.sss.AGENT_SHEET);
},

registerSheet: function(fname, type) {
var uri = this.ios.newURI(fname, null, null);
if(!this.sss.sheetRegistered(uri, type)) {
this.sss.loadAndRegisterSheet(uri, type);
}
},

unregisterSheet: function(fname, type) {
var uri = this.ios.newURI(fname, null, null);
if(this.sss.sheetRegistered(uri, type)) {
this.sss.unregisterSheet(uri, type);
}
}
} // end of prototype
posted by jun1 at 01:31| Comment(0) | TrackBack(0) | firefox

2007年09月07日

firefox拡張機能でページロード時に何かする

拡張機能で、ページがロードされるたびに何か処理を行いたい場合は、次のようにonpageshowイベントを使用します。
function onPs() {
// 何か処理
}
window.addEventListener("pageshow", onPs, false);

イベントハンドラを解除する場合は、次のようにします。
window.removeEventListener("pageshow", onPs, false);


参考ページ
http://developer.mozilla.org/ja/docs/Using_Firefox_1.5_caching

http://my.opera.com/hallvors/blog/2007/03/14/firefoxs-pageshow-and-pagehide-events-not-dom2-events-compatible
posted by jun1 at 00:36| Comment(0) | TrackBack(0) | firefox

2007年09月02日

Mozillaに新しいプロトコルを追加する

Mozillaに新しいプロトコルを追加するを解説したページがありました。
http://nexgenmedia.net/docs/protocol/

上記を日本語訳したのを公開していたページ
http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-03-26_protocol.htm

posted by jun1 at 12:04| Comment(0) | TrackBack(0) | firefox

2007年08月30日

firefox拡張機能のユニークIDの生成

拡張機能を開発する場合、ユニークなIDが必要で、そのIDはGUID(Global Unique Identifier)というものを利用しているそうです。

http://extensions.roachfiend.com/cgi-bin/guid.pl

上記のURLにアクセスするとGUIDを表示してくれますので、これを新しく開発する拡張機能のinstall.rdfの<em:targetApplication>の<em:id>エレメントに指定します。

追加
http://developer.mozilla.org/ja/docs/Generating_GUIDs

http://developer.mozilla.org/ja/docs/Creating_a_Skin_for_Firefox:UUID

注意
install.rdfのtargetApplicationのIDはアプリケーションごとに決まり、firefoxの拡張機能の場合は{ec8030f7-c20a-464f-9b0e-13a3a9e97384}となります。

参考サイト
http://developer.mozilla.org/en/docs/install.rdf

https://addons.mozilla.org/en-US/firefox/pages/appversions
posted by jun1 at 21:16| Comment(0) | TrackBack(0) | firefox

2007年08月27日

CentOSでのデバッグ版firefoxのbuild

必要なツールのインストールを行ったあと、firefox2.0.0.6のソースを展開してディレクトリmozillaに移動し、以下のようなファイル”.mozconfig”を作成します。
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --enable-application=browser
ac_add_options --disable-optimize
ac_add_options --enable-debug
ac_add_options --enable-shared
ac_add_options --disable-tests
ac_add_options --enable-default-toolkit=gtk2


その後、以下を実行します。
# ./configure --disable-installer
# make

注意
  • configureで Error --enable-application=API ... といエラーが発生する場合は、ac_add_options --enable-application=browserが指定されていません。



  • 参考サイト
    Build Document
    http://developer.mozilla.org/ja/docs/Build_Documentation

    Linux Build Prerequisites
    http://developer.mozilla.org/ja/docs/Linux_Build_Prerequisites

    Windows用のデバッグ版の作成
    http://developer.mozilla.org/ja/docs/Gecko_hacking_tutorial
    posted by jun1 at 23:48| Comment(0) | TrackBack(0) | firefox

    2007年08月26日

    firefox拡張機能でのスタイルシート

    firefox1.5以降で userContent.css ファイルや userChrome.css ファイルを使うことなくユーザスタイルシートや UA スタイルシートを 拡張機能 で切り替えたりすることができるようです。

    http://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service
    posted by jun1 at 11:19| Comment(0) | TrackBack(0) | firefox

    firefox拡張機能のデバッグ用設定

    firefoxの拡張機能でデバッグする場合、about:configで以下の設定をtrueに変更すると便利です。
    javascript.options.showInConsole
    javascript.options.strict
    nglayout.debug.disable_xul_cache
    browser.dom.window.dump.enabled

    参考 http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment

    firefoxにfirebugをインストールしているとabout:configで以下のように設定されているのが確認できます。
    extensions.firebug.showChromeErrors = false
    extensions.firebug.showChromeMessages = false

    これらをtrueに変更すると、Chrome内でのJavaScriptのエラーをfirebugのconsoleに出力してエラー内容の確認ができます。
    posted by jun1 at 11:05| Comment(0) | TrackBack(0) | firefox