我需要跟踪在我的网站上点击某些链接的次数。
我使用了一个基于 javascript 的方法,该方法包括绑定 click DOM 事件以调用我的计数函数,然后使用 document.location 方法将用户重定向到链接的 href 属性中最初指向的页面。
这是我的代码当前正在执行的操作的说明:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test file</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".myLink").on('click', function (event) {
console.log(event.which);
if (event.which == 2 ) { //it's a middleclick
setTimeout(function () {
alert("click counted!");
}, 1000);
} else { //it's a regular click
setTimeout(function () {
alert("click counted!");
document.location = "page_a.html";
}, 1000);
event.preventDefault(); //prevents the browser to load the linked page before the click is counted
}
});
});
</script>
</head>
<body>
<h1>Test file</h1>
<a class="myLink" href="page_a.html">Page A</a>
</body>
</html>
这适用于常规点击,但在少数情况下它不会按预期工作:
- 如果用户右键单击该链接,然后单击“在新选项卡中打开”,则该链接不计算在内。
- 如果用户使用 crtl+click(或 mac 上的 command+click),这是在新选项卡中打开链接的默认快捷方式,则单击计数但不是在新选项卡中打开,而是替换当前选项卡,如定期点击就可以了。
如果用户使用 middleclick,这也是在新选项卡中打开链接的常用默认快捷方式,它似乎运行良好。
我的问题很简单:如何在保持能够以不同方式在新选项卡中打开链接的默认行为的同时跟踪我的点击次数。
谢谢!