用户离开页面时调用JavaScript函数

时间:2012-06-21 01:05:32

标签: javascript

我希望在用户退出页面之前调用函数pageleave()。但我似乎无法让它正常工作,我在网上搜索了几个小时,无法找到解决方案。这是我想出的代码。它在页面加载时运行,而不是在页面卸载时运行。

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()" />

3 个答案:

答案 0 :(得分:5)

您需要分配对函数的引用,而不是调用函数的结果(这是()的作用)。删除()

window.onunload = pageleave();

(您可能还希望使用onbeforeunload事件而不是onunload,并返回某种确认消息,以便您的Ajax请求有机会完成。)

答案 1 :(得分:3)

window.onunload=pageleave;

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

答案 2 :(得分:2)

您想传递对该函数的引用。在您的示例中,您在赋值语句中调用该函数。试试这个:

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