BOARD

팁·활용

그누보드 글 작성 중 페이지 이탈 방지 경고창 추가 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 5회 작성일 26-10-08 17:26

본문

그누보드 글 작성 중 페이지 이탈 방지 경고창 추가 방법

그누보드 게시판에서 글 작성 도중 실수로 뒤로가기나 창 닫기를 했을 때 데이터 유실을 막기 위해 이탈 방지 경고창을 띄우고, 정상 등록 시에는 경고 없이 제출되도록 설정하는 방법을 안내합니다.

그누보드 글 작성 중 페이지 이탈 방지 경고창 추가 방법

그누보드 게시판에서 글 작성 중 실수로 뒤로가기를 누르거나 창을 닫아 데이터가 유실되는 것을 방지하려면, onbeforeunload 이벤트와 플래그 변수를 활용해 일반 이탈 시에만 경고창을 띄우고 정상 제출 시에는 우회하도록 구현할 수 있습니다.

1. 수정 파일 위치

  • 경로: skin/board/스킨명/write.skin.php

2. 코드 추가 방법

write.skin.php 파일 하단의 자바스크립트 영역(function fwrite_submit(f) 함수 위쪽 또는 <script> 태그 바로 아래)에 이탈 방지 스크립트를 추가합니다.

var checkUnload = true;
window.onbeforeunload = function() {
 if (checkUnload) {
 return "- 현재 작성중인 글이 있습니다.\n\n- 다른 페이지로 이동하시면 작성중인 글이 모두 사라집니다.";
 }
}

function fwrite_submit(f) {
 checkUnload = false; // 글쓰기 버튼 클릭 시 경고창 우회
 // 기존 제출 로직...
}

3. 동작 확인 및 주의사항

  • 확인 방법: 작성 중인 상태에서 브라우저 뒤로가기를 누르거나 창을 닫을 때 이탈 경고창이 정상적으로 노출되는지 확인합니다.
  • 정상 제출 확인: 작성 완료 후 글쓰기 버튼을 눌러 제출할 때는 경고창 없이 정상적으로 등록되는지 확인합니다.
  • 주의 사항: 브라우저별 onbeforeunload 동작 방식에 차이가 있을 수 있습니다.

글쓰기 제출 시 이탈 방지 경고창이 뜨는 이유와 해결 방법

글 작성 완료 후 제출 버튼을 누를 때 이탈 방지 경고창이 뜨는 현상은 브라우저가 글쓰기 제출 버튼을 눌러 페이지가 전환되는 동작도 사용자가 페이지를 벗어나는 것으로 인식하기 때문에 발생합니다.

해결 방법

skin/board/스킨명/write.skin.php 파일을 열어 정상 등록 시 경고창이 뜨지 않도록 예외 처리를 추가합니다.

  1. write.skin.php 파일의 스킨 스크립트 영역에서 function fwrite_submit(f) 함수를 찾습니다.
  2. 함수 시작 직후에 확인창을 해제하는 플래그 코드를 추가합니다.
checkUnload = false; // 페이지 이동시 확인창 해제

위 코드를 fwrite_submit(f) 함수 내부에 추가하면, 글쓰기 완료 버튼을 눌러 정상적으로 제출할 때는 경고창 없이 페이지가 넘어가게 됩니다.

상황별 안내

  • 내 상황: 그누보드 게시판에서 글 작성 중 실수로 뒤로가기나 창 닫기를 실행하여 작성 중인 내용이 유실되는 문제를 겪고 있는 운영자·개발자
  • 선택 기준: 게시판 스킨 폴더 내 write.skin.php 파일 하단 스크립트 영역에 onbeforeunload 이벤트를 추가하고, 정상 제출 시 경고창이 뜨지 않도록 checkUnload 플래그 변수를 적용하는 방식 선택
  • 다음 행동: skin/board/스킨명/write.skin.php 파일을 열어 하단 스크립트에 var checkUnload = true; 및 window.onbeforeunload 코드를 추가하고, fwrite_submit(f) 함수 시작 부분에 checkUnload = false;를 삽입하여 정상 등록 시 경고창 우회 설정

실전 FAQ

  • Q. 글쓰기 완료 버튼을 눌러 정상적으로 제출할 때도 이탈 방지 경고창이 뜨는 이유는 무엇인가요?
    • 예외 및 대안: 브라우저는 글쓰기 완료(제출) 버튼을 눌러 페이지가 전환되는 동작도 사용자가 페이지를 벗어나는 것으로 인식하기 때문에 발생합니다. 이를 해결하려면 fwrite_submit(f) 함수 시작 부분에 checkUnload = false; 플래그 해제 코드를 반드시 추가해야 합니다.

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.