3

我注意到谷歌在他们的搜索结果中使用了 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>
4

3 回答 3

4

值得注意的是,click如果您选择链接并按 Enter,则该事件将触发,但mousedown/mouseup不会。

于 2012-01-30T16:59:33.473 回答
1

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

于 2012-01-30T17:01:27.827 回答
-1

W3C 规范似乎没有指定是否应该为所有按钮触发事件,只是应该在事件对象的“按钮”属性上指示按下的按钮。至少在 Chrome 下,除了主(在我的情况下,左)鼠标按钮之外,“点击”似乎不会触发任何东西。Quirksmode 有一个有用的测试工具来检查这一点。

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

MDN 文档指出 onclick 在 mousedown 和 mouseup 之后触发。

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

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

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

于 2012-01-30T17:10:00.477 回答