2012-06-21 6 views
0

사용자가 페이지를 종료하기 전에 pageleave() 함수를 호출하려고합니다. 하지만 제대로 작동하지 않는 것 같아서 몇 시간 동안 웹을 검색 했으므로 해결책을 찾을 수 없습니다. 다음은 내가 생각해 낸 코드입니다. 페이지가 언로드되는 대신 페이지가로드 될 때 실행됩니다.사용자가 페이지를 떠날 때 JavaScript 함수 호출

window.onbeforeunload = pageleave; 

     function pageleave() { 
      $.post("<?php echo dirname(get_bloginfo('stylesheet_url')); ?>/ajax/videocanle.php", { videoID: "<?php echo $videoID; ?>" }, 
       function(data) { 
        if (data != "\nsuccess"){ 
         alert ("Sorry but there was an unexpected error, please try again"); 
        } 

       }); 

     } 

이는 현재 개정판이며, 페이지가 언로드되기 전에는 여전히 기능을 실행하지 않습니다. 이 함수는 작동하지만 간단한 입력 버튼으로 테스트했습니다.

<input type="button" value="test function" onclick="pageleave()" /> 

답변

5

당신은 기능하지합니다 (()가하는 일입니다) 함수를 호출의 결과에 대한 참조를 할당해야합니다. 제거 () :

window.onunload = pageleave();

(. 당신은 대신 onunloadonbeforeunload 이벤트를 사용하고, 또한 Ajax 요청을 완료 할 수있는 기회를 가질 수 있도록 확인 어떤 종류의 메시지를 반환 할 수 있습니다)

+0

나는 당신의 단면도에있는 체스 게임을 기다리고있다. ';)' –

+0

도움을 주셔서 감사합니다.하지만 시도했지만 작동하지 않았습니다. 여기에 제가 누락 된 코드가 있습니다. window.onbeforeunload = pageleave; \t \t 함수 pageleave() { \t $ .post ("/ AJAX/videocanle.php "{동영상 ID : " "})); \t \t \t \t \t \t \t} –

3
window.onunload=pageleave; 

     function pageleave() { 
      $.post("<?php echo dirname(get_bloginfo('stylesheet_url')); ?>/ajax/videocanle.php", { videoID: "<?php echo $videoID; ?>" });  
     } 
+0

이 onbeforeunload' 또한'이 될 수 있습니다. –

2

함수에 대한 참조를 전달하려고합니다. 귀하의 예제에서 당신은 할당 문에서 함수를 호출하고있었습니다. 이것을보십시오 :

window.onunload = function() { 
    $.post("<?php echo dirname(get_bloginfo('stylesheet_url')); ?>/ajax/videocanle.php", { 
    videoID: "<?php echo $videoID; ?>" 
    });  
}; 
+1

도움을 주셔서 감사합니다.하지만 시도했지만 작동하지 않았습니다. 어떤 아이디어? –

관련 문제