跟踪链接时发生捕获事件

问题描述 投票:9回答:1

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

无论用户是否跟随,当用户点击链接时如何捕获事件:

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

onClick事件仅适用于第一个。

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

javascript mouseevent dom-events keyboard-events
1个回答
14
投票

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

  1. 左击
    • 对于<a target="_blank"><a target="_new">,页面将被加载到新标签
    • 当用户按下CTRL时,页面将被加载到新标签
    • 当用户按下SHIFT时,页面将被加载到新窗口
    • 对于其他target值,可以将链接加载到当前画面另一帧
  2. 中间点击
    • 无论修改键如何使用,页面都将被加载到新选项卡中。
  3. 右键单击这种方法很难实现,即使不是不可能完全实现。JavaScript无法用于直接检测上下文菜单中已选择的选项。
    • [选择“在新的标签页中打开链接”时,页面将在新的标签页中加载。
    • [如果不选择任何一个,则不会加载任何内容
  4. 键盘:
    • 上下文菜单(请参阅3。)
    • Enter-参见1。

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

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

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

[onkeydown-如何拦截链接(Related question)上的动作?]

© www.soinside.com 2019 - 2024. All rights reserved.