定番のHello Worldです. 右クリックメニューにHello Worldを追加して,選択するとダイアログボックスを表示します.
helloworld.xpiを一度ダウンロードしてからアドオンのリストにドロップしてください.
[helloworld.xpi] + install.rdf + chrome.manifest + [chrome] + [content] | - helloworld.xul | - helloworld.js | - about.xul + [locale] + [en-US] | - helloworld.dtd + [ja-JP] - helloworld.dtd
インストールのためのファイルです.
各タグの詳細はinstall.rdfの詳細を参考にしてください.
<?xml version="1.0"?> <RDF:RDF xmlns:em="http://www.mozilla.org/2004/em-rdf#" xmlns:NC="http://home.netscape.com/NC-rdf#" xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <RDF:Description RDF:about="urn:mozilla:install-manifest"> <em:id>helloworld@serikashiki.kis-lab.com</em:id> <em:type>2</em:type> <em:name>helloworld</em:name> <em:version>0.1.0.0</em:version> <em:targetApplication> <RDF:Description em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" em:minVersion="2.0.0.0" em:maxVersion="2.*" /> </em:targetApplication> <em:description>Show HelloWorld Dialog</em:description> <em:creator>Serika</em:creator> <em:homepageURL>http://www.kis-lab.com/serikashiki/</em:homepageURL> </RDF:Description> </RDF:RDF>
chromeの登録ファイルです.
各タグのエントリはchrome.manifestの詳細を参考にしてください.
content helloworld chrome/content/ locale helloworld en-US chrome/locale/en-US/ locale helloworld ja-JP chrome/locale/ja-JP/ overlay chrome://browser/content/browser.xul chrome://helloworld/content/helloworld.xul
ここでは,右クリックメニューにダイアログを表示するためのメニューを追加します.
01: <?xml version="1.0"?> 02: <!DOCTYPE overlay SYSTEM "chrome://helloworld/locale/helloworld.dtd"> 03: <overlay id="helloworld" 04: xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 05: xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 06: 07: <script type="application/x-javascript" src="helloworld.js"></script> 08: 09: <popup id="contentAreaContextMenu"> 10: <menuseparator id="helloworld-sep" hidden="true" /> 11: <menuitem id="helloworld-about" 12: label="&helloworldMenu.label;" 13: oncommand="openHelloworldDialog()" /> 14: <menuseparator id="helloworld-sep-end" hidden="true" /> 15: </popup> 16: 17: </overlay>
簡単な説明はこちら
02: ローカライズされたdtdファイルを読み込み 03: idをhelloworldとしたオーバーレイを定義 07: メニューを選択したときに実行するためのJavaScriptのロード ここでは,ファイルを指定して読み込ませていますが,この中に埋め込んでしまっても問題はありません. 09: idがcontentAreaContextMenuというポップアップを指定 10: idがhelloworld-sepというセパレータを追加.ただし,表示はしない(hidden="true"). 11: idがhelloworld-aboutというメニュー項目を追加. 12: ラベルはDTDで定義されているhelloworldMenu.labelという項目 13: 選択されたとき,openHelloworldDialog()を呼び出す 14: idがhelloworld-sep-endというセパレータを追加.ただし,表示はしない(hidden="true").
メニューが選択されたときの関数を定義しています.
ここでは単純に指定されたURLを開くようにしています.
function openHelloworldDialog() { window.open("chrome://helloworld/content/about.xul", "About", "chrome,dialog,centerscreen"); }
ここでは,helloworldダイアログを定義しています.
もともとaboutダイアログを作るつもりだったので,aboutって名前がちらほらと残っています(汗)
01: <?xml version="1.0" encoding="UTF-8"?> 02: <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 03: <dialog id="genericAbout" 04: title="Hello world" 05: chromehidden="menubar toolbar location directories status extrachrome" 06: buttons="accept" 07: xmlns:em="http://www.mozilla.org/2004/em-rdf#" 08: xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 09: <vbox id="clientBox"> 10: <description id="Description">Hello World!</description> 11: <separator class="thin"/> 12: <hbox> 13: <label id="Creater">serika</label> 14: <spacer flex="1"/> 15: <label id="Homepage">http://www.kis-lab.com/serikashiki/</label> 16: </hbox> 17: </vbox> 18: </dialog>
簡単な説明はこちら
04: 作成するダイアログのタイトルを指定
05: 表示しない項目を指定
06: 表示するボタンを指定
09: idがclientBoxという縦方向の箱を用意.
タグが閉じられるまでの内容が縦方向に詰めて入れられます.
10: descriptionタグ(勝手に命名)を定義し,Hello World!という文字を表示
11: 細い線(thin)のセパレータを表示
12: 横方向の箱を用意.
タグが閉じられるまでの内容が横方向に詰めて入れられます.
13: idがCreaterのラベルを作成.
14: 空白を定義.
flex=1にしておくと,空白の大きさがフレキシブルに決められます.
すべての要素が均等になるように詰め込まれます.
15: idがHomepageのラベルを作成
スタイルファイルを作っていないのでセパレータなどは実際には表示されません(汗)
言語設定がen-USの場合のラベルなどを定義します
<!ENTITY helloworld "helloworld"> <!ENTITY helloworld.version "1.0"> <!ENTITY helloworldMenu.label "about helloworld">
言語設定がja-JPの場合のラベルなどを定義します
<!ENTITY helloworld "helloworld"> <!ENTITY helloworld.version "1.0"> <!ENTITY helloworldMenu.label "はろーわーるど">