XUL > はじめてのFirefoxアドオンの作成
更新日
2012-05-01
広告
Firefoxのアドオンを作成する基本的な流れを紹介します。
- Firefoxのバージョンは 12.0
- Mozillaの公式サイト「XUL School」を参考にしました。
XUL Schoolでダウンロードできる xulschoolhello1.xpi をベースに、「右クリックで表示されるメニューに独自の項目を追加する」というアドオンを実装してみます。xulschoolhello1.xpiを解凍すると(解凍にはunzipを使います)、ディレクトリやファイルが生成されます。以下、編集が必要なファイルについて、説明します。
install.rdf
install.rdfは、アドオンの概要を定義するファイルです。xulschoolhello1.xpiにも含まれているので、それを流用して、必要な箇所だけ変更すると楽です。<?xml version="1.0"?> <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <Description about="urn:mozilla:install-manifest"> <em:id>{dc5e1990-2d4c-4463-b12e-459cfa69c503}</em:id> <!-- アドオンに固有のID --> <em:name>Right Click Sample</em:name> <!-- アドオンの名前 --> <em:description>hoge</em:description> <em:version>0.1</em:version> <em:creator>sweng.tips</em:creator> <em:homepageURL>http://sweng.web.fc2.com/</em:homepageURL> <em:type>2</em:type> <!-- 2のままでよい --> <!-- Mozilla Firefox --> <em:targetApplication> <Description> <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <em:minVersion>4.0</em:minVersion> <em:maxVersion>10.*</em:maxVersion> </Description> </em:targetApplication> </Description> </RDF>7行目のem:idの{}内の文字列はuuidgenコマンドの実行結果をコピーしました(固有のIDであればなんでもよいです)。<em:targetApplication>以下は、そのままでよいです。
chrome.manifest
chrome.manifestは、アドオンを構成する各種のファイルの場所を定義します。これも xulschoolhello1.xpi に含まれているものを流用すると楽です。
content rightclicksample content/ skin rightclicksample classic/1.0 skin/ locale rightclicksample en-US locale/en-US/ overlay chrome://browser/content/browser.xul chrome://rightclicksample/content/browserOverlay.xul
- アドオンは、contentと、skinと、localeという3種類のファイルから構成されます。1行目から3行目では、それぞれのファイルの名前空間(今回の例では rightclicksample としています)と、その配置場所を定義しています。
- また、アドオンは、「ウィンドウ」か「オーバーレイ」の、どちらかに分類されます。今回実装するアドオンは、右クリックした際に表示されるメニューなので「オーバーレイ」です。なので、5行目で、「ブラウザにオーバーレイするということ」と、「どういうふうにオーバーレイするかは、chrome://rightclicksample/content/browserOverlay.xul で定義するということ」を定義しています。
browserOverlay.xul
content/browserOverlay.xulでは、「右クリックで表示されるメニューに独自の項目を追加する」ということを、定義します。
<?xml version="1.0"?> <?xml-stylesheet type="text/css" href="chrome://global/skin/" ?> <?xml-stylesheet type="text/css" href="chrome://xulschoolhello/skin/browserOverlay.css" ?> <!DOCTYPE overlay SYSTEM "chrome://xulschoolhello/locale/browserOverlay.dtd"> <!-- ここまでは気にしなくてよい --> <overlay id="rightclicksample-browser-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="chrome://rightclicksample/content/browserOverlay.js" /> <popup id="contentAreaContextMenu"> <menuitem id="sample" label="right click sample" insertafter="context-bookmarkpage" oncommand="invokeAlert();"/> </popup> </overlay>
- overlay要素のid属性の値は、てきとうです。名前空間'http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul'は、overlay要素の中身がXULで記述されていることを示します。
- script要素は、JavaScriptファイルを指定します。ここで指定したJavaScriptファイルに、アドオンの詳細な処理を実装します。
- popup要素のid属性で「右クリックで表示されるメニュー」を指定します。さらにmenuitem要素で詳細を定義します。
- label属性で、メニューに追加する独自項目の名前(right click sample)を定義
- insertafter属性で、独自項目を追加する場所を定義
- oncommand属性で、独自項目を選択した際に実行する JavaScript の関数(invokeAlert)を定義
browserOverlay.js
content/browserOverlay.js では、browserOverlay.xul で定義した invokeAlert という関数を定義します。
function invokeAlert() { window.alert("right click sample!"); };ここでは、window.alertを呼び出すだけの関数としました。
インストール
編集したファイル群をパッケージングします。パッケージングにはzipを使います。.xpiという拡張子にすることで、Firefoxへのインストールが簡単になります。
$ zip -r rightclicksample.xpi chrome.manifest content install.rdf locale skinこれで作成したrighcclicksample.xpiを、Firefoxにドラッグ&ドロップしてください。インストールを要求するダイアログが表示されるはずです。アドオンを有効にするには、Firefoxの再起動が必要です。
再起動後に、Firefox上で右クリックすると、メニューの中に'right click sample'という項目が表示されるはずです。そして、この項目を選択すると、(invokeAlert関数が実行され、)アラートのダイアログが表示されるはずです。
アンインストール
アドオンをアンインストールするには、Firefoxの「ツール」から「アドオン」を選択します。すると「アドオンマネージャ」が開かれるはずです。左側にある「拡張機能」を選択すれば、インストールしているアドオンを一覧表示できます。不要なアドオンを選択して、削除してください。アンインストールを有効にするには再起動が必要です。
広告
お問い合わせは sweng.tips@gmail.com まで。