记录我的网站上的超链接点击

2023-11-21

我有一个网站,允许其他开发人员在其中托管内容。 我的目标是记录页面上存在的每个超链接(甚至是其他开发人员托管的内容)的点击次数。

我最初的方法如下:

$('a').click(function(event)
             {
                //do my logging
                return true;
             }
);

现在通过上述方法,我面临以下问题:

  • 开发人员可能在锚链接内有图像,因此事件目标是图像而不是 href
  • 许多开发人员都有自己的处理 href click 的方法,使用 onclick 事件而不是简单的 href='' attr
  • 一些开发人员将自定义 attr , 添加到标签中,并具有自定义函数来处理点击

所以基本上,问题是,可用的锚标签种类繁多,而记录点击并不那么简单。
许多情况下,我可以记录我想要的数据,但也有少数情况下,严重破坏了代码。

我在这个论坛上发帖的目的是:

  • 讨论在动态环境中进行超链接点击记录的正确方法是什么
  • 有没有一个插件可以实现这样的功能。

我知道 facebook 和 google 有这个,但他们对他们的环境中托管的内容有全面的控制。

任何帮助是极大的赞赏。


添加点击处理程序every链接是这不是一个好主意。您应该使用事件委托(它只会附加one事件处理程序位于文档的根目录):

$(document).delegate('a', 'click', function(event) {
    // logging
});

更新(2011 年 12 月 17 日):

Since jQuery 1.7, one would use .on() [docs]:

$(document).on('click', 'a', function(event) {
    // logging
});

关于您的问题:

开发人员可能在锚链接内有图像,因此事件目标是图像而不是 href

