[작업한 이유]
데스크탑 설치형 서비스를 일렉트론이라는 툴을 이용해서 개발하고 있다.
그리고 일렉트론은 기본적으로 제공하는 상단 바가 존재하지 않는다.
이전에 우리 서비스는 뒤로가기/앞으로가기가 따로 없이 레이어를 전환하는 방식으로 구현되어있었는데
이번 웹 리뉴얼에서 뒤로가기/앞으로가기가 생기면서
설치형에서도 해당 기능을 사용할 수 있도록 상단바의 일부 기능이 필요하게 되었다.
찾아보니 라이브러리를 이용하는 방식도 있지만
직접 아이콘으로 커스텀하여 기능을 적용하는 방식이
더 서비스에 녹아들기 좋을 것 같아 직접 기능을 넣는 방식으로 결정했다.
- 뒤로가기
- 앞으로가기
- 새로고침
- 우클릭시 새로고침 / 강력새로고침 선택팝업
[작업방식]
이참에 일렉트론의 이벤트만 처리하는 파일도 분리해서 작업했고 이벤트 위임방식을 사용했다.
(일부 클래스명/함수명은 블로그용으로 한글로 바꿨음.)
function 클릭이벤트함수($eTarget) {
if (isBackBtnAndAction()) return;
if (isForwardBtnAndAction()) return;
if (isReloadBtnAndAction()) return;
if (isReloadMenuAndAction()) return;
function isBackBtnAndAction() {
var $backBtn = $eTarget.closest('.뒤로가기');
if($backBtn.length === 0) return false;
history.go(-1);
return true;
}
function isForwardBtnAndAction() {
var $forwardBtn = $eTarget.closest('.앞으로가기');
if($forwardBtn.length === 0) return false;
history.go(1);
return true;
}
function isReloadBtnAndAction() {
var $reloadBtn = $eTarget.closest('.새로고침');
if($reloadBtn.length === 0) return false;
location.reload();
return true;
}
function isReloadMenuAndAction() {
var $reloadMenu = $eTarget.closest('.새로고침팝업');
if($reloadMenu.length === 0) return false;
var dataCode = $reloadMenu.attr('data-code');
if(dataCode === '새로고침') window.location.reload();
else if (dataCode === '강력새로고침') window.location.reload(true);
return true;
}
}
결국 요약하자면 매우매우매우 간단
- 뒤로가기 : history.go(-1)
- 앞으로가기 : history.go(1)
- 새로고침 : window.location.reload();
- 강력새로고침 : window.location.reload(true);
반응형
'Dev Note > Electron' 카테고리의 다른 글
2. 일렉트론의 프로세스 구조와 통신에 대해 알아보자. (0) | 2023.03.12 |
---|---|
1. 데스크탑 애플리케이션 프레임워크, 일렉트론에 대해 알아보자. (2) | 2023.02.26 |