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

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

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

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

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

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

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

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


person user1626382    schedule 24.08.2015    source источник
comment
Похоже, вы столкнулись с проблемой, описанной здесь: github.com/jquery/jquery-mobile. /issues/8293 Попробуйте обновить свои устройства до iOS 9.2 (выпущена всего несколько дней назад). Обновление iOS, похоже, решило проблему для меня и других в этом трекере.   -  person Elliot B.    schedule 16.12.2015


Ответы (2)


Я вижу, что это было пару недель назад, но я опубликую это на случай, если кто-то еще столкнется с этим. Похоже, это может быть связано с событиями навигации, генерируемыми изменением хэша в 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>
person Mike M    schedule 11.09.2015
comment
Большое спасибо. Это устранило проблему - person samir105; 26.09.2015
comment
Спасибо, спас мой день. Я нашел hashListeningEnabled в других решениях, но важно то, что он должен быть между jquery.js и jquery.mobile-1.4.5.js. - person ozgunb; 28.09.2015
comment
Просто хотелось бы, чтобы можно было легко обнаружить только iOS 9. - person ; 20.10.2015
comment
Эта проблема, по-видимому, исправлена ​​​​в iOS 9.2, о чем также сообщают несколько других пользователей: github.com/jquery/jquery-mobile/issues/8293 - person Elliot B.; 16.12.2015

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

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

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

person Muhammad Essa    schedule 15.01.2018