xiaght
20
2022-07-28 09:10:05
2
70

새로고침 이벤트? 처리 질문드립니다


최근에 와서 처음으로 html쪽을 공부하면서 db를 사용하기위해

파이어스토어를 사용했습니다.


처음에 값읽어와서 표시까지해주고 나중에 종료시 해당값들을 데이터 베이스에 업데이트를 해줘야되는데

beforeunload 라는 함수?를 사용해 새로고침이나 종료시 창을 만들어주고 업데이트 함수를 실행시키는 방식으로 만들어봤는데요

처음 새로고침을 누른상태에서 확인을 누르면 실행이 안되고 취소를 누른상태에서는 업데이트가 실행이 됩니다. 이후 두번째부터는 창이 나오는 시점부터 함수가 실행되어 무엇을 눌러도 함수가 실행됩니다.

두가지 차이가 따로있을까요??


그리고 제가 유니티쪽이랑 연결하다보니까 sendmessage를 사용해 유니티와 연결을 하는데 

예를 들어 새로고침시 html쪽에서 sendmessage를 통해 유니티쪽에 정보를 읽어오는 함수를 실행시키고 이를 jslib의 함수를 거쳐 다시 html쪽에서 업데이트 해주는 함수를 실행하고 있는데 이렇게 하는방식이 맞는지 궁금합니다 작동은 되는데 뭔가 한바퀴 돌아가는 느낌이라 sendmessage의 리턴값을 가져오면 되는데 함수자체가 리턴값이 없는거라 일단 이런식으로 만들었습니다.

0
  • 답변 2

  • 카놀라유
    1k
    2022-07-28 13:01:38 작성 2022-07-28 13:02:21 수정됨
    웹 브라우저 단에서 행해지는 뒤로가기, 앞으로가기, 새로고침 등의 동작은 그런 단순한 이벤트 동작으로 catch 할 수 없습니다.
    브라우저 별로 호환성도 다르고 인터넷의 어떤 블로드, 어떤 스택 오버플로우 답글도 완벽한 해결책을 주지 못합니다.
    분명 스펙상으로 호환이 된다고 함에도 불구하고 크롬에서 되도 사파리에서 안되고, 사파리에서 되도 오페라에서 안되는 등 변수가 많아요.
    꼭 새로고침을 해야하나요?? 빠르게 포기하고 다른 방법으로 처리하는게 더 좋아보입니다.
  • xiaght
    20
    2022-07-28 14:55:09

    제가 서버나 db를 사용해본적이 없어 이렇게 생각했습니다. 원레는 어떤 방식으로 작동하는지 업데이트 시점을 어디서 제어할지 따로 기준이 있을까요??
    유니티 webgl로 빌드해서 작업을 하다보니 유니티상의 정보를 db를 통해 중간 native bridge같은걸로 연결해서 작업중입니다. 처음 새로고침을 누를때 await때문에 타이밍이 안맞은거라 생각해 모든게 실행된뒤 1초뒤에 update를 실행시켜주고하니 미리 연결된 db와 바로 통신이 되어 가능했습니다.

    다하고나니 너무 편법같고 맞는 방식이 아닌거같아 어떻게할지 고민이네요;;

  • 로그인을 하시면 답변을 등록할 수 있습니다.