jQuery Mobileにおける自動初期化処理
jQueryやjQuery UIのような他のjQueryプロジェクトと異なり、jQuery Mobileはロードされると同時(document.readyイベントが発生するよりもずっと前)に沢山のマークアップ操作を行います。これらの埋め込みは、jQuery Mobileが用意している一般的なデザインにあわせた初期設定値に従うことになります。しかし、それはあなたの要望通りで無い部分もあるでしょう。幸いにして、そうした初期値は簡単に再設定することができます。
mobileinit イベント
jQuery Mobileが実行されると、まず document オブジェクトの mobileinit イベントが呼び出されます。ここで、jQuery Mobileの初期設置値を上書きすることが出来ます。
$(document).bind("mobileinit", function(){
// 初期値の上書き
});
jQuery Mobileがロードされた直後にこのハンドラはバインドされる必要があるため、この mobileinit イベントは実行された直後に呼び出されます。そのため、JavaScriptファイルの取り込みは次のような順番で行うことをお勧めします。
このイベント中で、初期値を次のいずれかの方法で設定できます。
まず $.mobile オブジェクトをjQueryの $.extend メソッドを使って拡張する方法があります。
$(document).bind("mobileinit", function(){
$.extend( $.mobile, {
foo:bar
});
});
あるいは、各設定値をそれぞれ変えることも出来ます。
$(document).bind("mobileinit", function(){
$.mobile.foo = bar;
});
グローバル設定変更による簡単なプレビューを見るには、この グローバル設定テスト を試してください。
設定可能オプション
以下の設定は $.mobile オブジェクトにより設定可能です。
-
ns
string, default: "" -
名前空間は、たとえば data-role のような data- で始まる属性に用いられます。ブランクの指定も可能で、それが初期値になっています。値を設定する場合、末尾にダッシュ(-)を付けるのが良いでしょう。たとえば "mynamespace-" を指定すれば、data-fooという属性は次のようになります。
data-mynamespace-foo="..."
.注意:この名前空間を使う場合、テーマのCSSを手動で修正する必要があります。たとえば次のように、セレクタを指定した名前空間を付加したものにしてください。
.ui-mobile [data-mynamespace-role=page], .ui-mobile [data-mynamespace-role=dialog], .ui-page { ...
-
autoInitializePage
boolean, default: true - DOMの準備が整うと、フレームワークは自動的に $.mobile.initializePage を呼び出します。この値が false の場合、ページは初期化を行いません。そして手動で $.mobile.initializePage メソッドが呼ばれるまで、ページには何も表示されません。
-
subPageUrlKey
string, default: "ui-page" - ウィジェットがサブページを生成するような場合(たとえば階層化リストビュー)の、パラメータを指定します。デフォルトで example.html&ui-page=subpageIdentifier のようになっている部分を、任意のキーに変更できます。
-
activePageClass
string, default: "ui-page-active" - ページ遷移によりアクティブになったページに適用されるクラスです。
-
activeBtnClass
string, default: "ui-btn-active" - CSSフレームワーク向けの、ボタンがアクティブ状態になった際に適用されるクラスです。
-
ajaxEnabled
boolean, default: true - jQuery Mobileは自動的にリンクのクリックやフォームのサブミット処理をAjaxで制御するようになります。ここに false を指定すると、その制御を止めます。結果、URLはハッシュベースではなく通常のHTTPリクエストによるものになります。
-
linkBindingEnabled
boolean, default: true - jQuery Mobileは、自動的にアンカー要素のクリックイベントをバインドします。このオプションに false を指定すると、こうしたバインドを全て止めます。これには、ボタンにアクティブな状態を与えるような処理も全て含みます。これを false にするのは、アンカーのクリックを他のライブラリなどで独自に制御したいような場合に限るでしょう。
-
hashListeningEnabled
boolean, default: true - jQuery Mobileは自動的に location.hash の変更を見張り、制御します。この値を false にすると、jQuery Mobileはハッシュ変更時の制御を止めます。それにより、制御を自分自身で行ったり、あるいはディープリンクをそのままにして指定したIDへ自動スクロールさせるようなことが出来ます。
-
pushStateEnabled
boolean, default: true - history.replaceState をサポートしているブラウザでは、AjaxによるハッシュベースのURLを通常のドキュメントパスに変換するこの機能が有効になります。もしAjaxによる遷移機能を使わない、あるいはサイトの大部分が外部へのリンクであるような場合、この機能をオフにすることをお勧めします。
-
defaultPageTransition
string, default: 'slide' - Ajaxによるページ遷移時のデフォルト効果を指定します。ここに "none" を指定すると、デフォルトで何も効果が無い状態になります。
-
touchOverflowEnabled
boolean, default: false - ブラウザが overflow: と overflow-scrolling: touch; をサポートしている場合、よりスムーズなページ遷移効果と本当の意味での固定ツールバーが実装されます。
-
defaultDialogTransition
string, default: 'pop' - Ajaxによるダイアログ表示時のデフォルト効果を指定します。ここに "none" を指定すると、デフォルトで何も効果が無い状態になります。
-
minScrollBack
string, default: 150 - ページを「戻る」などで戻った時に、元のスクロール位置を覚えておくかどうかの閾値です。このピクセル数以上スクロールすると、その位置を復元するようになります。
-
loadingMessage
string, default: "loading" - ページ読み込み時に表示されるローディングメッセージの文字列を設定します。ここに false を指定すると、メッセージ自体が表示されなくなります。
-
pageLoadErrorMessage
string, default: "Error Loading Page" - ページ読み込み失敗時に表示されるエラーメッセージの文字列を設定します。
-
gradeA
function that returns a boolean, default: a function returning the value of $.support.mediaquery - グレードAの機能をサポートしているかどうかを返します。