【问题标题】:Is onClick Universal for Mouse buttons?onClick 是通用鼠标按钮吗?
【发布时间】:2012-01-30 16:57:00
【问题描述】:

我注意到 Google 在他们的搜索结果中使用了 onMouseDown - 用于网络跟踪、查看关键字和排名等。

我想知道哪个更好,onClick 或 onMouseDown - 或者它们都支持以下所有功能:中键、左键单击、右键单击(其他按钮,如 Gamer 鼠标)。它们是否在所有浏览器中都支持,包括手机、平板电脑和所有其他操作系统上的浏览器?最重要的是函数首先加载。 HREF 留给 SEO 和其他 UI/UX 好处,以防 javascript 失败。

<a href="http://www.site.com" onclick="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

或者

<a href="http://www.site.com" onMousedown="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

或者看似显而易见的(我不会这样做,因为空间的每个字符对我的客户都很重要)

<a href="http://www.site.com" onclick="doMyFunctionFirst();" onMouseDown="doMyFunctionFirst();">
JavaScript loaded before the href URL
</a>

【问题讨论】:

  • 使用onmousedown 而不是onclick 的一个原因是前者显着(如0.4 秒)更快地响应。
  • @dfsq 需要引用...
  • 可以找到我看到数字的文章,但即使是简单的逻辑,mousedown 的触发速度也更快。只有在 mousedown 和 mouseup 之后才会触发 Click。
  • 在我的Phonegap+jQuery Mobile 应用程序中切换到mousedown 非常明显。所以这取决于我猜代码的重量、硬件等。

标签: javascript html href onmouseover onmousedown


【解决方案1】:

值得注意的是,click 事件将在您切换到链接并按 Enter 时触发,但 mousedown/mouseup 不会。

【讨论】:

  • 看起来很奇怪,因为您希望人们在链接之间切换,然后在他们希望访问的链接上按 Enter 键 - 除非 Google 仅使用它来跟踪链接。
【解决方案2】:

主要区别在于onmousedown 触发时无论按下哪个鼠标按钮,onclick 仅触发鼠标左键 - 这很可能是您想要的。

【讨论】:

  • 所以即使我按下右键,onmousedown 也会运行该功能。
【解决方案3】:

W3C 规范doesn't seem to specify 是否应该为所有按钮触发事件,只有按下的按钮应该在事件对象的“按钮”属性上指示。至少在 Chrome 下,除了主(在我的情况下,左)鼠标按钮之外,“点击”似乎不会触发任何东西。 Quirksmode has a useful test harness 进行检查。

onclick、onmousedown 和 onmouseup 代表不同的行为,它们本质上都不是“更好”的:“click”是按下然后释放按钮,mousedown 是“down”,mouseup 是“release”。通常,如果您正在执行一些拖放操作,这将是相关的。

The MDN documentation 表示 onclick 在 mousedown 和 mouseup 之后触发。

此外,理想情况下,您应该使用Unobtrusive Javascript 技术而不是在标记中附加事件处理程序。

HREF 留给 SEO 和其他 UI/UX 好处,以防 javascript 失败。

如果事件处理程序正在执行重定向/AJAX 请求或类似请求,如果您不希望浏览器在触发事件后跟随链接,则应使用 preventDefault 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多