1

我的移动应用程序在 iOS 上的行为与预期一样,但在 android 下,在点击指向新页面的链接之前滚动的任何溢出 div 都会在返回时滚动回顶部。页面似乎没有重新加载,只是在转换完成之前滚动到顶部。

我似乎遇到了这里讨论的问题。那里发布的建议解决方法都没有帮助。

我正在使用 Phonegap 2.0.0 和 jQuery Mobile 1.2.0

有人有解决方案吗?

4

2 回答 2

2

Android 的后退按钮与 PhoneGap 有很大的不同。我所做的只是禁用了 Android 中的后退按钮。

$(function(){
    document.addEventListener("deviceready", onDeviceReady, false);
})

// PhoneGap is loaded and it is now safe to call PhoneGap methods
//
function onDeviceReady() {
    // Register the event listener
    document.addEventListener("backbutton", onBackKeyDown, false);
}

// Handle the back button
//
function onBackKeyDown() {
    console.log("Back button pressed but nothing happened");
}

这是我选择的方法。如果您想使用后退按钮,那么此解决方案不适合您。

于 2013-03-04T06:10:31.160 回答
0

禁用后退按钮对我来说不是一个可行的解决方案,并且由于在 jQM 框架中使用 history.back() 进行后退导航,因此同样的结果仍然存在。即使使用 Phonegap 的 navigator.history.back() 替代方法仍然会产生不良影响。最后我添加了这样的处理程序,诚然可以改进(欢迎提出建议):

/* ANDROID WORKAROUND */
$('div').on('pagebeforehide', function(event, ui) {
    var scrollPos = $(this).find('.scrolldiv').scrollTop();
    $(this).jqmData('scrollPos',scrollPos );
});

$('div').on('pagebeforeshow', function(event, ui) {        
    var page = $(this);
    setTimeout(function(){
        //using animate becuse I could not get scrollTo() to work (?)
        $(page).find('.scrolldiv').animate({scrollTop: $(page).jqmData('scrollPos')}, 0);
    },1); //add it to the JS process stack
});
于 2013-03-04T17:02:25.757 回答