jQuery Mobileでページの挙動がおかしいときは$.mobile.urlHistroyを参照してpageを調整してみる

jQuery Mobile でページ遷移がおかしいとき

しょっちゅうあります.

これらの挙動へのカウンターとしてページ遷移する直前に,保存されているpageオブジェクトを取得してプロパティを書き換えたりすることがあります.

var active = $.mobie.urlHistory.getActive();
var prev = $.mobie.urlHistory.getPrev();
var next = $.mobie.urlHistory.getNext();

こんなカンジで,オブジェクトが手に入ります.

このオブジェクトがpageを持っていますので,適当に操作すると症状が改善したりします.

たとえばの例

追記.jQuery Mobile Beta1でこの挙動は改善されているため,これは古いノウハウとなりました.

jQuery MobileのreFocusというメソッドが,前のページに戻ったときに発動して,最後にクリックしたオブジェクトの位置にフォーカスしようとした際に,レンダリングが崩れていました.

そのときに,前のpageが持っている"最後にクリックしたオブジェクト"のデータを削除することで,reFocusが暴発しないようにして対策しました.

$.mobile.urlHistory.getPrev().page.jqmRemoveData('lastClicked');

まあ,そんな小ネタ.こういう小細工しなくても済むようになるといいですね.

JavaScriptで,jQuery Mobileの挙動をどうこうするときは,jQuery Mobile Docs - Methodsに載っている情報も参考になります.