跟踪链接时捕获事件

Catching event when following a link

本文关键字:事件 链接 跟踪      更新时间:2023-09-26

我正在尝试跟踪外部链接上的点击(不使用"重定向页面")。

当用户关注链接时,我如何捕捉事件,而不管用户是否:

  1. 左键单击链接
  2. 右键单击链接并在新窗口中打开它
  3. 使用键盘激活链接
  4. 有其他激活链接的方法吗

onClick事件仅适用于第一个。

如果设置href="javascript:fireEventAndFollowLink()",用户将无法在新窗口中打开链接(2),因此这不是一个解决方案。

链接可以通过某些方式触发(假设是现代浏览器,请参阅脚注):

  1. 左键单击
    • 对于<a target="_blank"><a target="_new">,页面将加载到新选项卡
    • 当用户按下CTRL时,页面将加载到新选项卡
    • 当用户按下SHIFT时,页面将加载到新窗口
    • 对于其他target值,可以在当前屏幕另一帧中加载链接
  2. 鼠标中键
    • 页面将加载到一个新的选项卡中,而与修改键无关
  3. 右键单击
    如果不是不可能完全实现的话,这种方法非常困难
    JavaScript不能用于直接检测上下文菜单中选择了哪个选项。
    • 当选择"在新的(选项卡,窗口)中打开链接"时,页面将加载到新的选项卡,窗口中
    • 如果不选择其中任何一个,则不加载任何内容
  4. 键盘:
    • 上下文菜单(请参见3。)
    • 输入-请参阅1

如何捕获这些链接
没有可靠的方法来捕获所有链接事件。

  • onmouseup事件可用于检测1、2和3。
    可以通过event.button(或event.which)属性来跟踪已使用的按钮。在所有非IE浏览器中,0=左,1=中,2=右。在IE中,1=左侧,2=中间,4=右侧
  • onclick事件可用于捕获1和2。
    修改键可以通过event.altKeyevent.shiftKey属性来检测
  • oncontextmenu事件可用于捕获3
  • onkeydown事件可用于捕获4

修改键的行为在任何规范中都没有形式化,因此是特定于浏览器的。至少Firefox(至少3+)和Chrome(全部?)实现了这一关键行为

相关问题-如何拦截链接上的操作(<a>)?