SET-TIMER::25min
GLOBAL-ALIGN::left
ALIGN::center
CHAPTER::拡張機能を作ってみよう
[[EM:Part2]]
----
HEADER::拡張機能を作ってみよう
拡張機能を
作ってみよう
----
の
前に
----
コードの量が多いので
ここで入力するコードの
入力済みの物を用意しました
----
ALIGN::right
[[https://piro.sakura.ne.jp/xul/doc/|https://piro.sakura.ne.jp/xul/doc/fxdevcon2007summer/samples.zip]]
[[fxdevcon2007summer/samples.zip|https://piro.sakura.ne.jp/xul/doc/fxdevcon2007summer/samples.zip]]
----
タイピングが
追いつかない人は
こちらをどうぞ
----
ALIGN::CENTER
Phase 1
テスト用に
インストール
してみる
----
教科書
33ページ
----
必要な
ファイルを
用意する
----
install.rdf
chrome.manifest
content/overlay.xul
----
install.rdf
----
[[PRE:
helloworld@piro.sakura.ne.jp
2
Hello, World!
0.1
My first extension.
Piro
https://piro.sakura.ne.jp/helloworld/
{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
2.0
2.0.0.*
]]
01-install.rdf
----
別の書き方(意味は同じ)
[[PRE:
]]
----
chrome.manifest
----
[[PRE:
content helloworld content/
]]
----
[[PRE:
content helloworld content/
]]
file:///c:/extensions/helloworld/content/
↓
chrome://helloworld/content/
にバインドされる
----
[[EM:Chrome URL]]
・chrome://~ でアクセスされると
最初からUniversalXPConnect
特権がある状態になる
・環境非依存の絶対パスとして
使える
----
[[PRE:
overlay chrome://browser/content/browser.xul
chrome://helloworld/content/overlay.xul
]]
----
[[PRE:
overlay chrome://browser/content/browser.xul
chrome://helloworld/content/overlay.xul
]]
browser.xulに
と書くのと同じ効果
----
全体
[[PRE:
content helloworld content/
overlay chrome://browser/content/browser.xul chrome://helloworld/content/overlay.xul
]]
02-chrome.manifest
----
overlay.xul
----
[[PRE:
]]
03-overlay.xul
----
試しに
インストール
してみよう
----
テスト
インストール
----
1. ポインタファイルを作る
2. プロファイルフォルダへ移動
3. Firefox再起動
4. (゚д゚)ウマー
----
[[EM:ポインタファイル]]
----
helloworld@piro.sakura.ne.jp
という名前の
[[EM:テキストファイル]]
----
内容
[[PRE:
C:\extensions\helloworld
]]
04-helloworld@piro.sakura.ne.jp
----
プロファイル内の
extensionsフォルダ
に移動
----
やって
みよう
----
Firefox
再起動
----
ALIGN::CENTER
Phase 2
時計機能を実装
----
教科書
35ページ
----
overlay.xul
----
menuitemに
oncommand
イベントハンドラで
挙動を記述する
----
oncommand="window.openDialog(
'chrome://helloworld/content/clock.xul',
'Clock','chrome,centerscreen,modal');"
----
全体
[[PRE:
]]
05-overlay.xul
----
clock.xul
----
[[PRE:
]]
06-clock.xul
----
clock.js
----
[[PRE:
function initClock() {
showCurrentTime();
window.setInterval(showCurrentTime, 1000);
}
function showCurrentTime() {
var textbox = document.getElementById('currentTime');
textbox.value = new Date().toLocaleTimeString();
textbox.select();
}
]]
07-clock.js
----
Firefox
再起動
----
動かして
みよう
----
ALIGN::CENTER
CHAPTER::国際化
FOOTER::国際化
Phase 3
国際化
----
教科書
36ページ
----
現在:英語のみ
↓
理想:日本語と英語の
自動切り替え
----
言語リソースを
分離してみよう
----
1. 国際化したい部分を特定
2. localeパッケージを作成
3. chrome.manifestを修正
4. localeを使うようにXULを修正
5. (゚д゚)ウマー
----
1
----
国際化したい
部分を特定
----
今のclock.xul
[[PRE:
]]
----
日本語化したclock.xul
[[PRE:
]]
----
変わる部分が
国際化の対象
----
2
----
locale
パッケージ
を作成
----
locale/en-US/locale.dtd
locale/ja-JP/locale.dtd
を追加
----
locale/en-US/locale.dtd
[[PRE:
]]
08-locale.dtd.en-US
抽象的な名前と実際の文字列のペアの定義
----
locale/ja-JP/locale.dtd(UTF-8)
[[PRE:
]]
09-locale.dtd.ja-JP
抽象的な名前と実際の文字列のペアの定義
----
3
----
chrome.manifest
を修正
----
chrome.manifest に
[[PRE:
locale helloworld en-US locale/en-US/
locale helloworld ja-JP locale/ja-JP/
]]
を追記
----
[[PRE:
locale helloworld en-US locale/en-US/
locale helloworld ja-JP locale/ja-JP/
]]
locale/en-US/ または locale/ja-JP/
↓
chrome://helloworld/locale/
にバインドされる
----
全体
[[PRE:
content helloworld content/
overlay chrome://browser/content/browser.xul
chrome://helloworld/content/overlay.xul
locale helloworld en-US locale/en-US/
locale helloworld ja-JP locale/ja-JP/
]]
10-chrome.manifest
----
4
----
localeを
使うように
clock.xul
を修正
----
ヘッダ部
[[PRE:
]]
を追加
----
文字列部分を
dtdファイルで
定義した名前に
置き換える
----
[[PRE: