关注链接时捕获事件

时间:2012-01-19 13:52:46

标签: javascript javascript-events mouseevent keyboard-events

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

当用户关注链接时,无论用户是否

,如何捕获事件
  1. 左键点击链接
  2. 右键单击链接并在新窗口中打开
  3. 使用键盘激活链接
  4. 还有其他方法可以激活链接吗?
  5. onClick事件仅适用于第一个。

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

1 个答案:

答案 0 :(得分:12)

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

  1. 左键单击
    • 对于<a target="_blank"><a target="_new">,该页面将加载到新标签页中。
    • 当用户按 CTRL 时,该页面将加载到新标签页
    • 当用户按 SHIFT 时,页面将加载到新窗口
    • 对于其他target值,可以在当前屏幕另一个框架中加载链接。
  2. Midde点击
    • 无论修改键如何,页面都将加载到新选项卡中。
  3. 右键单击
    这种方法难以置信,即使不是不可能完全实施 JavaScript不能用于直接检测上下文菜单中选择的选项。
    • 选择“在新窗口中打开链接(选项卡,窗口)”时,页面将加载到新选项卡窗口中。
    • 如果不选择其中任何一项,则无法加载
  4. 键盘:
    • Contextmenu(见3.)
    • 输入 - 参见1.
  5. 如何捕获这些链接
    没有可靠的方法来捕获所有链接事件。

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

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

    Related question - 如何拦截链接上的操作(<a>)?