jQuery Mobile - 维护设备方向更改时的滚动位置?

时间:2014-10-17 18:23:01

标签: jquery-mobile cordova jquery-mobile-listview jquery-events

我正在使用jQuery-mobile来显示数据列表。列表可以相当高,比如说~3000px。我在Samsung G S5上看到的问题是当我旋转手机时,列表视图会丢失它的滚动位置并位于顶部。

我已尝试执行以下操作,但无法使其正常工作:

// This block is to handle the device rotating when viewing the list
    $(window).on('scrollstop', function() {
        if ($.mobile.activePage.attr('id') == 'pageBeingViewed') {
            self.currentScroll = $(window).scrollTop();
        }            
    });
    $(window).on("orientationchange", function (event) {
        if ($.mobile.activePage.attr('id') == 'pageBeingViewed') {
            console.log('Scroll Pos:'+self.currentScroll);
            $(window).scrollTop(self.currentScroll);  // also tried using the jQM silent scroll method here as well.  No luck.       
        }           
    });

从逻辑上讲,这应该有效。它会动态捕捉滚动位置,因此当您旋转设备时,它应该将其重新定位到原来的位置。但我不能为我的生活弄清楚为什么它不起作用。有没有人有任何想法/建议?

1 个答案:

答案 0 :(得分:-1)

divs上检查firebug并确保哪个是包含滚动条的元素。有时会发生bodypageui-content设置为100%高度,因此滚动条最终会显示在ui-content div中。如果是这种情况,您可以通过直接访问包含滚动条的div的scrollTop()来解决此问题。