Saturday, June 1, 2024
 Popular · Latest · Hot · Upcoming
198
rated 0 times [  199] [ 1]  / answers: 1 / hits: 21002  / 9 Years ago, thu, september 24, 2015, 12:00:00

In my application I am using window.history.back to navigate back to previous View



Declaration of back button



 <div class=back_icon  id=verification_back_icon><a href=# data-rel=back  data-transition=slidedown><img src=images/back_btn.png width=23/></a></div>


Button action:



$( #verification_back_icon ).on( click, function ( e ) {
if ( checkDirtyVacation() ) {
e.preventDefault();
if ( backbtnAlt == false ) {
backbtnAlt = true;
confirm( All data will be lost. Do you want to continue?,
function ( r ) {
if ( r ) {
//onBackKeyDown();
clearVacationvalues();
window.history.back();//this is not working in iOS 9
} else {

}
backbtnAlt = false;
} );
}
}
else {
e.preventDefault();
if ( $( .vaction_location ).hasClass( chkSelect ) ) {
$( .vaction_location ).removeClass( chkSelect );
$( .vaction_location ).addClass( chkUnSelect );
}


window.history.back();
}
} );


This worked perfectly till iOS 8.4. In iOS 9 this navigation is not working.



I am using Apache Cordova native platform version 3.8.0 .



If anyone facing the similar problem please suggest me.
I have tried with history.back doesn't work on iOS using Cordova, but no luck



Thank you.


More From » html

 Answers
10

SOLUTION:



This line resolved my issue :



 history.go(0); 


I have replaced window.history.back() with history.go(0);



Now it is working fine for me in iOS 9



In index.html



   <script type=text/javascript>$.mobile.hashListeningEnabled = false;</script>


Add this in onDeviceReady function:



function onDeviceReady() {
if ( device.platform === iOS && parseInt( device.version ) === 9 ) {
$.mobile.hashListeningEnabled = false;
}

if ( !( $.mobile.hashListeningEnabled &&
$.mobile.path.isHashValid( location.hash ) &&
( $( hashPage ).is( :jqmData(role='page') ) ||
$.mobile.path.isPath( hash ) ||
hash === $.mobile.dialogHashKey ) ) ) {

// make sure to set initial popstate state if it exists
// so that navigation back to the initial page works properly
if ( $.event.special.navigate.isPushStateEnabled() ) {
$.mobile.navigate.navigator.squash( path.parseLocation().href );
}

$.mobile.changePage( $.mobile.firstPage, {
transition: none,
reverse: true,
changeHash: false,
fromHashChange: true
} );
} else {
// trigger hashchange or navigate to squash and record the correct
// history entry for an initial hash path
if ( !$.event.special.navigate.isPushStateEnabled() ) {
$window.trigger( hashchange, [true] );
} else {
// TODO figure out how to simplify this interaction with the initial history entry
// at the bottom js/navigate/navigate.js
$.mobile.navigate.history.stack = [];
$.mobile.navigate( $.mobile.path.isPath( location.hash ) ? location.hash : location.href );
}
}
}


Validation for device OS version (as history.go(0) is working only with iOS 9) Prior to iOS 9 version window.history.back() working perfectly



And now Add this piece of code in place of window.history.back()



if ( device.platform === iOS && parseInt( device.version ) === 9 ) {
console.log( version + device.version );
console.log( iOS 9 );
history.go( 0 );
//write your code here
}
else {
window.history.back();
}


To fix this Message Failed to load webpage with error: CDVWebViewDelegate: Navigation started when state=1 in console add below code in CDVWebViewDelegate.m




In - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType




Method Comment this piece of code shown below:



/*if ([_delegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) {
NSDictionary* errorDictionary = @{NSLocalizedDescriptionKey : description};
NSError* error = [[NSError alloc] initWithDomain:@CDVWebViewDelegate code:1 userInfo:errorDictionary];
[_delegate webView:webView didFailLoadWithError:error];
}*/

[#64942] Tuesday, September 22, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
josiah

Total Points: 208
Total Questions: 105
Total Answers: 107

Location: Seychelles
Member since Mon, Jun 28, 2021
3 Years ago
;