只要传播不被取消,事件就会冒泡。这取决于您想要记录的内容。和delegate the event.target属性将指向图像,但是this(在处理程序内部)将指向a元素。
所以你在这里应该没有问题(例如:http://jsfiddle.net/cR4DE/).

但这也意味着如果开发人员取消传播,您将错过点击。

(边注:您可以解决这个问题,让事件处理程序在捕获阶段,但 IE 不支持这一点(因此 jQuery 也不支持)。)

许多开发人员都有自己的处理 href click 的方法,使用 onclick 事件而不是简单的 href='' attr

这不会触及现有的事件处理程序。

一些开发人员将自定义 attr , 添加到标签中,并具有自定义函数来处理点击

不确定你在这里的意思。


它还取决于如何包含其他内容。例如。上面的代码不会跟踪 iframe 中的点击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记录我的网站上的超链接点击 的相关文章

随机推荐

  • 如何使用 has_many :through 和 Honor :conditions 创建新记录?

    假设我有一门课程 学生可以通过会员身份注册 例如课程和学生的 has and belongs to many 关系 有些会员资格是针对只是旁听课程的学生 不是为了学分等 因此 class Course lt ActiveRecord Bas
  • 如何在 Angular 5 的纯管道中使用 HTTP 调用

    我正在创建一个管道来将一种货币价值转换为另一种货币价值 我正在进行 HTTP 调用来转换值 Pipe name currencyConverter export class CurrencyConverterPipe implements
  • 测试场景和测试用例有什么区别?

    我对测试场景和测试用例有点困惑 它们之间有什么区别 假设我必须测试一盒火柴 我说的对吗 以下是测试场景的示例 盒子里能装 x 根火柴吗 假设盒子是关闭的 我用力摇晃它 火柴还在盒子里吗 您能给我测试场景和测试用例的示例吗 Example 您
  • MySQL的不同引号

    我对 MySQL 有点陌生 只是想知道它们之间有什么区别 当我在查询中使用它们时 用 你可以写 mysql 变量名 用 你写mysql变量值 例如 SELECT FROM test WHERE x 1
  • 如何使用 Inno Setup 安装 Windows 服务?

    我编写了一个批处理脚本 在使用 Inno Setup 进行安装后执行 问题是我有以下命令行用于创建服务 sc create MySQL start auto DisplayName MySQL binPath C MyApp MySQL 5
  • 检查 Cypress 中的单选按钮

    我对 Javascript 非常陌生 这是我使用 Cypress 的第二周 所以我需要帮助来单击单选按钮 我总是从赛普拉斯那里收到错误 我试图检查的元素如下所示
  • 错误代码:1406。列数据太长 - MySQL

    错误代码 1406 数据对于列来说太长 CREATE TABLE TEST idTEST INT NOT NULL TESTcol VARCHAR 45 NULL PRIMARY KEY idTEST Now Insert一些价值观 INS
  • 在 django 中格式化未修饰的电话号码?

    我有一个数据库 其中包含完整的电话号码作为字符串 它们的格式都类似于 1112223333 我想在我的 django 模板中将其显示为 111 222 3333 我知道我能做到 n contacts objects get name nam
  • 针对 Web 格式化 Python 代码

    直到最近 我使用如下内容将 Python 代码 空格很重要 发布到 blogspot com div table border 0 width 100 tbody tr td pre style font family monaco my
  • 如何将字符串数据发送到 UIButton 标签?

    有什么方法可以将字符串值发送到UIButton标签 我知道tag is Int输入但我需要发送string value let myButton UIButton let button UIButton button tag 123 ret
  • 当拥有身份列不是一个好主意时?

    在仅需要 1 列作为键以及该列中的值的表中can是整数 当你不应该使用标识字段时 相反 在同一个表和列中 您什么时候会手动生成其值并且不会为每个记录使用自动生成的值 我猜想当表中有大量插入和删除时就会出现这种情况 我对吗 还有哪些其他情况
  • 如何使用Python进行简单的http重定向?

    如何使用Python进行简单的http重定向 不使用元 UPDATE I am using Python 2 7 1 as a CGI from within the cgi bin directory of Apache 要使用当前设置
  • 将 php post 数据传递给 javascript 的方法

    所以我想知道 如果我有一个简单的 php 表单将信息发布到某个变量 我如何将该发布的变量传递给 javascript 并能够操作数据 我想出的唯一方法是使用内联javascript和php 但我觉得必须有一种更干净 更优雅的方法来做到这一点
  • 如何在 Android O 中动态更改通知声音

    最近我使用通知通道来支持android O 但问题是我无法动态更改声音 Uri 我们的应用程序有通知声音设置 用户可以根据需要更改应用程序通知声音 但如您所知 Android 现在不允许开发者在用户重新安装应用程序之前更新通知渠道 我在那里
  • JDBC:将日期值插入 MySQL

    我想知道如何使用 Java JDBC 将日期值设置到 MySQL 数据库 以下是我的代码 String lastCrawlDate 2014 01 28 PreparedStatement p con prepareStatement in
  • node.js 将变量暴露给模块?

    我读过很多关于如何在 Node js 中创建模块的文章 您可以使用 module exports 将模块内部公开到包含它的文件中 太棒了 反过来又是如何运作的呢 我将使用以下示例 USER JS function User this pro
  • 在 C# 中获取所有控制器和操作名称

    是否可以以编程方式列出所有控制器的名称及其操作 我想为每个控制器和操作实现数据库驱动的安全性 作为一名开发人员 我知道所有控制器和操作 并且可以将它们添加到数据库表中 但是有什么方法可以自动添加它们吗 下面将提取控制器 操作 属性和返回类型
  • 从字符串创建类的实例

    有没有一种方法可以根据我在运行时知道类的名称这一事实来创建类的实例 基本上我会将类的名称放在字符串中 看看激活器 CreateInstance method
  • 内容变化引起的过渡元素大小

    我有一个按钮 里面有一些文字 当您按下它时 文本会发生变化 这使得按钮的宽度发生变化 如果可以通过如下方式来转换元素宽度的变化 那就太好了 el transition width 150ms ease out 当然 只有当您明确更改widt
  • 记录我的网站上的超链接点击

    我有一个网站 允许其他开发人员在其中托管内容 我的目标是记录页面上存在的每个超链接 甚至是其他开发人员托管的内容 的点击次数 我最初的方法如下 a click function event do my logging return true