2012-04-23 16 views
0

私はBackbone.jsとjQuery mobileを実行しているモバイルアプリケーションを持っています。私はBackbone.jsを持っており、パフォーマンス上の理由から、私はJQMのすべてのルーティングとトランジションを無効にしています。私はスクロールの場所を格納することはJQMで利用できる機能だと理解していますが、私はそれを(私が知る限り)利用することはできません。jQueryモバイル固定フッター、iOSウェブビュー、スクロールトップ問題

私は、潜在的に長いアイテムのリストを持つリストビューを持っています。ユーザーがモバイルデバイス上でタップすると、現在のスクロール位置が保存され、新しいビューがレンダリングされます。ユーザが「戻る」ボタンをタップすると、履歴に戻る。

clickLink: -> 
    window.lastScroll = $(window).scrollTop() 

render: -> 
    ... 

    if window.lastScroll 
     $.mobile.silentScroll window.lastScroll 
     window.lastScroll = undefined 

デスクトップのSafari上で、必要に応じてこれは動作しますが、私はiOS版のSafari(シミュレータと実物の両方)でそれを使用してそれをしようとすると、固定フッターナビゲーションバーの問題があります。

ユーザーがタップすると、リストビューは意図したとおりにスクロールされますが、フッターのナビゲーションバーをタップした場合は、その下にあるリストアイテムがアクティブになります。ユーザーがナビバーをタップする前に少しスクロールすると、すべて正常に動作します。

誰にもアイデアはありますか?おそらく、この問題をすべて回避するより良い方法があります。

ご協力いただきありがとうございます。

+0

チャド・スミスによってこの問題を回避するには、私のために最善を働いた: http://stackoverflow.com/questions/8752220/mobile-safari-bug-on-fixed-positioned-button-after-scrolltop-programmatically-ch – MysteriousFist

答えて

0

チャド・スミスはこのMobile Safari bug on fixed positioned button after scrollTop programmatically changed...?

彼の方法は、私のために最善を働いたと答えました。彼の返答は次のとおりです。

私は101%の高いdivを加えてすぐにそれを取り除きました。

試してみてください。

<style> 
.iosfix { 
    height: 101%; 
    overflow: hidden; 
} 
</style> 

、あなたはスクロール:

window.scrollTo(0, _NEW_SCROLLTOP_); 
$('body').append($('<div></div>').addClass('iosfix')); 
setTimeout(function() { 
    $('.iosfix').remove(); 
}, 500); 

またjQuery.scrollToで動作します。

hereの例を参照してください。

関連する問題