2015-04-24 2 views
0

Я использую HTML и JavaScript для написания Android APP, но у меня есть проблема, что при возврате с текущей страницы на предыдущую страницу страница перезагружается, а выбор и настройка, когда Я сделал в первом идет к дефолту.Как сохранить состояния выбора на кнопке «Назад»

Например: На первой странице пользователь может выбрать страну и город, а затем перейти на вторую страницу.

Если пользователь нажмет на кнопку «Назад» (которая вызывает window.history.back(); или href="javascript:history.back(-1);") , то весь выбранный вами результат будет потерян, и будут показаны варианты по умолчанию.

Он отлично работает в родном браузере Android. Как сохранить состояние выбора?

Заранее благодарен!

+0

Если это так важно, вы можете сохранить его в HTML5 localSotrage на selectbox.change(). И назначьте его обратно на загрузку документа. –

ответ

0

Вам необходимо сделать фиктивную историю, чтобы отключить кнопку возврата истории.

var originalHash = document.hash || "#dummyMain" 
location.assign("#dummyBack") 
location.assign(originalHash) 
window.addEventListener("popstate",function(){ 
    if(location.hash == "#dummyBack"){ 
    window.history.pushState(null,null,originalHash) 
    }else{ 
    originalHash = location.hash 
    } 
}); 

Код выше создать фиктивную историю страницы и проверяет, переходы страниц происходят через историю кнопку назад или нет, и если да, то силы страницы перейти на текущую страницу еще раз, чтобы остановить историю назад действие.

Поскольку вы не ввели какой-либо код в вопрос, вряд ли можно сказать, что он будет работать или нет, но я думаю, как только вы загрузите этот код, он должен отключить все действия обратной страницы.

Если вы используете ПК/Mac для использования этого сайта, попробуйте открыть консоль разработчика/firebug javascript console и скопируйте/вставьте код и нажмите кнопку возврата назад, чтобы узнать, как это работает.

+0

Спасибо за ответ! Я использовал ваш код на своей странице, но это не решило проблему. Если вы можете точно сказать, как использовать этот метод. Приведите пример. Спасибо! –

+0

Я поместил ваш код в начало файла JavaScript, и в конце этого файла я предупредил (предупреждение («Code Executed Again»);) и импортировал JS-файл в JPS-файл, в первый раз отображается предупреждение (оно является нормальным), но при переходе на вторую страницу и возврате, предупреждение также показано, это означает, что код снова выполнен, как и в первый раз. Но в некоторых браузерах мобильных телефонов второе предупреждение не отображается. –

+0

> Если вы используете ПК/Mac для использования этого сайта, попробуйте открыть консоль разработчика/firebug javascript console и скопируйте/вставьте код и нажмите кнопку возврата назад, чтобы посмотреть, как это работает. – suish

0

Я нахожу хороший способ сохранить данные предыдущей страницы, которые используют localStorage, чтобы сохранить данные в качестве значения ключа перед тем, как покинуть эту страницу, и снова, вернувшись на эту страницу, вы можете снова получить данные из localStorage` и отобразить их ,

Поскольку данные, загружаемые AJAX, будут последними для истории.

Надеюсь, что эта помощь может возникнуть у этой проблемы.