safari 에서 뒤로가기시 alert, confirm 이 뜨지않는 현상

102·2023년 4월 18일
0

트러블슈팅

목록 보기
1/1

제폰에서는 잘되는데요?📱

지금 진행하고 있는 프로젝트에서 계약이 진행되면 알림톡으로 url이 가고 사용자가 url을 눌러서 페이지에 접근하고 계약서를 오픈할때 window.confirm 으로 비밀번호를 확인하는데
안드로이드에서는 잘되고 내폰 (아이폰 11) 에서는 잘되는데 다른 아이폰 10, 12, 13, 14 에서는 안되는걸 발견....

제폰에서는 잘되는데요? (아직도 왜 잘되는진 모르겠음)

BFCache

BFCache 를 사용하는 브라우저는 다른페이지로 이동하는 순간 기존 페이지를 전체 스냅샷 하여 메모리에 저장하여 뒤로가기나 앞으로 가기를 이용할때 저장되어있는 스냅샷으로 페이지를 복원해준다.

이 BFCache 때문에 A페이지 -> B페이지에서 confirm창에 비밀번호 입력 -> 뒤로가기 시 confrim 창이 뜨지 않는 현상 발생!
리액트를 사용할시 useEffect 훅도 적용되지 않았다.
해당 페이지를 새로고침 하면 confirm이 잘뜸.....

구글링을 좀 해보니 이렇게 하면 된다는데 나는 안됨 😡

window.addEventListener('pageshow', (event) => {
  if (event.persisted) {
    // bfcache로 페이지가 복원되었을 때 실행해야하는 로직을 넣어준다.
  } else {
    // persisted가 true가 아닌 경우는 정상적으로 페이지가 로드된 경우다.
  }
});

애초에 저 event.persisted 를 애가 인식 못하는 느낌

그래서 열이받아서 그냥 모든 뒤로가기에 새로고침을 달았다.

window.onpopstate = function (event) {
  // 뒤로 가기 버튼 클릭 시 새로고침하고자 하는 동작 수행
  window.location.reload()
}

이론상 안될리가 없었고... 역시나 잘됨

이게 맞나 싶긴한데 어쨌든 되긴 되잖아요 ㅎ😊ㅎ

0개의 댓글