5

私はphonegapでjquerymobileを使用しています。私のアプリには、ログインページとリストページの2つのページがあります。ログインに成功すると、ユーザーはリストページに移動します。その後、携帯電話(android)の戻るボタンを押すと、ログインページに戻ります。私はこのような振る舞いをしたくありません。私が欲しいのはアプリを終了することです。

4

4 に答える 4

5

私がこの質問に答えたように:ページハッシュとバックボタンの問題phonegap + Jquery

次のように、ブラウザの履歴にページを保持せずにページを変更できます。

$.mobile.changePage('#page', {reverse: false, changeHash: false});

残念ながら、最初のページがブラウザの履歴に残るのを防ぐことができなかったため、回避策を使用しました。

ページレイアウト:

<body>    
    <!-- page_1 before page_loading in source -->
    <div data-role="page" id="page_1">
    </div>
    <!-- page_loading will be shown first -->
    <div data-role="page" id="page_loading">
        <div data-role="content">
            <h1 >
                <b>welcome</b>
            </h1>
        </div>
    </div>
    <div data-role="page" id="page_2">
    </div>    
</body>

jQuery:

function onBodyLoad()
{   
    //go to page_loading before deviceready without keeping it in browser history
    $.mobile.changePage('#page_loading', {reverse: false, changeHash: false});
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady()
{   
    //your initialization code here...

    //now go to page_1 without keeping it in browser history since the actual first page was #page_1 already       
    $.mobile.changePage('#page_1', {reverse: false, changeHash: false});

    //your code here...
}

これはあなたのニーズに合うはずです、ただそれを試してみてください。「#page_loading」はログインページ、「page_1」はリストページになります。

于 2012-06-19T13:44:29.077 に答える
1

changeHash:falseは、ソースではなく、宛先ページを参照することに注意してください。履歴からソースページを削除することはありません。代わりに、新しいページに移動するときに履歴ハッシュは更新されません

于 2015-06-19T05:54:36.983 に答える
1

最新バージョンのjQuerymobile(1.4以降)を使用している場合は、次のスクリプトを使用できます。

$.mobile.pageContainer.pagecontainer('change', '#page', {reverse: false, changeHash: false});

jQuery.mobile.changePagejQuery Mobile 1.4.0で非推奨になり、1.5.0で削除されます。

于 2015-10-25T10:53:32.677 に答える
0

reversechangeHashのオプションを追加してもうまくいきませんでした。Cordovav1.6を使用する

AndroidアクティビティでonTouchメソッドをオーバーライドすることになりました。

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (KeyEvent.KEYCODE_BACK == keyCode) {
        // Clear browsers history if user clicks back button
        clearHistory();
    }
    return super.onKeyUp(keyCode, event);
}
于 2012-08-16T18:22:46.500 に答える