如何通过Javascript监控用户点击链接?

时间:2009-02-17 22:01:22

标签: javascript html ajax

我的任务是确定是否可以使用javascript检测链接点击次数。

我知道onclick属性,它让我成为那里的一部分。除此之外,我不知道最好的方法是什么。我已经告诉我的老板,它可能涉及某种形式的ajax,这可能涉及一个大型图书馆,这是不可接受的。

有没有其他方法可以使用ajax,或者无论如何使用不会增加很多时间的ajax?

编辑:他希望能够告诉用户有多少次使用网站主页上的链接。不幸的是,我们无法做一个光滑的服务器端解决方案,因为网站上的几乎所有页面都只是普通的HTML。我希望将所有页面转换为php或其他替代方案,只需记下HTTP_REFERRER数据,但目前无法实现。

我们已经在使用Google分析;它不会记录引荐来源数据。

再次编辑:事实证明我的老板没有看到叠加层,我认为他点击了所有标签。根据我的调查,最初他们都报告零点击,但我发现我们已经有旧版谷歌的分析模糊了。快速升级到新的热点,问题就解决了。

感谢所有回复。

10 个答案:

答案 0 :(得分:8)

实际上,Google Analytics会跟踪这些数据。如果您转到报告的内容概述页面,则会显示网站覆盖图的链接。这将显示您的网站覆盖了页面上每个链接的点击次数。

site overlay example http://okay-plus.com/dropbox/img/site_overlay.jpg

答案 1 :(得分:3)

如果这是关于网站使用情况的数据收集,您是否考虑过Google Analytics

答案 2 :(得分:2)

jQuery.min.js的大小为30k或以下。那不算大。

为什么你的老板想要监控链接点击呢?如果是您自己网站上的网址,那么您应该能够从访问日志或Google Analytics(或者该信息的一些更有用的变体)中获取该网址。

答案 3 :(得分:2)

不会讨论这是否是一个好主意,但这里有一些代码可以解决你的标题问题。

正如你自己说的那样,onclick事件是一种可行的方法。您需要创建一个循环遍历a标签的脚本,并为它们分配onclick事件。像这样:

<script type="text/javascript">
window.onload = function() {
  var a = document.getElementsByTagName("a");
  for(var i=0; i < a.length; i++ ){
    a[i].onclick = function() { alert("link clicked"); };
  }
}
</script>

如果你想告诉服务器有关点击的信息,你需要一个AJAX调用而不是警告:)那个片段会进入head部分工作。

另一种解决方法是听一般window.onclick事件并跟踪被点击的对象,如果它是一个标签,你可以执行你想要的任何代码。

答案 4 :(得分:1)

出于某种原因,如果您无法使用谷歌分析,请尝试处理window.onclick事件,并从事件对象中读取src元素。这将告诉您触发click事件的对象。 (我相信键盘和鼠标都会触发点击。

仅针对IE编写的示例代码。如果您需要其他浏览器,则可能需要修改代码

document.onclick = function()
{
    alert(window.event.srcElement.id);
}

答案 5 :(得分:1)

如果您最终使用jQuery(如此推荐的海报之一),您可以相当轻松地拦截所有链接。例如,如果您想要计算每个链接被点击的次数(由id索引),您可以编写如下代码:

var clickCount = [];
$('a').click(function() { clickCount[$(this).attr("id")]++; return true; });

答案 6 :(得分:1)

除Google Analytics之外,您可能还希望查看ClickTale。它提供了网站覆盖以及谷歌没有的一些功能。

答案 7 :(得分:1)

顺便说一句,您还可以标记外部链接并让GA跟踪它们:

How do I manually track clicks on outbound links?

答案 8 :(得分:0)

您可能希望查看的另一个很棒的工具是http://mouseflow.com。鼠标跟踪,视频播放和热图。

答案 9 :(得分:0)

在 RXJS 中:

        import { fromEvent } from 'rxjs';

        const source = fromEvent(document, 'click').pipe(
            filter(value => (value as any).toElement.localName === 'a'),
            map(value => (value as any).toElement)
        ).subscribe(value => {
            track('Clicked Outbound Link', {link: value.href})
        })