Bleeding edge

새로고침과 창끄기를 구분하는 방법 본문

Javascript

새로고침과 창끄기를 구분하는 방법

codevil 2023. 4. 12. 09:24

고민한 이유

최근에 회사에서 채팅로그를 새로고침을 한 경우에는 저장을 하고, 창을 끄는 경우 없애자는 이야기가 나왔었다. 평소에 이런 비슷한 케이스가 있으면 window addeventlistener에서 beforeunload를 이용해서 해결했는데, 문제는 이 방법은 새로고침과 창을 끄는 경우 모두 포함한다.

 

검색 결과

reload와 close에 대해 검색하다보면 꺼질 때의 position에 따라 처리해라 이런 다양한 글들이 보였었는데,안될꺼같아서 우선 다 제외하고, 둘의 차이에 대해 검색을 하다가 다음과 같은 글을 보았다

 

https://stackoverflow.com/questions/568977/identifying-between-refresh-and-close-browser-actions

 

Identifying Between Refresh And Close Browser Actions

When we refresh the page (F5, or icon in browser), it will first trigger ONUNLOAD event. When we close the browser (X on right top icon),It will trigger ONUNLOAD event. Now when ONUNLOAD event is

stackoverflow.com

 

요약

첫 번째가 아닌 두 번째 답글이 더 나은거 같아서 두 번째 글을 적용하였는데, 바로 localStorage가 아니라 sessionStorage를 이용하는 방법이었다. 생각해보면 당연한건데 너무 eventlistener를 이용해서 해결하려고해서 생각을 못했던 것 같다.

 

해결

이번에는 채팅로그만 관리하면 끝이기 때문에 단순히, sessionStorage.setItem과 sessionStorage.getItem을 beforeunload에 넣어서 마무리를 하였다.

 

마무리

방법을 알기만 하면 해결할 수 있는 정말 쉬운 방법이었는데, 잘못된 방향으로 생각을 해서 시간을 생각보다 많이 썼던 것 같다. 단순히 시스템적이나 컴퓨팅이 설계된대로 해결할 수 있는 문제가 있으면 그를 이용하여 개발하는 방법도 좋다고 생각이 들었다.