Firefox3をインストールして2週間ほど使っていますが、今のところ大きい問題もなく快適です。
・最新ブラウザ「Firefox 3」の新機能を見る 後編:スピード、セキュリティ、レンダリングの新機
の記事によれば、JavaScriptの処理速度が大幅にアップや、長時間使用したときのメモリ消費量を最小限に抑えるようになっているので、Firefox2より快適なようです。
メモリ利用率のアップに関してはFreeBSDのjemallocが採用されたことにより実現しているようです。
・Firefox 3に採用されるFreeBSD技術
唯一の大きい問題はFlashのテキストフィールドに日本語を入力できないバグがあるということです。
・既知の問題点(もじら組 Wiki)
Firefox3はFirefox2 とを共存させることもできるので、Flashの日本語入力の問題が気になる人は共存させておくのも一つの方法です。
・Firefox 2 と Firefox 3 の共存方法(もじら組 Wiki)
2008年07月02日
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プロパティは指定した要素とその全ての子孫要素のテキストデータを返すのが正しい仕様でした。
続きを読む
・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プロパティは指定した要素とその全ての子孫要素のテキストデータを返すのが正しい仕様でした。
続きを読む
2008年04月06日
firefox拡張機能でXMLファイルの読み込み(2)
前回の続き。
前回のサンプルプログラムでは、XMLデータを処理する箇所にXPathEvaluatorを使用していましたが、XPathEvaluatorでは取り出すデータの指定に、XPathを使用する必要があります。しかし、XPathはまだ良く理解していないので、テスト用に、取り出すデータが要素の場合と、属性の場合の2つの簡単なサンプルを作成しました。
続きを読む
前回のサンプルプログラムでは、XMLデータを処理する箇所にXPathEvaluatorを使用していましたが、XPathEvaluatorでは取り出すデータの指定に、XPathを使用する必要があります。しかし、XPathはまだ良く理解していないので、テスト用に、取り出すデータが要素の場合と、属性の場合の2つの簡単なサンプルを作成しました。
続きを読む
2008年04月05日
firefox拡張機能でXMLファイルの読み込み
Firefox拡張機能でローカルマシンのXMLファイルを利用したかったので調べてみました。
ネットで調べた結果、XMLHttpRequestを利用するのが一番良さそうだったので、簡単なテストプログラムを作成してみました。続きを読む
ネットで調べた結果、XMLHttpRequestを利用するのが一番良さそうだったので、簡単なテストプログラムを作成してみました。続きを読む
2008年02月12日
2007年09月29日
2007年09月26日
拡張機能の開発の準備についてのまとめ
拡張機能の開発を行う前に、開発用のプロファイルを作成したり、開発用ディレクトリの作成するので、それらをまとめてみました。
http://www.aji.sakura.ne.jp/firefox/extension_prepare.html
http://www.aji.sakura.ne.jp/firefox/extension_prepare.html
2007年09月20日
firefox拡張機能のxpiファイル化の簡略
開発中のfirefoxの拡張機能をXPI形式にする場合、chrome.manifestファイルの修正が必要だったりと手間がかかります。そこで、antを使用してXPIファイルの作成を簡略化します。
まず、antではbuild.xmlファイルが必要なので、これを開発中の拡張機能のトップディレクトリ(install.rdf等が有る場所)に作成します。
の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とでもして、中身は以下のようにします。
ただし、この例では環境変数にJavaやantのパスをデフォルトで設定しておく必要があります。設定していない場合は、必要なパスを
[マイコンピュータのプロパティ] -> [詳細] -> [環境変数]
で設定します。
その結果、開発中の拡張機能のディレクトリには以下のようになります。
・chrome[ディレクトリ]
・install.rdf
・chrome.manifest
・xpi_chrome.manifest
・build.xml
・xpi.bat
注. この例ではchromeディレクトリの下にcontent、locale等のディレクトリを置いています。
XPIファイルを作成したい場合、エクスプローラ等からxpi.batを実行します。そうするとbuild.xmlファイルと同じディレクトリにXPIファイルが作成されます。
まず、antではbuild.xmlファイルが必要なので、これを開発中の拡張機能のトップディレクトリ(install.rdf等が有る場所)に作成します。
注. <property name="extension_name" value="extname" /><?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>
の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ファイルが作成されます。
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
2007年09月07日
firefox拡張機能でページロード時に何かする
拡張機能で、ページがロードされるたびに何か処理を行いたい場合は、次のようにonpageshowイベントを使用します。
イベントハンドラを解除する場合は、次のようにします。
参考ページ
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
function onPs() {
// 何か処理
}
window.addEventListener("pageshow", onPs, false);
// 何か処理
}
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
2007年09月02日
Mozillaに新しいプロトコルを追加する
Mozillaに新しいプロトコルを追加するを解説したページがありました。
http://nexgenmedia.net/docs/protocol/
上記を日本語訳したのを公開していたページ
http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-03-26_protocol.htm
http://nexgenmedia.net/docs/protocol/
上記を日本語訳したのを公開していたページ
http://piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2007-03-26_protocol.htm
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
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
2007年08月27日
CentOSでのデバッグ版firefoxのbuild
必要なツールのインストールを行ったあと、firefox2.0.0.6のソースを展開してディレクトリmozillaに移動し、以下のようなファイル”.mozconfig”を作成します。
その後、以下を実行します。
# ./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
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
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
注意
参考サイト
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
2007年08月26日
firefox拡張機能でのスタイルシート
firefox1.5以降で userContent.css ファイルや userChrome.css ファイルを使うことなくユーザスタイルシートや UA スタイルシートを 拡張機能 で切り替えたりすることができるようです。
http://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service
http://developer.mozilla.org/ja/docs/Using_the_Stylesheet_Service
firefox拡張機能のデバッグ用設定
firefoxの拡張機能でデバッグする場合、about:configで以下の設定をtrueに変更すると便利です。
参考 http://developer.mozilla.org/en/docs/Setting_up_extension_development_environment
firefoxにfirebugをインストールしているとabout:configで以下のように設定されているのが確認できます。
これらをtrueに変更すると、Chrome内でのJavaScriptのエラーをfirebugのconsoleに出力してエラー内容の確認ができます。
javascript.options.showInConsole
javascript.options.strict
nglayout.debug.disable_xul_cache
browser.dom.window.dump.enabled
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
extensions.firebug.showChromeMessages = false
これらをtrueに変更すると、Chrome内でのJavaScriptのエラーをfirebugのconsoleに出力してエラー内容の確認ができます。