하이브리드 앱 개발에서 location.href 사용 후 뒤로가기 무한루프에 빠진 이유

 하이브리드 앱을 개발하면서 단순한 페이지 이동 로직을 만들었다. 버튼을 누르면 location.href 로 다른 페이지로 이동하고, 이전 버튼을 누르면 다시 돌아오는 구조였다. 웹에서는 이전 버튼을 자주 사용하지 않기 때문에 이 부분을 깊게 테스트 해 본적이 없다. 그런데 하이브리드 앱(WebView)에서 테스트하는 순간 문제가 바로 드러났다. 뒤로가기를 누르면 이전 페이지로 돌아가는 것이 아니라 같은 페이지를 계속 반복하면서 무한루프처럼 동작하기 시작했다. 처음에는 WebView 문제라고 생각했다. 하지만 원인은 location.href 와 히스토리 스택 구조였다. location.href 로 이동할 때마다 히스토리에 페이지가 계속 쌓이고 뒤로가기를 눌렀을 때 페이지가 다시 로드되면서 이동 스크립트가 또 실행되는 구조가 만들어진 것이다. 흐름은 이렇게 반복된다. A 페이지 → location.href → B 페이지 B 페이지 → 뒤로가기 → A 페이지 A 페이지 로드 → location.href 실행 → B 페이지 이 과정이 계속 반복되면서 하이브리드 앱에서는 뒤로가기 무한루프가 발생한다. 웹에서도 발생하는 문제지만 하이브리드 앱에서는 시스템 하단의 뒤로가기 버튼이 존재하기 때문에 이 문제가 훨씬 쉽게 드러난다. 특히 Android 물리 백버튼이나 iOS 제스처 뒤로가기와 결합되면 사용자는 앱이 고장난 것처럼 느끼게 된다. 해결 방법은 간단하다. 첫 번째는 location.href 대신 히스토리를 남기지 않는 location.replace 를 사용하는 것이다. location . replace( 'pageB.php' ); 이렇게 하면 히스토리가 쌓이지 않아 뒤로가기 루프가 발생하지 않는다. 두 번째는 자동 이동 로직이 한 번만 실행되도록 조건을 추가하는 방법이다. if (!sessionStorage.getItem('moved')) { sessionStor...

홍대 가성비 맛집 카츠미 본점

원래는 후라토 상수점에서 규카츠 먹으려고 했는데

15:00부터 브레이트 타임 ㅠ

14:30분에 갔는데 런치 마감이라고 에잇 이런!!

딸램 추천으로 가성비 맛집

카츠미 찾아갔습니다.


상수에서 걸어가다 보니 조금 시간은 걸렸지만

브레이크 타임이 없어진 카츠미에서

규카츠 바로 먹을 수 있었습니다.


돈까스 덮밥도 함께 먹으려 했으나

재료 소진으로 규카츠만..

되는 일이 없네요.

그래도 맛있기를 바라며... ㅎㅎ

카츠미 규카츠(기본사이즈)

규카츠 기본 사이즈입니다.

공기밥은 더블 같네요 ㅋ

카츠미 규카츠(점보사이즈)

규카츠 점보 사이즈입니다.

고기가 접시 길이만큼이죠? ㅎ

카츠미 규카츠(더블사이즈)

규카츠 더블 사이즈입니다.

실제로 두 배는 안 되는 듯 해요.

가격이 두 배가 안 되니 그렇겠죠? ^^

그래도 양은 넉넉하답니다.

가격을 착한데 밑 반찬이 생각보다 별로네요.


그리고 구울 때 연기가 너무 많이 납니다.

테이블 마다 연기가 꽉 차니 좀 불편했습니다.

빨리 나가고 싶다 였죠 ㅎㅎㅎ


후라토는 연기가 많이 나지 않았던 걸로

기억이 납니다만...

가격은 기본사이즈 기준 

천 원짜리 한 장 차이인데 말이죠...

후라토가 천 원 비쌉니다. 


지금 점심시간이라 이거 생각이 나네요.

돈까스 덮밥 메뉴가 없어서...


카츠미 규카츠(점보사이즈)

카츠미 규카츠(점보사이즈)

점보사이즈는 접시에 한 아름이네요


카츠미 가시는 길

재료소진 전화 확인 후 가세요~


후라토 식당에서 오므라이스 주문해서

집으로 Go!

담엔 후라토 식당에서 만나요!

댓글