PCサイトのスマホ版を作ってます。jQuery Mobileを使ってるものの、大人の事情でAJAXは使わないようにしています。それで $.mobile.ajaxEnabled = false; だけでは済まないので、諸々の設定を再確認することにしました。

via:
グローバル設定 | jQuery Mobile 1.1.0 日本語リファレンス
http://dev.screw-axis.com/doc/jquery_mobile/api/configuring_defaults/

jQuery Mobile Docs – Configuring default settings
http://jquerymobile.com/demos/1.1.1/docs/api/globalconfig.html

ajaxEnabled default: true

jQuery Mobileは自動的にリンクのクリックやフォームのサブミット処理をAjaxで制御するようになります。ここに false を指定すると、その制御を止めます。結果、URLはハッシュベースではなく通常のHTTPリクエストによるものになります。

AJAXを使わない場合には必須の設定ですね。

hashListeningEnabled default: true

jQuery Mobileは自動的に location.hash の変更を見張り、制御します。この値を false にすると、jQuery Mobileはハッシュ変更時の制御を止めます。それにより、制御を自分自身で行ったり、あるいはディープリンクをそのままにして指定したIDへ自動スクロールさせるようなことが出来ます。

HTML内に複数のページを設定している場合は、これをfalseにすると動かなくなります。逆に、ページ内リンクを使用したい場合はfalseにしておいたほうがいいですね。

pushStateEnabled default: true

history.replaceState をサポートしているブラウザでは、AjaxによるハッシュベースのURLを通常のドキュメントパスに変換するこの機能が有効になります。もしAjaxによる遷移機能を使わない、あるいはサイトの大部分が外部へのリンクであるような場合、この機能をオフにすることをお勧めします。

ということで、下記の設定になりました。

$(document).bind(“mobileinit”, function(){
$.mobile.ajaxEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
});


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA