JsReport: ios에서 history.go(-1) 버그
February 01, 2018
JavaScript Report
history.go(-1) 사용 시 웹 브라우저에서는 아무 문제가 없지만
ios 웹뷰에서 뒤로가기가 되지 않고 하얀 화면이 나오는 경우가 있음.
특정 경우에 about:blank가 떨어지게 되는데
원인은 정확히 알 수 없음.
웹뷰에서 window history에 문제가 있는 모양임.
정확히는
a,b,c 메뉴가 있는데
a - > b -> c 이런식으로 location.href 를 이용해서 페이지를 이동시켰다.
문제는 a->b -> a -> b -> c 이렇게 갔을 때는 뒤로가기가 정상적으로 됐는데
a->b->c 이렇게 c 메뉴에 갔다가 뒤로가기를 할경우에 하얀화면이 뜨는것이었다.
테스트 해봤지만 정확한 원인을 찾지 못했음.
그래서
b에서 c로 페이지 이동전에
replaceState를 이용해서 history에 돌아올 url을 정상적으로
넣어주었더니 되돌아 올때 하얗게 되는 현상이 없어졌다. ( b 페이지에 .. )
뭔가 페이지 이동할때 history가 깨지는 것 같다. (왜일까… )
var path = window.location.href;
var ua = navigator.userAgent.toLowerCase(),
version = 0;
if( this.isIos() ){
version = parseFloat(ua.substr(ua.search(/ipad|iphone/), 30).match(/\d+_+\d/)[0].replace('_', '.'));
if( version >= 9.3 ){
window.history.replaceState({}, "title" , path );
}
}
https://developer.mozilla.org/en-US/docs/Web/API/History_API
이방법은 살짝 꼼수라고 할 수 있는 듯.
정확한 원인은 시간있을때 알아봐야겠다 .