关注链接时捕获事件

Mar*_*sen 9 javascript mouseevent keyboard-events dom-events

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

无论用户是否使用以下内容,如何在用户关注链接时捕获事件:

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

onClick事件仅适用于第一个事件.

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

Rob*_*b W 14

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

  1. 左键单击
    • 对于<a target="_blank"><a target="_new">,页面将加载到新选项卡中.
    • 当用户按下时CTRL,页面将加载到新选项卡中.
    • 当用户按下时SHIFT,页面将被加载到新窗口中.
    • 对于其他target值,可以在当前屏幕其他帧中加载链接.
  2. Midde点击
    • 无论修改键如何,页面都将加载到新选项卡中.
  3. 右键单击
    此方法非常难以完全实现,如果不是不可能的话.
    JavaScript不能用于直接检测上下文菜单中选择的选项.
    • 选择"在新窗口中打开链接(选项卡,窗口)"时,页面将加载到新选项卡窗口中.
    • 当没有选择任何这些时,没有任何负载
  4. 键盘:
    • Contextmenu(见3.)
    • Enter - 见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>)?