我正在尝试跟踪我自己管理的网站上用户的交互。通过跟踪,我的意思是,我想跟踪用户何时按下哪个按钮或小部件以及花费了多少时间等信息。在我开始使用Javascript编写代码之前,我想先了解最佳操作选项和可能存在的问题。
我正在尝试跟踪我自己管理的网站上用户的交互。通过跟踪,我的意思是,我想跟踪用户何时按下哪个按钮或小部件以及花费了多少时间等信息。在我开始使用Javascript编写代码之前,我想先了解最佳操作选项和可能存在的问题。
虽然这个问题已经发布有一段时间了,但我一直在开发一个简单的JavaScript模块来完成此任务。
它不使用图像,而是从用户指定的HTML元素中捕获事件数据以及有关站点访问者浏览器配置的基本信息。然后,在beforeunload事件上触发XHR将数据发送到指定的服务器端点。
这里是Github项目链接和一个示例页面
关于代码,以下是HTML的示例:
<!DOCTYPE html>
<html>
<head>
<title>Interaction Tracker Example</title>
</head>
<body>
<div class="someElement"></div>
<div class="someOtherElement"></div>
<div class="conversion"></div>
<script src="interactor.min.js" type="application/javascript"></script>
<script>
// An example instantiation with custom arguments
var interactions = new Interactor({
interactions : true,
interactionElement : "someElement someOtherElement",
interactionEvents : ["mousedown"],
conversions : true,
conversionElement : "conversion",
conversionEvents : ["mouseup"],
endpoint : '/usage/interactions',
async : true
});
</script>
</body>
</html>
该架构允许您轻松跟踪多个元素通过多个实例,从而使您可以自定义将不同的交互发送到哪些端点。这样可以清晰地分离出任何服务器端预处理,以便将数据保存到数据库中。
var elementsToTrack = [
{
element : "cssClass1",
events : ["mouseup", "touchend"],
endpoint : "/interactions/c1"
},
{
element : "cssClass2",
events : ["mouseup"],
endpoint : "/interactions/c2"
},
{
element : "cssClass3",
events : ["mouseup"],
endpoint : "/interactions/c3"
}
];
for (var i = 0; i < elementsToTrack.length; i++) {
var el = elementsToTrack[i];
new Interactor({
interactionElement : el.element,
interactionEvents : el.events,
endpoint : el.endpoint
});
}
如果您不需要从服务器返回任何值,则使用ajax会有一些额外开销 - 我会使用图像ping(创建带有脚本源的图像元素,并发送任何参数)
对于事件,请将它们绑定到文档并检查事件目标(请注意 - blur,focus和change不会冒泡)
document.body.addListener(event, function() {
var i = new Image();
i.src = 'script.php?target=' + event.target;
}, false);
在时间测量方面,您可以检查元素之间事件经过的时间。
$("#my_button").click(function() {
// This sends us an event every time a user clicks the button
mixpanel.track("Button clicked");
});
Google Analytics 为此提供了一款优秀的 JavaScript 库:
https://github.com/googleanalytics/autotrack
当然,它希望你在应用中使用Google Analytics,但是它有一个免费版本可供使用。请查看他们的免费和付费服务之间的比较。