3 Stimmen

Auffangen/Abfangen aller Mausklicks

Ich habe dieses einfache Skript, das alle Mausklicks abfängt, es sei denn, man klickt auf etwas, das tatsächlich funktioniert. Links, Flash-Videos, etc. Wie kann ich das so einstellen, dass egal was ein Benutzer anklickt, bevor das Video geladen wird, eine neue Seite geladen wird, etc. Es sendet die einfache GET-Anfrage, die ich erstellt habe?

(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();
});

2voto

Gabriele Petrioli Punkte 182294

Ich denke, das Beste wäre, Live-Bindung und den *-Selektor zu verwenden

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

Auch der Ajax-Aufruf muss möglicherweise synchron erfolgen (Sie müssten die .ajax() für diese ) ( Ich bin mir nicht sicher, ob dies erforderlich ist, um zu vermeiden, dass der Get-Aufruf durch einen normalen Link-Klick unterbrochen wird. )

1voto

Sam Punkte 563

Können Sie die Klick-Ereignisse nicht an einen Platzhalter binden? D.H.

$('*').bind('mousedown.clickmap', function(evt){

`

//do stuff

`

});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X