我的移动应用程序在 iOS 上的行为与预期一样,但在 android 下,在点击指向新页面的链接之前滚动的任何溢出 div 都会在返回时滚动回顶部。页面似乎没有重新加载,只是在转换完成之前滚动到顶部。
我似乎遇到了这里讨论的问题。那里发布的建议解决方法都没有帮助。
我正在使用 Phonegap 2.0.0 和 jQuery Mobile 1.2.0
有人有解决方案吗?
我的移动应用程序在 iOS 上的行为与预期一样,但在 android 下,在点击指向新页面的链接之前滚动的任何溢出 div 都会在返回时滚动回顶部。页面似乎没有重新加载,只是在转换完成之前滚动到顶部。
我似乎遇到了这里讨论的问题。那里发布的建议解决方法都没有帮助。
我正在使用 Phonegap 2.0.0 和 jQuery Mobile 1.2.0
有人有解决方案吗?
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");
}
这是我选择的方法。如果您想使用后退按钮,那么此解决方案不适合您。
禁用后退按钮对我来说不是一个可行的解决方案,并且由于在 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
});