为什么在 href 中使用 javascript:void(0) 而不是 #?

27

我在HTML页面上看到了很多<a href="javascript:void(0);">。根据我的阅读,它什么也做不了,只会返回undefined。那么这和<href="#">有何不同?


7
# 跳转到页面顶部。 - elclanrs
1
现代浏览器(如Firefox和Chrome)中的#链接会导致页面查找可用链接(如果不可用,则跳转到顶部)并滚动到该区域。但是,Void不执行任何操作。 - Akshay Khandelwal
另一个与此相关的问题是:在<a>中不包括href属性怎么样?例如:<a href="javascript:void(0);" onclick="doSomething();"> vs <a onclick="doSomething();"> - Oscar Zhang
3个回答

47
<a href="#">link</a>

在浏览器的 URL 中添加#号并跳转到页面顶部。

<a href="javascript:void(0);">link</a>

简单地"忽略"了链接的点击。

<a href="#" onclick="return false;">link</a>

同时也忽略href属性。

请注意,在某些情况下可能会禁用JavaScript(非常罕见)。


此外,void 0本质上等同于undefined - 这就是为什么浏览器不会执行任何操作的原因。 - kamituel
可能类似于 href="#_" 的东西也应该避免使用 onclick="return false;",这在我看来是令人讨厌的! - Fr0zenFyr

4
< p > # 可能会跳转到页面中的其他位置。此外,它还会修改 URL。


修改URL是可以的,但跳转不行。如果只是“#”,那么跳转到页面顶部。 - Akshay Khandelwal
哎?我有点困惑,你的评论有些不一致。你说跳转不好,然后又说跳转到页面顶部。我不明白。 - Leo
这就是为什么我们使用javascript:void(0),它不会执行跳转 - Akshay Khandelwal
1
伙计,你有点跑题了...看起来你在进行不同的对话。 - Leo

4

href="javascript:void(0);是用于当你希望它什么也不做,但看起来像一个链接(蓝色和下划线)的情况。

它就像:javascript:return undefined;

为什么?

因为有人可能会这样做:undefined=function () {}

# - 是一个锚点,将您发送到页面顶部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接