点击热图和鼠标坐标! - Javascript

问题描述:

我正在尝试为我的一个站点构建一个简单的热图,但是我认为它似乎更复杂!点击热图和鼠标坐标! - Javascript

1)该网站有不同的主题,1个左对齐,另一个与中心对齐。

2)整个用户的屏幕尺寸发生变化。

我需要跟踪网站上的点击次数,但不幸的是,event.PageX和event.PageY会根据整个屏幕进行计算。


例子

在第一个例子点击坐标[300,500]可能会被周围设大猩猩的地方(也许他的鼻孔!=))。

alt text

在这种其它示例具有坐标[300点击。 500]可能会位于主要内容区域之外的某个地方

alt text


底线: 我怎样才能解决这个问题,这样我就可以建立一个准确的DIY点击热图?

这将是真正有趣的知道!多谢你们! =)

1)只需传递当前主题以及坐标。

2)获取您主要内容区域的relative mouse position。这样可以避免不同浏览器宽度/高度的不同位置问题。

有一个在jQuery docs for Mouse Position一个特殊的部分(如果你使用它)这一点:

(注意,像素值给出的 相对于整个文档如果 要计算。一个特定的元素中的位置 ,或在 视口,你可以看看OFFSETY 和OFFSETX,并做一点 算术找到相对值。

这里找到012例特定元素中位置 而非页面:

$("#special").click(function(e){ 
    var x = e.pageX - this.offsetLeft; 
    var y = e.pageY - this.offsetTop; 
    $('#status2').html(x +', '+ y); 
}); 

话虽这么说,也许是矫枉过正; Google Analytics也具有热图功能。

+0

非常感谢您的回复!我真的需要找到一种方法来识别使用Javascript的内容包装,它将有点复杂,不得不强制或找到每个主题的id。只要在每个主题中粘贴一些Javascript代码就会容易得多。顺便说一下,这是我第一次使用以荷兰语编写的Google Analytics(分析)! =) – RadiantHex 2010-07-26 09:53:06

+0

@RadiantHex:以silverbackapp.com为例,你的内容包装div有class'content'。如果您使用的是jQuery,您可以使用'.content'(而不是#special)来定位它。 – 2010-07-26 13:55:43

这是我的代码。它仅在页面包装器中记录点击(而不是背景)。所以你只能得到相对位置。

$(function(){ 
    var o = $("#wrapperDiv"); // page wrapper div 
    var lf = o.offset().left; // wrapper left position 
    var lt = lf+o.width(); // wrapper right position 
    $(document).click(function(e){ // bind click event to whole page 
    var x = e.pageX; // mouse x position 
    if(x >= lf || x <= lt){ // was the click inside wrapper div? 
     $.get("heatmap.php", { // send ajax request to server width: 
     x: x-lf, // x position of page 
     y: e.pageY, // y position of page 
     url: document.location.href.replace('http://'+document.domain, '') // request uri 
     }); 
    } 
    }); 
}); 
+0

谢谢!任何聪明的方法,我可以让Javascript了解包装是什么div? – RadiantHex 2010-07-26 09:45:30

+0

@RadiantHex,通过设置其id为'wrapperDiv'。 – 2010-07-26 09:47:36

+0

@丹尼尔:嗨,丹尼尔,我对你的回复留了言。 :)如果我能想出一种方法来动态地理解div封装是什么,那将会很棒。我认为有一套固定包装的方法,例如,文本对齐并将div设置为内嵌块。所以我认为我可以用Javascript来寻找这个,但我相信可能有其他方法来实现这一点,这可能会让我放慢脚步。 – RadiantHex 2010-07-26 09:56:17

不是为每次点击存储绝对合作伙伴,您可以根据潜在对象(即大猩猩)存储每次点击的可靠合作伙伴。

然后,在显示热图时,显示相对于您的分辨率的每个对象的点击。

要做到这一点,您只需抓住每次点击的“目标”对象(这是事件参数的'target'属性),并从点击共同点减去它的共同点。

+0

有趣和令人耳目一新的想法!我喜欢这个概念,我会考虑它=) – RadiantHex 2010-07-26 09:48:35

+0

这是一个真正的好主意,我相信它也可以被概括一点!例如大猩猩可以作为一个里程碑,因为无论如何它都将在内容包装中,并且所有的点坐标都可以与它相关联。现在的问题是,让代码在地标上达成一致! =) – RadiantHex 2010-07-26 10:15:49