2013-09-27 6 views
2

사용자가 페이지에서 나가길 원한다는 것을 확인하길 원합니다. 사용자가 말한다JavaScript - 사용자가 페이지를 떠날 때 코드 실행

$(window).bind('beforeunload', function(){ 
    return "Are you sure?"; 
}); 

경우 브라우저 탭을 닫기 전에 "예", 나는, 일부 데이터를 저장하는 아약스 요청을 만드는 기능을 실행하려면 : 나는 jQuery를이 방법으로 그렇게. 이것이 가능한가? 그리고 어떻게 그럴까요?

+0

어떤 종류의 기능입니까? 'onunload'가 존재하지만 예상대로 작동하지 않을 수도 있습니다. – Ryan

+0

@minitech AJAX 요청을하고 일부 데이터를 저장해야합니다. – lawls

답변

2

당신이 요구하는 것은 불가능합니다. beforeunload은 질문에 대한 답변을 바탕으로 자신의 메시지를 작성한 다음 분기를 허용하지 않습니다. 코드를 실행하거나 사용자가 페이지에서 벗어나 여부를 간단히 결정하는 프롬프트 문자열 만 반환 할 수 있습니다.

특히이 콜백을 받으면 (워드 프로세서의 자동 저장과 같은) 데이터를 저장하는 것이 좋습니다. 사용자가 페이지에 머물러 더 많은 변경을 수행하기로 선택한 경우 나중에 페이지의 새 상태를 다시 저장할 수 있습니다. beforeunload 처리기에서 시작된 ajax 호출이 제대로 완료 될 수 있도록 여러 브라우저를 신중하게 테스트해야합니다. 그것은 그래야만하는 것처럼 보이지만, 브라우저 간에는 구현상의 차이가있을 수 있습니다.


참고로, 이유 beforeunload은 당신이 원하는 경우 자신의 웹 사이트를 떠나지 못하도록 악의적 인 웹 페이지에 의해 남용을 방지하기 때문에 엄격한가 그래서입니다.

1

jfriend00 님이 당신이하려는 것을 언급하지 않으므로 불가능합니다. 그들이 뒤로 버튼을 누르면 비관적이기는하지만 최선의 방법입니다. 이것에 의하여 말 :이게 무슨 할 것입니다 것은 희망 전송하기 위해 아약스 통화 시간을 제공하고 새로운 데이터를 서버에 통지입니다

$(window).bind('beforeunload', function(){ 
    $.ajax({ 
     //Do ajax call to save 
    }); 
    return "Are you sure?"; 
}); 

. 페이지에서 벗어날 때 브라우저가 모든 요청을 죽이기 때문에 잘하면 말할 수 있습니다.

사용자가 브라우저를 강제로 닫을 때 트리거되지 않습니다.

관련 문제