是鼠标按钮的单击通用

Is onClick Universal for Mouse buttons?

本文关键字:单击 鼠标 按钮      更新时间:2023-09-26

我注意到谷歌在搜索结果中使用了onMouseDown,用于网络跟踪、查看关键字和排名等。

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

<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>

值得注意的是,如果选项卡指向链接并按Enter键,则click事件将触发,但mousedown/mouseup不会。

主要区别在于,无论按下了哪个鼠标按钮,onmousedown都会触发,而onclick只会为鼠标左键触发——这很可能是您想要的。

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

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

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

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

HREF在javascript失败的情况下留给SEO和其他UI/UX好处。

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