これは、元の記事の部分的な翻訳です。
これは私の記事ではなく、私の友人です(彼の小さな男:templar8@gmail.com)。
エントリー
このチュートリアルは、簡単な拡張機能を作成する方法を順を追って説明しています。 ステータスバーに「Hello、World!」というフレーズを含む別の小さなパネルを追加しようとします。
環境の準備
拡張機能は、zipファイルまたはXPI拡張機能付きパッケージとしてパッケージ化および配布されます。
一般的なXPIファイルの内部構造の例を次に示します。
exampleExt.xpi:
/install.rdf
/components/*
/components/cmdline.js
/defaults/
/defaults/preferences/*.js
/plugins/*
/chrome.manifest
/chrome/icons/default/*
/chrome/
/chrome/content/
このようなディレクトリ構造を作成する必要があります。 最初に、拡張機能のルートディレクトリを作成します(たとえば、
C:\extensions\my_extension\
または
~/extensions/my_extension/
)。 このディレクトリ内に、
content
ディレクトリを作成する
chrome
ディレクトリを作成し
content
。
拡張機能のルートディレクトリで、名前が
chrome.manifest
および
install.rdf
2つの空のテキストファイルを作成します。 結果は、次の形式のディレクトリ構造になります。
<ext path>\
install.rdf
chrome.manifest
chrome\
content\
環境の設定に関する追加情報は、このリンクで見つけることができます。
インストールスクリプト
install.rdfファイルを開き、次のテキストを追加します。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- <? xml バージョン = "1.0" ? >
- < RDF xmlns = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:em = "http://www.mozilla.org/2004/em-rdf#" >
- < 説明 = "urn:mozilla:install-manifest" >
- < em:id > sample@example.net </ em:id >
- < em:バージョン > 1.0 </ em:バージョン >
- < em:タイプ > 2 </ em:タイプ >
- <!-この拡張機能をインストールできるターゲットアプリケーション、
- サポートされている最小バージョンと最大バージョン。 ->
- < em:targetApplication >
- < 説明 >
- < em:id > {ec8030f7-c20a-464f-9b0e-13a3a9e97384} </ em:id >
- < em:minVersion > 1.5 </ em:minVersion >
- < em:maxVersion > 3.0。* </ em:maxVersion >
- </ 説明 >
- </ em:targetApplication >
- <!-フロントエンドメタデータ->
- < em:name >サンプル</ em:name >
- < em:説明 >テスト拡張機能</ em:説明 >
- < em:creator >ここにあなたの名前</ em:creator >
- < em:homepageURL > www.example.com </ em:homepageURL >
- </ 説明 >
- </ RDF >
- sample@example.net-拡張機能ID。 この値は電子メールアドレスの形式で記述され、拡張子を識別するために必要です(電子メールアドレスであってはなりません)。 ユニークにします。 GUIDを使用することもできます。 注:このパラメーターは電子メールアドレスの形式で記述されていますが、有効である必要はありません。 (example.example.example)
- パラメーター
<em:type>2</em:type>
-2は、これが拡張機能であることを示します。 テーマの場合、この値は4に設定する必要があります(すべてのタイプコードはここにあります )。
- {ec8030f7-c20a-464f-9b0e-13a3a9e97384}-FirefoxのID( おおよその翻訳。Thunderbirdには別の値があるようです)。
- 1.5 -Firefoxのバージョンが機能するために最低限必要な拡張子の数。 minVersionを示すために*文字を使用しないでください。予期しない結果が生じる可能性があります。
- 3.0。* -拡張機能が動作するFirefoxの最大バージョン番号。 現在、この値はブラウザの最新バージョンよりも新しい値であってはなりません! この場合、「3.0。*」は、拡張機能がFirefox 3.0およびバージョン3.0.xで動作することを示します。
(install.rdfが間違っているというメッセージが表示された場合、このファイルをFirefoxにアップロードすると便利です(ファイル->ファイルを開く...)。その後、ブラウザにxmlエラーが表示されます。私の場合、「<?Xml」の前にスペースがありました)
Firefox 2.0.0.xで動作するように作成された拡張機能は、「2.0.0。*」の最大バージョンとして指定する必要があります。 Firefox 1.5.0.x-"1.5.0。*"で動作するように作成された拡張機能用。
必須およびオプションのインストールスクリプトパラメータのリストは、 ここにあります 。
ファイルを保存します。
XULを使用したブラウザ拡張
Firefoxユーザーインターフェイスは、XULとJavaScriptを使用して記述されています。 XULは、ボタン、メニュー、コントロールパネル、ツリーなどのユーザーインターフェイス要素を作成できるXMLの亜種です。 すべてのユーザーアクションはJavaScriptを使用して処理されます。
ブラウザを「拡張」するために、ウィジェット(コントロール)を追加または変更して、Firefoxユーザーインターフェイスの個々の部分を変更します。 ブラウザーウィンドウに新しいXUL DOM要素を追加してウィジェットを追加し、スクリプトとイベント処理を使用してウィジェットの動作を制御します。
ブラウザーインターフェースは
browser.xul
ファイルで定義されています(
$FIREFOX_INSTALL_DIR/chrome/browser.jar
は
content/browser/browser.xul
が含まれてい
content/browser/browser.xul
)
browser.xul
には、次のようなステータスバーの説明があります。
*このソースコードは、 ソースコードハイライターで強調表示されました。
- < statusbar id = "status-bar" >
- ... < statusbarpanel > ...
- </ ステータスバー >
<statusbar id="status-bar">
は、XULレイヤーの「タイポイント」です。
XULレイヤー
XULレイヤーは、ウィジェットをXULドキュメントに追加する方法です。 XULレイヤーは、「メイン」ドキュメント内のタイポイントを記述するXULフラグメントを定義する.xulファイルです。 これらのフラグメントは、追加、削除、または変更されるウィジェットを示すことができます。
XULレイヤードキュメントの例
*このソースコードは、 ソースコードハイライターで強調表示されました。
- <? xml バージョン = "1.0" ? >
- < オーバーレイ ID =「サンプル」
- xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" >
- < statusbar id = "status-bar" >
- < statusbarpanel id = "my-panel" label = "Hello、World" />
- </ ステータスバー >
- </ オーバーレイ >
idが「
status-bar
」に等しい
<statusbar>
は、要素を追加するブラウザーウィジェットを指します。
<statusbarpanel>
は、追加する新しいウィジェットです。
このコードを
chrome/content
ディレクトリの
sample.xul
ファイル
sample.xul
保存します。
Chrome URI
XULファイルは、いわゆる 「 Chromeパッケージ 」
chrome://
形式のURIを介してロードされたユーザーインターフェイス要素のパッケージ。 フォーム
file://
URIを使用してインターフェイスを読み込む代わりに
file://
(さらに、Firefoxの場所はプラットフォームとシステムによって異なる場合があります)、Mozilla開発者はインストールされたすべてのアプリケーションがアクセスできる新しい種類のURIを作成することにしましたXULコンテンツ。
ブラウザウィンドウのURIは
chrome://browser/content/browser.xul
です。 FirefoxのアドレスバーにこのURLを入力してください。
Chrome URIはいくつかの部分で構成されています:
- 1st — FirefoxネットワークライブラリにChrome URIであることを伝えるプロトコル(
chrome
)。
- 2nd —一連のユーザーインターフェイスコンポーネントを指すパッケージの名前(この例では
browser
)。 アプリケーションでは、他の拡張機能との競合を避けるために、この部分は一意である必要があります。
- 3番目—要求されたデータのタイプ。 3つのタイプがあります:
content
(XUL、JavaScript、XBL接続、およびアプリケーションユーザーインターフェイスの他のコンポーネント)、locale
(DTD、ユーザーインターフェイスローカリゼーション文字列を含む他のファイルを含むことができる.propertiesファイル)およびskin
(CSSおよびテーマ画像) 。
- 最後の部分は、ダウンロードしたファイルへのパスです。
たとえば、
chrome://foo/skin/bar.png
は、
foo
テーマのスキンセクションから
chrome://foo/skin/bar.png
ファイルをロードします。
Chrome URIを使用して何かをダウンロードすると、FirefoxはChromeレジストリ(Chromeレジストリ)を使用して、このURIをディスク上の(またはJARアーカイブ内の)ファイルへの実際のパスに変換します。
Chromeマニフェストの作成
Chromeマニフェストとそのすべての機能の詳細については、 リファレンスガイドをご覧ください。
拡張機能のルートディレクトリに作成されたchrome.manifestファイルを開きます。 次のコードを追加します。
content sample chrome/content/
( 最後のスラッシュ「/」を忘れないでください!これがないと、パッケージは登録されません。)
各要素を分析しましょう:
- パッケージタイプクローム
- パッケージ名chrome(バージョン2以前のFirefox / Thunderbirdは大文字と小文字が混在する名前をサポートしていないため、小文字にする必要があります- バグ132183 )
- クロムパッケージファイルのホスト
これは、 サンプルパッケージファイルが
chrome.manifest
ファイルの場所に対して
chrome/content
ディレクトリにあることを
chrome.manifest
ます。
コンテンツ、ローカライズ、およびスキンファイルは、それぞれchromeサブディレクトリのコンテンツ、ロケール、およびスキンディレクトリ内になければならないことに注意してください。
ファイルを保存します。 これで、拡張機能を使用してFirefoxを起動すると(これを行う方法については以下で説明します)、chromeパッケージが登録されます。
レイヤー登録
次に、レイヤーをブラウザーウィンドウにリンクする必要があります。 これを行うには、
chrome.manifest
ファイルに次の行を追加します。
overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul
これらの2行は、
browser.xul
ロード中に
sample.xul
と
browser.xul
をリンクするようFirefoxに指示します。
テスト中
まず、Firefoxに拡張機能を伝える必要があります。 Firefoxバージョン2以降の開発段階では、新しい拡張機能の取得元を指定でき、ブラウザは再起動するたびにダウンロードします。
- ホームディレクトリに移動してから、作業するFirefoxプロファイルを含むディレクトリに移動します(例:
Firefox/Profiles/<profile_id>.default/
)。
-
extensions/
ディレクトリに移動し、存在しない場合は作成します。
- テキストファイルを作成し、拡張子(たとえば、
C:\extensions\my_extension\
または~/extensions/my_extension/
)を~/extensions/my_extension/
ディレクトリへのフルパスを入力します。 Windowsユーザーはスラッシュの方向に注意する必要があります;末尾のスラッシュを追加し、末尾のスペースをすべて削除してください。
- 拡張子idを名前としてファイルを保存します(たとえば、sample @ example.net)。 ファイル拡張子はありません。
これで、すべてのテストの準備が整いました。
Firefoxを起動します。 テキストリンクによるFirefoxは、拡張機能を含むディレクトリを見つけてインストールします。 ブラウザを起動すると、ステータスバーの右側に「Hello、World!」というメッセージが表示されます。
.xulファイルにいくつかの変更を加え、Firefoxを再起動すると、すぐに結果を確認できます。
パッケージ作成
拡張機能が機能するようになったので、後で配布およびインストールするためのパッケージを作成できます。
zipアーカイバを使用して、ディレクトリの内容を拡張子(拡張子ディレクトリではなく)で圧縮し、アーカイブ拡張子を.zipから.xpiに変更します。
あなたが 'Extension Builderの誇りに思う所有者なら、彼はあなたのためにすべての汚い仕事をすることができます(ツール-> Extension Developer-> Extension Builder)。 拡張機能があるディレクトリに移動し、[拡張機能を構築]ボタンをクリックします。 この拡張機能には、開発を容易にする多くのツールがあります。
次に、結果の.xpiファイルをサーバーにアップロードし、そのタイプが
application/x-xpinstall
設定されていることを確認し
application/x-xpinstall
。 その後、拡張機能をダウンロードしてインストールできます。