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 に答える