2012-04-23 48 views
0

我有一個運行Backbone.js和jQuery mobile的移動應用程序。因爲我有Backbone.js,出於性能方面的原因,我禁用了所有的JQM路由和轉換。我知道存儲滾動位置是JQM中可用的功能,但我無法利用它(據我所知)。jQuery移動固定頁腳,iOS web視圖和scrollTop問題

我有一個可能很長的項目列表視圖。當用戶在移動設備上點擊一個時,它將存儲當前的滾動位置並呈現新的視圖。當用戶點擊「後退」按鈕時,它會在歷史中返回一個。

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

render: -> 
    ... 

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

在桌面上的Safari根據需要這個工作,但是當我嘗試使用它在iOS的Safari(包括模擬和真實的東西),它有與固定頁腳導航欄的問題。

如果用戶點擊後,列表視圖會按照預期向下滾動,但如果他們點擊頁腳導航欄,就好像他們在它下面輕按,無論列表項是否被激活。如果用戶在點擊導航欄之前滾動一點,則一切正常。

有沒有人有任何想法?也許有更好的方法可以一起避免這個問題。

在此先感謝您的幫助。

+0

Chad Smith的這種解決方法對我最有效: http://stackoverflow.com/questions/8752220/mobile-safari-bug-on-fixed-positioned-button-after-scrolltop-programmatically-ch – MysteriousFist 2012-05-15 14:22:57

回答

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