하이브리드 앱 개발에서 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...

녹번역 맛집 - 주차 가능한 브런치 카페 37.5

브런치 카페 37.5(녹번점)

녹번역 브런치 카페 37.5내부전경

녹번점 37.5 내부전경입니다.
대리석 바닥에 탁 트인 내부에
좌석이 빽빽하지 않고 여유있게 공간이 있습니다.
좀 넓어서 물 가지러 가는 길이 길다는 거..

화장실 가면서 테라스도 봤는데
더운 여름이나 아주 추운 겨울 아니면
이용해도 좋을 듯 싶습니다.

깔끔한 접시

빼쉐 파스타

 얼큰한 빼쉐 파스타17,900원

예전에 리*미에서 먹던 맛이 생각나서 주문했는데
역시 실망시키지 않는 맛이네요.

쉬림프 감바스

▲ 쉬림프 감바스18,900원

개인적으로 빵이 너무 맛있었습니다.
빵을 더 추가하고 싶었는데
빵 추가가 없어서 여쭤봤더니
한 개 더 주시더라구요 ^^
감사합니다!! 

스파이시 라구 파스타

▲ 스파이시 라구 파스타 17,500원

라구는 나쁘지 않아요.
자꾸 손이 가는 그런 맛은 아니지만요. ㅎ


전체적으로 탁트인 실내와

넓은 외부 테라스가 맘 편히 브런치를 즐길 수  있습니다. 
11시전에 오픈하는 곳이 별로 없는데 
일찍 오픈하는 것도 이 집의 장점이네요.


네이버 예약하면 음료를 무료로 준다고 했는데
한 번도 이용해 보지 않아서...ㅎㅎ


음식은 전체적으로 다 맛있습니다.

커피는 그냥 그냥이지만 주 메뉴에 할인을 해 주시네요. 

가족이랑 친구랑 모두 어울리는 곳이네요.

주차도 여유있어요~ 


영업시간 : 월~일 09:30~22:00(라스트 오더 20:50분)
16:00~17:00 브레이크 타임이 월~일 모두 있어요.
브레이크 타임전 라스트 오더는 15:50분 이라네요.
보통은 일요일은 없던데
요기는 브레이크 타임 있으니
잘 살펴 보고 가세요.

서울 은평구 통일로 636 미드스퀘어 8층
TEL : 0507-1428-3705

찾아가는길
녹번역 1번출구 -> 불광동 방면으로 100m 직진
미드스퀘어(스타벅스, 미올한방병원)건물 8층
자차 이용시 건물 지하 주차장 사용 가능(주차 2시간 무료)


댓글