2012-04-23 45 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