2012-01-19 97 views
5

我试图跟踪外部链接上的点击(不使用“重定向页面”)。跟踪链接时发生的事件

我怎么能当用户打开一个链接时,无论用户是否捕捉事件:

  1. 左点击链接
  2. 右键点击该链接,在新窗口中
  3. 打开
  4. 使用键盘激活链接
  5. 是否有其他方式来激活链接?

onClick事件只适用于第一个。

如果设置为href="javascript:fireEventAndFollowLink()"用户将无法在新窗口(2)中打开链接,因此这不是一种溶剂。

回答

9

链接可以在某些方面被触发(假设现代的浏览器,见脚注):

  1. 左键点击
    • 对于<a target="_blank"><a target="_new">,页面将在新标签加载
    • 当用户按下CTRL时,页面将加载到新标签页中。
    • 当用户按SHIFT时,页面将被载入新窗口
    • 对于其他target值,该链接可以加载在当前屏幕或的另一帧中。
  2. 对华门户点击
    • 该页面将在新标签加载,无论修改键。
  3. 右击
    这种方法是天昏地暗,如果不是不可能完全实现
    JavaScript不能用于直接检测上下文菜单中选择了哪个选项。
    • 当选择“在新建(标签,窗口)中打开链接”时,页面将加载到一个新标签页窗口中。
    • 当不选择任何一种,没有加载
  4. 键盘:
    • 文本菜单(见图3)
    • 输入 - 见1。

如何捕捉到这些链接
捕获所有链路事件没有可靠方式。

  • 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>)?

+0

谢谢你的详细解答。我猜想确保跟踪外部链接点击的唯一方法是实现某种“重定向页面”(如Google和Facebook所做的那样)。 –