为什么使用`javascript:void(0)`而不是`javascript:`作为href什么都不做占位符?

时间:2011-03-08 19:10:59

标签: javascript html href placeholder

我看过href="javascript:void(0)",我看到href="javascript:;"我有什么理由不改用href="javascript:"吗?

修改:让我说清楚:我将此与onclick合并,如果有必要使用替代方案,则不反对使用return false。当然,只有替代方案比javascript:更有意义。

另外,我还没有在第一段中看到我的问题答案(显然我认为)。 谢谢,大卫。 :)

  

我看过href="javascript:void(0)",我看到href="javascript:;"我有什么理由不改用href="javascript:"吗?

4 个答案:

答案 0 :(得分:18)

我个人也避免使用其中任何一种。我改为onclick='return false;',只设置href='#'

为什么呢?因为如果您将Javascript代码放在href中,则当您将鼠标悬停在链接上时,它会显示在浏览器的状态栏中,就像任何其他URL一样。它看起来很乱。

事实上,因为它无论如何都会被忽略,你可以把你喜欢的任何网址放到href中,而不仅仅是哈希。哈希是最安全的,以防你的用户禁用Javascript,但除此之外,它可能是任何东西。

但我必须指出:拥有一个<a>标签,其中href会变为无效Javascript代码似乎首先忽略了<a>标记的重点。我可以看到你想如何在运行时启用和禁用链接,但只是将href设置为void似乎有点无意义。如果它不是真正的链接,为什么不只是<span>或其他标签。如果你必须使它看起来像一个链接,那么在CSS中这样做是微不足道的。

答案 1 :(得分:10)

不回答您的问题,但可能会对此有所了解,在href内使用脚本时,某些早期版本的浏览器(如netscape)存在问题。

void运算符几乎只会迫使点击无效。

现在,通过浏览器正确实现“伪URL”,您可以安全地使用javascript:;

答案 2 :(得分:2)

理想情况是不在代码本身上放置任何代码,而是在脚本标记或外部文件中使用javascript并在那里绑定事件处理程序。

答案 3 :(得分:2)

最好不要使用它们。 href属性表示网址。最好使用事件处理程序来获得所需的行为,这可能是onclick事件。

在这种情况下,理想的行为显然是什么都不做。首先,为什么当它没有链接到任何地方时根本使用锚标签?其次,通过让onclick事件处理程序返回false,可以通过阻止事件冒泡来处理。然后href可以指向#,或者甚至更好地指向一个或多或少与事件处理程序具有相同效果的网址,因此当javascript关闭时它会优雅地降级