在页面卸载时执行javascript?

在页面卸载时执行javascript?,javascript,php,jquery,Javascript,Php,Jquery,您好,当用户单击close tab按钮、back按钮、链接等时,我想调用JavaScript函数。到目前为止,我已经做到了这一点: <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" language="javascript" type="text/javascript"></script> <script type="text/java

您好,当用户单击close tab按钮、back按钮、链接等时,我想调用JavaScript函数。到目前为止,我已经做到了这一点:

 <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js" 
              language="javascript" type="text/javascript"></script>

 <script type="text/javascript">

                $(window).unload(function(){
                  pageleave();
                });

               if(loged){
                    var Art = "<?php echo $id;?>";
                    var User = "<?php echo $email;?>";
                    var olikes = "<?php echo $Olikes;?>";
                    var odislikes = "<?php echo $Odislikes;?>";
                    var state = "<?php echo $state1; ?>";
                    function pageleave() {
                        $.get("dealLikes.php?article=Art&user=User>&state=1&likes=likes&dislikes=dislikes&Olikes=olikes&Odislikes=odislikes&prev=state");
                        alert("done");
                        return false;
                    }
               }else{}


              </script>

然后,该函数应该执行一个php文件。然而,它没有走那么远,页面离开函数没有被调用,我用一个警报测试了卸载函数,但它没有工作。我在网上搜索了一下,但没有找到任何有用的东西。我做错了什么?

对不起,我没有看到您在使用jQuery。该字符在1.8中被弃用,在3.0中被删除

这也是一个重复的问题

实际的做法是

window.onbeforeunload = function() {
    return "Bye now!";
};

无论如何,我认为在您执行将程序控制权返回到js事件循环(如异步请求)的那一刻,它将关闭窗口

我相信是您弄错了,没有window.unload,实际上是window.onunload,但由于OP使用jQuery,$window.unload。。。是正确的。它仍然不起作用。现在您正在取得进展,jQuery 3.1.1没有卸载method@adeneo是的。我错了,我编辑了我的答案。卸载事件充其量是不可靠的,不同浏览器的行为也不同,而且永远不能保证在客户端离开之前会发生什么。