このコードは、jQuery Core を組み込んだ後、jQuery Mobile を組み込む前に実行する必要があります。その理由は、コードを実行するには jQuery が存在する必要がありますが、このイベント ハンドラーは jQuery Mobile が初期化される前にバインドされる必要があるためです。
例えば:
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script>
$(document).bind("mobileinit", function()
{
if (navigator.userAgent.indexOf("Android") != -1)
{
$.mobile.defaultPageTransition = 'none';
$.mobile.defaultDialogTransition = 'none';
}
});
</script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
ドキュメント: http://jquerymobile.com/demos/1.1.0/docs/api/globalconfig.html
また、jQuery Mobile は CSS 3D 変換のサポートについてデバイスをテストし、それらをサポートするデバイスでのみナイス トランジションを使用するため、UA スニッフィングは必要ありません。これは jQuery Mobile 1.1.0+ で自動的に行われますが、デフォルトのフォールバック トランジションは であるfade
ため、とにかくそのデフォルトを変更する必要があります。
非 3D サポートのためのフォールバック トランジションの定義
デフォルトでは、フェードを除くすべてのトランジションで 3D 変換のサポートが必要です。3D をサポートしていないデバイスは、指定されたトランジションに関係なく、フェード トランジションに戻ります。これは、Android 2.x などのパフォーマンスの低いプラットフォームを高度な移行から積極的に除外し、引き続きスムーズなエクスペリエンスを確保するために行います。3D 変換を技術的にサポートしている Android 3.0 などのプラットフォームがありますが、それでもアニメーションのパフォーマンスは低いため、すべてのブラウザーで 100% ちらつきがなくなることは保証されませんが、責任を持ってこれをターゲットにしようとしています。
3D 変換をサポートしていないブラウザーのフォールバック トランジションは、トランジション タイプごとに構成できますが、デフォルトではフォールバックとして「フェード」を指定します。たとえば、これはスライドアウト トランジションのフォールバック トランジションを「なし」に設定します。
$.mobile.transitionFallbacks.slideout = "none"
ソース: http://jquerymobile.com/demos/1.1.0/docs/pages/page-transitions.html
一般的な観察として、イベント ハンドラー内にステートメントを配置することに気付きました。if/then
それが Android デバイスでない場合は、イベント バインディング/起動が発生する必要がないように、ステートメントを外部に配置することもできます。
例えば:
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script>
if (navigator.userAgent.indexOf("Android") != -1)
{
$(document).bind("mobileinit", function()
{
$.mobile.defaultPageTransition = 'none';
$.mobile.defaultDialogTransition = 'none';
});
}
</script>
<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>