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

Имам проблем с приложение Cordova под IOS9 (бета). Използвам най-новите версии на Cordova и JQuery за мобилни устройства. window.history не се актуализира, което причинява следните грешки:

  • window.history.go(-1) не успява да върне страница назад
  • window.history.length остава на 1, дори ако навигирате три страници навътре
  • Връзките, маркирани в jQuery като data-rel="back", не успяват да се върнат назад при натискане

Събрах следния примерен код, който се проваля, когато се стартира като отделно приложение Cordova под IOS9(бета), но работи правилно, ако го стартирате от браузър IOS9(бета) (връзка по-долу). Фактът, че работи от мобилния браузър, но не като приложение, ме кара да вярвам, че може да е проблем с Cordova.

В образеца - има три страници. Навигирането от 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="/bg#" 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