onMousedown和onClick的缺点是什么?

17

我一直在解决一个令人头疼的Javascript问题,涉及跟踪用户点击链接的情况(如果您好奇,可以看这里:为什么使用target="_blank"会导致Javascript失败?)。

我已经发现,通过跟踪onMousedown事件而不是onClick事件,我可以解决这个问题。

我想知道这种方法的缺点。我能想到的有:

  1. 如果用户按下链接并在释放前将鼠标移出链接,则即使用户没有访问链接,事件也会被记录下来。
  2. 如果用户使用Tab键将浏览器焦点移动到链接,然后按Enter键,则该点击将不会被记录下来。

这两者都不常见,所以我不太担心它们。

我是否漏掉了其它缺点?

1个回答

18

另外还有一点:mousedown事件也可以捕获鼠标的右键和中键点击。

但出于你提到的两个原因,我建议仍然使用onclick。我认识很多人使用键盘导航,特别是在Firefox中搜索并跳转到链接(使用/进行搜索,然后按Enter跳转到链接)。

但如果这两个问题对您不是问题,我认为右键或中键点击也不会有太大的问题。

我认为跟踪所有点击链接的用户的方式很棘手——用户可能会右击链接并选择在新标签页/窗口中打开......


我同意你的帖子,但是谷歌的搜索页面使用onmousedown而不是onclick来跟踪点击,这让我感到困扰,因为这表明他们处理这些问题或者至少认为onmousedown是最佳实践。你有什么想法吗? - Dunc
我不确定谷歌是如何跟踪点击的,但以下是我认为他们使用onmousedown有关点的一些要点:他们对聚合点击百分比感兴趣 - 几个少或多都没有关系。使用onclick / onmousedown中的任何一个,无法可靠地知道用户是否已经跟随链接(使用onclick可能会导致右键单击+在新标签页中打开丢失,使用mousedown可能会导致每次右键单击被注册为链接跟随)。然而,右键单击可能意味着用户对该链接感兴趣。 - Raze
6
mousedown事件在用户按下鼠标按钮并释放之前的短时间内,提供了更多时间将数据发送给Google,足够发送请求到Google服务器。不确定onclick是否留出足够的时间来完成这一操作。雅虎采取的备选方案是先将您带到他们的服务器,然后再将您重定向到您感兴趣的网址。 - Raze
2
有趣的一点是onmousedown允许更多时间将数据发送回Google - 我注意到Bing也这样做。 - Dunc
4
简而言之,onclick事件需要<400毫秒才能触发,而onmousedown事件需要200毫秒。在这里解释了http://www.cardinalpath.com/experiment-onclick-vs-onmousedown-event-tracking-in-google-analytics/。 - user3127648

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接