首页 文章

捕获/拦截所有鼠标点击

提问于
浏览
3

我有这个简单的脚本捕获所有鼠标点击,除非你点击实际工作的东西 . 链接,Flash视频等 . 无论用户点击什么,在视频加载,新页面加载等之前,我如何调整它 . 它发送我构建的简单GET请求?

(function($) { 

$.fn.saveClicks = function() { 
$(this).bind('mousedown.clickmap', function(evt) {
    var clickDocument = (document.documentElement != undefined && document.documentElement.clientHeight != 0) ? document.documentElement : document.body;
    var width = clickHeatDocument.clientWidth != undefined ? clickDocument.clientWidth : window.innerWidth;
    var height = clickHeatDocument.clientHeight != undefined ? clickDocument.clientHeight : window.innerHeight;
    var scrollx = window.pageXOffset == undefined ? clickDocument.scrollLeft : window.pageXOffset;
    var scrolly = window.pageYOffset == undefined ? clickDocument.scrollTop : window.pageYOffset;
    var x = evt.clientX + scrollx;
    var y = evt.clientY + scrolly;
    $.get('/click-save.php', {  
        "x":x,  
        "y":y,
        "click":"true",
        "w":width,
        "h":height,
        "l":escape(document.location.pathname),
        "d":escape(document.domain)
    }); 
}); 
};

})(jQuery); 

$(function() {
    $(document).saveClicks();
});

2 回答

  • 2

    我认为最好的方法是使用实时绑定和*选择器

    $('*').live('click.clickmap', function(evt){ ... });
    

    也可能需要同步ajax调用(你需要使用 .ajax() ...)(不确定是否需要这样做,以避免get通过普通链接点击中断)

  • 1

    你能不能将点击事件绑定到通配符? I.E.

    $('*').bind('mousedown.clickmap', function(evt){
    //do stuff
    });

相关问题