Проблемы с window.history с использованием JQuery/Javascript в приложении Кордова в IOS9

У меня возникают проблемы с приложением Кордовы в IOS9 (бета). Я использую последние мобильные сборки Cordova и JQuery. Ошибка window.history не обновляется, что вызывает следующие сбои:

  • window.history.go(-1) не удается вернуться на страницу
  • window.history.length застревает в 1, даже если вы перемещаетесь на три страницы глубоко
  • Ссылки, помеченные в jQuery, поскольку data-rel= "back" не возвращаются при нажатии

Я собрал следующий пример кода, который не работает при запуске в качестве отдельного приложения Кордовы в IOS9 (бета), но работает правильно, если вы запустите его из браузера IOS9 (бета) (ссылка ниже). Тот факт, что он работает из мобильного браузера, но не как приложение, заставляет меня думать, что это может быть проблема Кордовы.

В образце - три страницы. Переход из Home- > Options- > HopOpts, а затем нажатие кнопки отмены приведет к возврату страницы, но не в приложении cordova. Я отдельно попытался привязать обработчик кнопки к этой кнопке и подтвердил, что window.history имеет глубину 1 (должно быть 3), а также window.history.go(-1) не может вернуться назад.

Образец HTML файла находится здесь: http://home.jejaju.com/BeerSmith2.html

Чтобы запустить его под Кордовой в качестве приложения, вам нужно удалить блоки комментариев вокруг строки "Cordova.js" вверху. Как я уже указывал выше, он работает правильно в браузере, даже в браузере IOS9, но кнопка отмены не работает как отдельное приложение cordova.

Итак, вопрос в том, кто-нибудь знает, почему window.history не обновляется, а обратные ссылки не работают должным образом для этого простого приложения Cordova и IOS9 (бета)? Единственное, что изменилось в двух тестах: Cordova.js.

Ответ 1

Я вижу, что это было пару недель назад, но я отправлю это, если кто-то еще столкнется с этим. Похоже, что это может быть связано с событиями навигации, генерируемыми изменением хэша в iOS 9. Если это так, вы можете добавить это в свой index.html, чтобы отключить прослушивание хэша:

(нужно перейти между jquery.js и jquery.mobile-1.4.5.js, как показано здесь)

<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript">
  $(document).bind("mobileinit", function(){
      $.mobile.hashListeningEnabled = false;
  });
</script>  
<script type="text/javascript" charset="utf-8" src="js/jquery.mobile-1.4.5.js"></script>

Ответ 2

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

 <a href="#" onClick="goBack();">
     Back To Previous Page
 </a>
<script>
    function goBack() {
        event.preventDefault();
        window.location.href = document.referrer;
        return false;
    }
</script>

Надеюсь, это поможет вам:)