일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
Tags
- input 숫자입력
- gsap
- 프론트앤드
- React Native navigation
- 트윈맥스 기초
- js 특정 위치로 이동
- slick slider 간격
- styled component 작동안함
- react이론
- 웹뷰 페이지 로딩
- safari wiondow.open
- 퍼블리셔
- 리액트
- React Native SafeArea Custom
- styled component
- react
- styled component 작동 안될때
- react native safeArea
- scrollIntoView scrollTo
- RN navitate push
- JS
- 임고미
- reactnative 웹뷰 페이지 로딩
- 타입스크립트
- gsap 기초
- rn webview page loading
- styled component is not working
- React-Native 공부
- React-Native IOS
- SafeArea 커스텀
Archives
- Today
- Total
개발공부 임고미
[Javascript] 웹브라우저 뒤로가기버튼 제어하기 본문
728x90
300x250
뒤로가기 제어하기
방법 1.
window.onpopstate = function(event) {
// "event" object seems to contain value only when the back button is clicked
// and if the pop state event fires due to clicks on a button
// or a link it comes up as "undefined"
if(event){
// Code to handle back button or prevent from navigation
}
else{
// Continue user action through link or button
}
}
방법 2.
페이지 리로드하지 않고 url만 변경하기
history.pushState( state , 'title', 'url');
참고 : https://developer.mozilla.org/ko/docs/Web/API/History/pushState
state = 상태 값을 나타내는 것으로 브라우저에서 앞/ 뒤로 갈 때, 넘겨줄 데이터
title = 변경할 브라우저 제목 (변경을 원하지 않으면 null)
url = 변경할 브라우저 URL
window.onpopstate = function(event) {
alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
}
브라우저에서 뒤/앞으로 가는 버튼 클릭 시 onpopstate 이벤트가 발생한다.
이때 콜백함수에서 event.state는 pushState 함수의 인자 값이였던 state 객체가 넘어온 것이다.
방법 3. 태그에 웹브라우저 뒤로가기 / 앞으로가기 추가
//뒤로가기
window.history.back();
//앞으로가기
window.history.forward();
//특정페이지로 이동하기
window.history.go(number ex) 1,2,3,-1) // 안에 숫자를 적어넣어 특정페이지로 이동
//만약 -1 을 넣은 경우 : back()와 동일한 효과
//만약 1을 넣은경우 : forword()와 동일한 효과
방법 4. 뒤로가기 막고 모달 띄우기
window.history.pushState(null, '', location.href);
window.onpopstate = () => {
history.go(1);
this.handleGoback();
};
window.onpopstate = () => {
history.go(1);
this.handleGoback();
//여기에 모달창 코드
};
이 구문은 뒤로가기 액션이 들어올때 히스토리를 한칸 앞으로 옮겨줍니다. 실질적으로 뒤로가기가 되지 않는 효과가 있습니다. 이후 모달을 닫는 로직이 들어있는 함수를 실행 시켜주었습니다.
여기서 한가지 주의 할 점은 이후 모달이 삭제되어야 한다는 점입니다. 만약 삭제 되지 않고 display:none 등으로 처리되면 뒤로가기 할때에 다시 마운트 되고 계속 히스토리 스택을 쌓으려고 하기 때문에 주의 하여야 합니다.
참고
https://jintaewoo.tistory.com/13
https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_pushState()_method
https://developer.mozilla.org/ko/docs/Web/API/WindowEventHandlers/onhashchange
728x90
300x250
'퍼블리싱 > html css js' 카테고리의 다른 글
[Javascript] Daum 우편번호 서비스 사용하기 (0) | 2020.09.08 |
---|---|
[Javascript] flatpickr를 이용해 간단한 달력만들기 (0) | 2020.09.08 |
[리액트]less , font 적용하기 (0) | 2020.09.02 |
[Javascript] 배열공부 (0) | 2020.09.02 |
사이트 주소창 관련 (0) | 2020.09.02 |
Comments