在任何document.location更改之前保证执行Javascript AJAX

时间:2013-10-24 13:14:01

标签: javascript

考虑到很多因素,我想跟踪我网站上的访问者。我通过连续的Javascript监控进行跟踪,并通过AJAX调用实时将收集的数据发送到服务器。

我的问题是,在用户点击正常链接或JS处理的更改document.location的DOM元素后,我的脚本不会记录最后一次点击并发送到我的服务器。

我认为我应该更改每个DOM的元素onClick事件,首先让我的脚本执行他的操作(preventDefault),然后继续执行原始的onClick事件,但这个解决方案似乎不合适且有点冒险(如果创建了任何onClick事件,该怎么办?在我第一次改变所有事件之后,由于显而易见的原因,我不能连续扫描和修改。

最好的方法是什么?

4 个答案:

答案 0 :(得分:1)

您可以使用window.onbeforeunload

function getTrack(e){
    //do your stuff
}

window.onbeforeunload=getTrack;

答案 1 :(得分:0)

我认为,根据您尝试跟踪的数据,您应该尝试查看Google Analytics,然后自动跟踪。

答案 2 :(得分:0)

无法确保来自onbeforeunload或onunload的请求将进入服务器。现代浏览器取消请求。

如果您想确保任何传出域名调用都能进入您的日志,您基本上需要劫持所有点击并取消操作。您将发送Ajax调用,完成后,您将执行页面导航。

答案 3 :(得分:0)

可能是使用jquery的一种方式。

<a class=' location'  href=' page.php'> click </a>
<script>
$(document).ready (function (e){
      $(".location").click (function(){
      e.preventDefaults();
     var link = $(this).attr("href");
      $.ajax({
            type:"GET",
            url:"update_visitoi_infoo.php",
            data:{v_info:"value"},
            success:function(resp) {
                   document.location.href=link;
            }
     });
   });
});