답변 7개
채택된 답변
+20 포인트
다른 분들이 다 써주셨는데
창을 닫거나 이동할 때 알러트 창으로 알려주는 것도 한계가 있습니다
소스는 배르만님의 소스가 좋을듯 합니다
제일 좋은 건 sinbi님이 쓰신대로 수시로 저장 복사 해 두는게 좋습니다
플래토님이 쓰신대로 자동 저장되는 에디터를 이용 하시는 것도 방법입니다
자유게시판이 아마 그런류가 아닐까 싶습니다
프로그램을 짜게 되신다면 아래의 스토리대로 하시면 도움이 될겁니다
일정 시간을 정해 놓은 상태에서 기준 시간이 되면( 자바스크립으로 타이머를 만들어 사용) 준비된 디비 테이블에 작성된 글을 임시 저장 ( 기준 시간이 되면 ajax등을 이용 저장 )을 하거나
혹은 웹브라우저에 있는 로컬 스토리지 ( 쿠키와 같은 저장소 )에 저장을 하게 해 두고
1분이면 1분 5분이면 5분 기준으로 저장하게 합니다
잘못된 행동이나 예기치 못한 일로 인해서 페이지를 벗어나거나 컴퓨터가 꺼진후 다시 접근시
작성중이던 쓰기 페이지에 접근 했을때 임시글이 있다면 불러올 수 있습니다 (
아이피와 아이디 등으로 디비와 대조해서 작성된 글을 ajax등으로 호출 내용을 글쓰기란에 뿌려줌
그러면 최소 5분 전까지의 글은 살릴수 있죠 )
저장시에는 임시 저장되었던 현재의 글타래들은 삭제합니다
완전히 닫히지 않게 막는것은 웹브라우저 실행영역 권한 밖입니다.
다만 동의여부를 확인하게 하는 방법은 있습니다.
Copy
<html>
<head>
<script>
const fn_beforeunload = function (evt) {
evt.preventDefault();
return evt.returnValue = 'sure ?';
};
document.addEventListener('DOMContentLoaded', function () {
const txt = document.getElementById('txt');
txt.addEventListener('input', function (evt) {
if (this.value == '') {
removeEventListener('beforeunload', fn_beforeunload, { capture: true });
} else {
addEventListener('beforeunload', fn_beforeunload, { capture: true });
}
}, false);
}, false);
</script>
</head>
<body>
<input id="txt" type="text" />
</body>
</html>
답변을 작성하려면 로그인이 필요합니다.