0

我有一个运行 Backbone.js 和 jQuery mobile 的移动应用程序。因为我有 Backbone.js,并且出于性能原因,我禁用了所有 JQM 路由和转换。我知道存储滚动位置是 JQM 中提供的一项功能,但我无法利用它(据我所知)。

我有一个列表视图,其中包含可能很长的项目列表。当用户在移动设备上点击一个时,它会存储当前滚动位置并呈现一个新视图。当用户点击“返回”按钮时,它会返回历史记录。

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

render: ->
    ...

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

这在桌面 Safari 上可以正常工作,但是当我在 iOS Safari(模拟器和真实的东西)上尝试使用它时,固定页脚导航栏存在问题。

如果用户点击返回,列表视图会按预期向下滚动,但是如果他们点击页脚导航栏,就好像他们点击了它,它下面的任何列表项都将被激活。如果用户在点击导航栏之前滚动一点,一切正常。

有没有人有任何想法?也许有更好的方法可以一起避免这个问题。

在此先感谢您的帮助。

4

2 回答 2

0

会不会和这个bug有关?

表单元素可能会在位置丢失点击区域:固定容器

(从这里链接JQuery Mobile 1.1.0 文档

我看到第一个链接中有一个解决方法 - 值得一试吗?

于 2012-05-15T11:03:44.843 回答
0

在以编程方式更改 scrollTop 后,Chad Smith 在固定位置按钮上回答了这个Mobile Safari 错误...?

他的方法最适合我。以下是他的回应:

我通过添加一个 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。

请参阅此处的示例。

于 2012-05-15T18:22:55.770 回答