2011-04-07 4 views
0

"이 페이지에서 이동 하시겠습니까?"라는 기본 메시지를 생성하는 window.onbeforeunload 함수가 있습니다. "OK"를 클릭하면 새 링크로 리디렉션되고 "취소"를 누르면 다시 같은 페이지로 리디렉션됩니다.window.onbeforeunload 처리 ok 및 취소 옵션

"ok"를 누르고 페이지에서 벗어날 때 페이지의 일부 데이터를 저장하고 싶습니다. "ok"또는 "cancel"을 눌렀는지 어떻게 알 수 있습니까? 그런 다음 이벤트 호출을하고 "ok"/ "cancel"옵션으로 계속하십시오.

답변

-1

자바 스크립트 '확인'대화 상자를 사용하고 있습니까?

if(confirm("Are you sure you want to navigate away from this page....")) { 
    // OK was pressed 
} else { 
    // Cancel was pressed 
} 
+2

대화 상자는 브라우저에 의해 생성 된 것일 수 있습니다. https://developer.mozilla.org/en/DOM/window.onbeforeunload – Archimedix

+0

onunloadbefore()에서'confirm()'함수를 사용할 수 없습니다. 그것은 작동하지 않습니다. 브라우저는 문자열을 반환하면 확인 대화 상자를 만듭니다. –

0
function leavePage() { 
    //do your thing like saving the data in the session 
    return "Some data entered may be lost."; //a text needs to be returned 
} 

window.onbeforeunload = leavePage; 
+0

"ok"를 누르면 데이터를 저장하고 "cancel"을 누르지 않으면 데이터를 저장하려고합니다. 솔루션에서 데이터는 두 경우 모두 저장됩니다. – prateek

0

가능한 접근 방식뿐만 아니라 onunload 이벤트에 후크 할 수 있습니다, 그 핸들러가 호출되는 경우, 사용자가 OK을 선택 것을 알고있다.

onbeforeunload에서 나중에 일정 시간 (예 : 1 초)이라고하는 시간 초과 콜백을 설정하고, 호출 된 경우 사용자가 Cancel을 선택했을 수 있습니다.

경주 상태에 대한 안전성이 얼마나 확실하지 않습니다.

+0

그러나, 1 초가 너무 짧아서 사용자가 취소하기로 결정했는지 여부를 알 수있는 절대적인 끔찍한 방법입니다. 내가 제대로 작동하게하려면 5 초에서 10 초 사이의 타임 아웃을 사용해야했습니다. –