为什么href=“#”比 onclick 优先级高

发布于 2024-10-01 03:24:32 字数 183 浏览 4 评论 0 原文

我通常会找到以下代码:

<a href="#" onclick="func();return false">click</a>

但有时我的浏览器会转到页面顶部?

为什么 href="#" 的优先级高于 onclick?

I usualy found the following code:

<a href="#" onclick="func();return false">click</a>

but sometime my browser go to the top of the page?

Why href="#" is High Priority than onclick?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情归归情 2024-10-08 03:24:32

这并不是更高的优先级。 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) or func throws an error (thus not reaching the return 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.)

陈年往事 2024-10-08 03:24:32

如果您想要使用 href 值的唯一原因是启用手形光标,则可以使用 css 样式来代替:

<a style="cursor:pointer;" onclick="func();return false">click</a>

If the only reason you want to have a href value is to enable the hand cursor, you can use css style instead:

<a style="cursor:pointer;" onclick="func();return false">click</a>
无悔心 2024-10-08 03:24:32

...十年后,这是上述问题的答案;

<a href="#" onclick="event.preventDefault(); func()">click</a>

为了避免混淆,这个答案没有解决“返回 false”方面的问题。该主题可以单独研究。

附注;从技术上讲,单击锚标记时发生的情况没有层次结构(也称为“优先级”)。但由于 HREF 是“默认”操作 /
对于锚标记的事件,从某种角度来看,HREF 确实比 OnClick “优先”。

...and a decade later, here's the answer to the question asked above;

<a href="#" onclick="event.preventDefault(); func()">click</a>

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文