2012-06-21 47 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();

(你也可以使用onbeforeunload事件,而不是onunload,並返回某種確認信息,使您的Ajax請求有機會完成)

+0

我正在等待您的配置文件中的國際象棋遊戲。 ';'' –

+0

感謝您的幫助,但我試過了,它沒有起作用,這裏是我使用的代碼,以防萬一我錯過了某些東西。 window.onbeforeunload = pageleave; \t \t 功能pageleave(){ \t $ .POST( 「;/AJAX/videocanle.php 」,{VIDEOID:?「「}); \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

感謝您的幫助,但我嘗試過,並沒有奏效。有任何想法嗎? –

相關問題