Jetpack APIリファレンス
グローバル名前空間
Jetpack Featureのグローバル名前空間には、殆どの機能が含まれています。この名前空間は、ちょうどWebページのグローバル名前空間のように見えるように作られています。
XMLHttpRequest()
XMLHttpRequestは、URLベースでデータを取得する簡単な方法を提供します。詳細についてはリファレンスを参照してください。
WebでAjax通信などで使われる同名のXMLHttpRequestと異なり、このオブジェクトは異なったドメインへのアクセスも可能です。
Jetpackが標準で搭載しているjQueryを用いることで、更に非常にシンプルにXMLHttpRequestの機能をAPIとして使うことができます。これについてはjQueryのAjaxに関するドキュメント(本家[英語])を参照してください。
clearInterval
この関数は、通常のJavascriptにおけるwindow.clearIntervalと同様に動作します。
clearTimeout
この関数は、通常のJavascriptにおけるwindow.clearTimeoutと同様に動作します。
console
このオブジェクトは、デバッグのためにFirebugコンソールにメッセージを出力する目的で使われます。log, info, warn, errorといったメソッドを、メッセージの重要度の違いによって使い分けてください。これらの関数は全て、引数を幾つでも受け取り、全ての引数はログ出力されます。
次の例は、コンソールにログを出力させます。
console.log('Hello from the Jetpack feature', this); console.info('情報'); console.warn('警告'); console.error('エラー');
jQuery
jQueryは軽量なJavascriptライブラリです。jQueryオブジェクトは簡単に $ 関数としても使うことができます。
全てのAjaxリクエストは、jQueryによって提供されているクロスサイトで利用可能なXMLHttpRequestオブジェクトで行われています。
より詳細な情報は、jQuery本家(英語)もしくは、非公式ですがjQuery日本語リファレンスなどを参照してください。
jetpack
名前空間 “jetpack” は全てのJetpack Featureで利用可能な、Firefoxの機能にアクセスする主要なポイントになるものです。このAPIは、Mozillaプラットフォームへの後方互換の軽量な受付口として設計されています。これは、Jetpackライブラリを用いてFeatureを書けば、Firefoxがバージョンアップしてもコードを書き換える必要が無いことを意味します。
jetpack.notifications
最終的に、このオブジェクトはユーザへ簡単に通知を送る手段の全てになるでしょう。通知バー、透過メッセージ、Growls、ドアノブメッセージなどがここに集約されていきます。現在のところは、単純な通知機能だけです。
jetpack.notifications.show(options)
[オプション]
この関数はシンプルな通知メッセージを表示します。WindowsとLinuxではトースター通知で、MacのOS XであればGrowlメッセージ(インストールされていれば)になります。引数は1つで、通知文字列か、title, icon, bodyなどのプロパティを持つオブジェクトを受け取ります。iconを設定する場合、そのURLを渡す必要があります。
以下の例は、オブジェクト指定の場合です。
jetpack.notifications.show({ title: 'hai2u', body: 'o hai.', icon: 'http://www.mozilla.org/favicon.ico' });
jetpack.slideBar
このオブジェクトは、ブラウザ上のタブ左側にあるアイコンへマウスを近づけることで自動的に開閉する、Jetpackによって追加されたスライドバーに関するものです。Featureはアイコンを追加したり、追加コンテンツを表示するためにスライドバーを開いたり、ページに戻るためにスライドして閉じたりすることが出来ます。
このスライドバー機能は、現時点では実験的なものです。以下のコードでロードされます。
jetpack.future.import("slideBar");
jetpack.slideBar.append(options)
[オプション]
この機能はスライドバーにアイコンを追加します。スライドバーは、スライドバーアイコンにマウスが近づくと表示されます。ユーザがFeature毎のアイコンをクリックすると、そのFeatureは「選択状態」になり、例えば更に広いエリアにスライドバーを開き、Feature用のコンテンツを表示するなどの追加アクションを実行することが出来ます。
全てのコールバック関数は唯一の引数として、スライドバーの開閉に使われるslide()を受け取ることができます。slide()はslideBar.append関数のように、オプションオブジェクトを1つ受け取ります。このオプションはsizeとpersistという2種類のプロパティがあります。sizeはスライドバーが開くピクセル数です。persistはbool値で、trueの場合はユーザがマウスカーソルをスライドバーの外に出しても、自動的に閉じずに待機します。
slide()はプロパティオブジェクトで、2つの追加プロパティを持ちます。iconはスライドバー中のアイコンを指し、docはFeature用のドキュメントを指します。これらはリスナーを追加したり、動的にアイコンやドキュメントを変更する際に便利です。
スライドバーを閉じるには、引数を渡さずに単にslide()を呼ぶだけです。
次の例は、アイコンをクリックして選択すると一時的にスライドバーを広げ、広げられたコンテンツ部分をクリックするとスライドバーを開いたままにさせる機能をスライドバーに追加します。(閉じるには、スライドバーアイコンをクリックします) 更に、コンテンツがクリックされた際にFeatureのアイコンも変更します。
jetpack.future.import("slideBar"); jetpack.slideBar.append({ onSelect: function(slide) slide({ size: 100 }), onReady: function(slide) $(slide.doc).click(function() { slide({ size: 200, persist: true }); slide.icon.src = "chrome://branding/content/icon48.png"; }) });
コールバック関数の引数で渡されたslideにpersistが指定されない場合、スライドバーは実際にはブラウザの右端の位置をウィンドウの外にシフトさせていることに注意してください。about:jetpackの例で見れば、リファレンスページはウィンドウの中心に位置しています。それが、FFアイコンをクリックした状態ではコンテンツ部分の右に寄る(中心に来ない)と思います。これは、この時点ではスライドバーのコンテンツは一時的なものであるからです。persitがtrueに設定された場合は、それによって圧迫されたコンテンツ部分が再描画され、この時点での右端を縁とします。
jetpack.statusBar
このオブジェクトは、ブラウザ下部にあるステータスバー関連の関数を包括しています。このステータスバーは、Firefoxの[表示]メニューにあるオプションでユーザが非表示にしている場合もあることを覚えておいてください。
jetpack.statusBar.append(options)
[オプション]
- html String
- 新たなステータスバーパネルのHTML。
- url URL
- ステータスバーパネルにロードされるHTMLのURL。
- width Number
- htmlやurlで指定されたコンテンツが描画されるサイズをピクセル単位で指定。
- onReady Function
- ステータスバー上に新しいパネルが作られた際に呼び出されるコールバック関数。
この関数は、開いている全てのウインドウ上のステータスバーに新たなパネルを追加します。新たなブラウザを開けば、自動的hにそこにもパネルが追加されます。
技術的に言うと、ステータスバーパネルはifrmae要素です。これはリソースを大量に消費しますが、Webが備えている全てのジェネレート機能を有します。将来的にはこの関数に、よりシンプルでリソース消費の少ない、静的ラベルや画像を表示するようなオプションが追加されるかもしれません。
以下のサンプルではステータスバーにアイコンを追加します。そしてそのアイコンをクリックすると、通知メッセージが表示されます。
jetpack.statusBar.append({ html: '', width: 16, onReady: function(doc) { $(doc).find("img").click(function() { jetpack.notifications.show("hai2u"); }); }});
jetpack.storage
このオブジェクトは、恒久的な或いは一時的な全てのストレージを含むものです。
jetpack.storage.live
jetpack.storage.lliveに、どんなオブジェクトでも結びつけることが出来、Firefoxが再起動されるまでいつでも利用することができます。
jetpack.storage.live.myData = {hello: "world"}; console.log( jetpack.storage.live.myData );
jetpack.storage.simple
Simple Persistent Storage JEPを参照してください。
シンプル・ストレージは各Jetpack Feature毎に区切られているので、他の開発者が書いたコードと衝突することを恐れる必要がなくなります。
以下に、シンプル・ストレージAPIの使い方を簡単に例示します。
jetpack.future.import("storage.simple"); jetpack.storage.simple.set( "4ever", {hello:"world"} ); jetpack.storage.simple.get( "4ever", function(data, value){ console.log( data, value ); });
jetpack.tabs
jetpack.tabsはタブ関連のプロパティを備えた、動的な配列です。
jetpack.tabs.focused
現在フォーカスされアクティブになっているタブオブジェクトです。
以下のサンプルでは、現在フォーカスを得ているタブのURLを通知します。
jetpack.notifications.show(jetpack.tabs.focused.url);
jetpack.tabs.onFocus(callback)
タブオブジェクトが選択状態になった際に常に呼ばれるliveイベントをバインドします。
このバインダー関数はタブオブジェクトもしくはjetpack.tabs配列上で利用できます。
登録されたイベントハンドラは、現時点では引数を何も取りません。関数が呼び出された際、thisで引き金となったタブオブジェクトを参照できます。
次のサンプルはjetpack.tabs.onFocusハンドラを使い、タブを切り替えた際には常に通知メッセージを表示するようにしています。
jetpack.tabs.onFocus(function() { jetpack.notifications.show("You selected " + this.url); });
jetpack.tabs.onReady(callback)
“live event binder”は、タブオブジェクトのHTML文書もしくは、それが含むサブドキュメント(例えばiframeのような)のひとつのロードが終わった際に、このイベントを実行します。純粋に技術的な見地で言えば、このイベントはターゲットとなるドキュメントの DOMContentLoaded イベントにより実行されます。
このバインド用メソッドは、タブオブジェクトとjetpack.tabs配列で利用可能です。
次のサンプルコードはjetpack.tabs.onReadyハンドラを用いて、ユーザがページへ再訪した際に通知メッセージを表示できるようにしています。
jetpack.tabs.onReady(function onNextPage(doc) { if (!doc.defaultView.frameElement) { jetpack.notifications.show("Loaded " + doc.location.href); jetpack.tabs.onReady.unbind(onNextPage); }});
location
この文字列は、機能のコードを示すURLになります。
以下の例は、現在のロケーションをコンソールに表示させます。
console.log(location);
setInterval
この関数は、window.setIntervalと同様に動作します。
setTimeout
この関数は、window.setTimeoutと同様に動作します。
Tabオブジェクト
Tabは、ブラウザのタブに関する機能を提供します。
close()
タブを閉じます。既にタブが閉じられている場合は、何もしません。
contentDocument
タブが現在表示しているHTMLドキュメント。タブが閉じられている場合、値はnullになります。
contentWindow
現在タブが表示しているWindow。(タブ内のWebページにとっては、これがウインドウとして認識されています) タブが閉じている場合、値はnullになります。
favicon
タブが表示しているfaviconのURL文字列。タブがfaviconを持っていない場合や閉じられている場合、値はnullになります。
focus()
タブを選択状態にします。
isClosed
タブが閉じられているかどうかを示すbool値。これは例えば、タブオブジェクトを変数に入れて保持しておき、後でその値を利用する際に既に閉じられていないかを確認するような場合に使えます。
onFocus(callback)
Tabオブジェクトが選択状態になった際に、常に呼び出されるライブイベントをバインドします。
このバインダー関数は、Tabオブジェクトやjetpack.tabs配列上で利用できます。
ここでバインドされた関数は、現時点では引数を何も取りません。呼び出された際は、this変数で引き金になったTabオブジェクトにアクセスできます。
次のサンプルはjetpack.tabs.onFocusハンドラを使い、タブを切り替えた際には常に通知メッセージを表示するようにしています。
jetpack.tabs.onFocus(function() { jetpack.notifications.show("You selected " + this.url); });
onReady(callback)
“live event binder”は、タブオブジェクトのHTML文書もしくは、それが含むサブドキュメント(例えばiframeのような)のひとつのロードが終わった際に、このイベントを実行します。純粋に技術的な見地で言えば、このイベントはターゲットとなるドキュメントの DOMContentLoaded イベントにより実行されます。
このバインド用メソッドは、タブオブジェクトとjetpack.tabs配列で利用可能です。
次のサンプルコードはjetpack.tabs.onReadyハンドラを用いて、ユーザがページへ再訪した際に通知メッセージを表示できるようにしています。
jetpack.tabs.onReady(function onNextPage(doc) { if (!doc.defaultView.frameElement) { jetpack.notifications.show("Loaded " + doc.location.href); jetpack.tabs.onReady.unbind(onNextPage); }});
raw
XULのTabオブジェクトに直接アクセスします。このオブジェクトはMozillaプラットフォームでの変更を受けやすいので、アクセスは最終手段として極力使わないようにしてください。
タブが閉じている場合、値はnullになります。
url
タブが現在表示しているURL文字列。タブが閉じている場合、値はnullになります。
[...] https://screw-axis.com/jetpack/jetpack-api-referencejetpack-api-reference/ ちょこっと古いけどわかりやすい [...]