为什么href=“#”比 onclick 优先级高
我通常会找到以下代码:
<a href="#" onclick="func();return false">click</a>
但有时我的浏览器会转到页面顶部?
为什么 href="#"
的优先级高于 onclick?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这并不是更高的优先级。 onclick 触发,然后浏览器会跟随该链接。
如果您不
return false
(注意拼写)或func
抛出错误(因此未到达return
语句),则该事件不会被取消。(但是,作为 JS 失败或被禁用的后备方案,指向页面顶部的链接确实很糟糕。 渐进增强是前进的方向。)
It isn't higher priority. The onclick fires and then the browser follows the link.
If you don't
return false
(note spelling) orfunc
throws an error (thus not reaching thereturn
statement) the event won't be canceled.(As fallbacks for if the JS fails or is disabled go, however, a link to the top of the page is really sucky. Progressive enhancement is the way forward.)
如果您想要使用
href
值的唯一原因是启用手形光标,则可以使用 css 样式来代替:If the only reason you want to have a
href
value is to enable the hand cursor, you can use css style instead:...十年后,这是上述问题的答案;
为了避免混淆,这个答案没有解决“返回 false”方面的问题。该主题可以单独研究。
附注;从技术上讲,单击锚标记时发生的情况没有层次结构(也称为“优先级”)。但由于 HREF 是“默认”操作 /
对于锚标记的事件,从某种角度来看,HREF 确实比 OnClick “优先”。
...and a decade later, here's the answer to the question asked above;
To save confusion, this answer does not address the "return false" aspect. That subject can be researched separately.
PS; Technically there is no hierarchy (AKA "priority") for what happens when an Anchor Tag is clicked. But since HREF is the "default" action /
event for an anchor tag, from a certain perspective, HREF does "take priority" over OnClick.