일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- npm package
- camera access
- Recoil
- augmentedDevice
- custom printing
- react-native-dotenv
- camera permission
- github 100mb
- animation
- react-native
- Failed to compiled
- device in use
- ELECTRON
- adb connect
- Git
- ffi-napi
- vercel git lfs
- silent printing
- github pdf
- html
- rolldown
- 이미지 데이터 타입
- adb pair
- github lfs
- 티스토리 성능
- Each child in a list should have a unique "key" prop.
- dvh
- nextjs
- electron-packager
- Can't resolve
- Today
- Total
Bleeding edge
새로고침과 창끄기를 구분하는 방법 본문
고민한 이유
최근에 회사에서 채팅로그를 새로고침을 한 경우에는 저장을 하고, 창을 끄는 경우 없애자는 이야기가 나왔었다. 평소에 이런 비슷한 케이스가 있으면 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에 넣어서 마무리를 하였다.
마무리
방법을 알기만 하면 해결할 수 있는 정말 쉬운 방법이었는데, 잘못된 방향으로 생각을 해서 시간을 생각보다 많이 썼던 것 같다. 단순히 시스템적이나 컴퓨팅이 설계된대로 해결할 수 있는 문제가 있으면 그를 이용하여 개발하는 방법도 좋다고 생각이 들었다.
'Javascript' 카테고리의 다른 글
순차적으로 비동기 실행시키기 (0) | 2023.08.13 |
---|---|
환경에 따라 다른 서버로 Request 보내기 (0) | 2023.08.09 |
브라우저에서 로컬파일 여는 방법 (0) | 2023.01.25 |
Queue를 class로 구현해보자. (0) | 2022.10.30 |
클린코드 작성하기 (0) | 2022.07.10 |