Jquery mobile, удалить предыдущую страницу

Я использую мобильный телефон jquery с phonegap. Мое приложение имеет две страницы: страницу входа и страницу списка. При успешном входе пользователь перейдет на страницу списка. После этого, когда они нажмут кнопку "Назад" на своем телефоне (Android), они вернутся на страницу входа. Я не хочу такого поведения. Я хочу выйти из приложения.

4 ответа

Решение

Как я ответил в этом вопросе: страница хэш и кнопка BackBateton выпуска 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" вашей страницей списка...

Имейте в виду, что changeHash:false относится к странице назначения, а не к источнику. Вы не будете удалять исходную страницу из истории. Вместо этого хеш истории не будет обновляться при переходе на новую страницу

Если вы используете последнюю версию jQuery mobile (1.4+), вы можете использовать этот скрипт:

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

jQuery.mobile.changePage устарела с jQuery Mobile 1.4.0 и будет удалена в 1.5.0.

Добавление опций для реверса и изменения Hash у меня не сработало. используя Cordova v1.6

В итоге я переопределил метод onTouch в своей активности Android.

@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);
}
Другие вопросы по тегам