sem
1
안녕하세요
현재 웹뷰를 사용중이며
기본 상단 네비게이션의 좌측 뒤로가기 버튼이 window.history 의 스택을 이동하는 거라 생각해서
window.addEventListener('popstate', ()=>{})
로 컨트롤 하려고 시도하였습니다
개발환경의 경우에는 만족스럽게 동작하여 이대로 빌드를 한 후 버전 등록을 통한 테스트까지 진행하였으나
해당 빌드 환경에서는 위의 동작이 이루어지지 않고 있어서 혹시 이렇게 history 로 다루는 것이 아닌지에 대해서 여쭤보려 문의 남깁니다.
Dylan
2
안녕하세요 
history 기반으로 동작해야하는게 맞아요.
네비게이션 바 뒤로가기 클릭시에 popstate 이벤트가 일어나지 않는걸까요 ?
sem
4
넵 그렇습니다
const popstateHandler = (e:any) => {
window.history.pushState({ tab: 1 }, '', '');
e.preventDefault();
if (now - lastBackTimeRef.current < 2000) {
closeView();
} else {
lastBackTimeRef.current = now;
setOpenToast(true);
}
} else {
setSelectedLarge(0);
}
};
window.addEventListener(‘popstate’, popstateHandler);
이런식으로 사용하여 안드로이드의 뒤로가기를 두번 할 시 종료되는 동작을 여기에 적용하려고 하였으나
빌드 후에 동작은 history.back()의 기본 동작만 됩니다
sem
5
추가적으로 window.onpopstate 같은 기능으로 덮어씌우려고 하는 시도도 실패했습니다
혹시 추가적인 개선안이 있을까요?
sem
6
오류 해결하였습니다
단순히 onpopstate 이벤트가 무조껀 뒤로가기 가 된 후에 실행되서
history만 먼저 넣어주니 해결 되었습니다
1개의 좋아요