Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Javascript监控用户点击链接?_Javascript_Html_Ajax - Fatal编程技术网

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

如何通过Javascript监控用户点击链接?,javascript,html,ajax,Javascript,Html,Ajax,我的任务是确定是否可以用javascript检测链接点击 我知道onclick属性,这让我有了一部分的了解。除此之外,我不知道最好的方法是什么。我已经告诉我的老板,这可能涉及某种形式的ajax,这可能涉及一个大型库,这是不可接受的 那么,有没有其他方法可以使用ajax,或者说使用ajax不会增加很多时间 编辑:他想知道用户使用网站主页上链接的次数。不幸的是,我们不能做一个光滑的服务器端解决方案,因为网站上几乎所有的页面都是纯html。我很想将所有页面转换为php或其他替代方案,只需注意HTTP_

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

我知道onclick属性,这让我有了一部分的了解。除此之外,我不知道最好的方法是什么。我已经告诉我的老板,这可能涉及某种形式的ajax,这可能涉及一个大型库,这是不可接受的

那么,有没有其他方法可以使用ajax,或者说使用ajax不会增加很多时间

编辑:他想知道用户使用网站主页上链接的次数。不幸的是,我们不能做一个光滑的服务器端解决方案,因为网站上几乎所有的页面都是纯html。我很想将所有页面转换为php或其他替代方案,只需注意HTTP_参考数据,但目前还不可能

我们已经在使用谷歌分析;它不记录推荐人数据

再次编辑:原来我的老板没有看到覆盖图,我猜他点击了所有的标签。经过我的调查,最初他们都报告零点击,但我发现我们有谷歌的分析广告的旧版本。快速升级到新的hotness one,问题就解决了


感谢所有的回复。

如果这是为了收集有关网站使用情况的数据,您考虑过吗?


你的老板为什么还要监视链接点击?如果是你自己网站上的URL,那么你应该能够从访问日志或谷歌分析(或其他更有用的信息变体)中获得这些信息。

不会讨论这是否是一个好主意,但这里有一些代码可以满足你的标题要求

正如您自己所说,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>
var clickCount = [];
$('a').click(function() { clickCount[$(this).attr("id")]++; return true; });

window.onload=函数(){
var a=document.getElementsByTagName(“a”);
对于(变量i=0;i
如果您想告诉服务器有关单击的信息,则需要一个AJAX调用,而不是警报:),该代码段将进入head部分工作


另一种方法是监听general window.onclick事件并跟踪被单击的对象,如果它是一个a标记,您可以执行任何您想要的代码。

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

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

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

如果您最终使用jQuery(正如这里的一张海报所推荐的),您可以相当轻松地截取所有链接。例如,如果您想计算每个链接被单击的次数(按id索引),您可以编写如下代码:

<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>
var clickCount = [];
$('a').click(function() { clickCount[$(this).attr("id")]++; return true; });

事实上,Google Analytics确实会跟踪这些数据。如果你转到报告的内容概述页面,会有一个链接指向站点覆盖。这将显示你的网站覆盖了页面上每个链接的点击次数


除了Google Analytics,您可能还想查看。它提供了站点覆盖以及Google没有的许多功能。

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


另一个您可能想查看的好工具是。鼠标跟踪、视频播放和热图。

在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})
        })

Analytics能够跟踪所有点击的链接,包括AJAX链接。@Rich如果我们不想在google服务器上存储数据该怎么办。我更愿意处理文档点击事件,并去掉其中的src元素。@Ramesh:我觉得这听起来很愚蠢和偏执。为什么要重新发明轮子?@Rich-假设客户是一家金融公司,而且不需要在他们的服务器外存储任何信息。@Ramesh:你认为google analytics到底做什么和存储什么?你有没有后端?如果没有,如果google analytics不在考虑范围之内,你的老板到底打算让你如何动态跟踪点击数据?@crescentfresh:神奇地。他们想要GA,他们只是ap我不知道如何正确地使用它。我对我上面的人的能力没有任何要求。@Allyn,不认真地说:ajax或任何正在提出的javascript技巧都需要一个后端来报告数据。如果你不使用google analytics,你打算如何解决这个问题?呃,它实际上不需要复杂的后端。一个小ajax到php脚本,更新数据库,解决了。总之很简单,我只是发布了这个帖子,因为这个页面一个月有几百万次点击。加起来带宽使用率增加了很多并不需要太多。@cres-它不警惕,你可以用这个id调用一个页面作为get param。@Ramesh:是的,我知道,我只是很幽默;)