17

我已经看到了href="javascript:void(0)",我已经看到href="javascript:;" 了有什么理由我不会直接使用href="javascript:"吗?

编辑:让我说清楚:我将它与 an 结合使用,如果有必要使用替代方案,我onclick不反对使用。return false当然,这只是在替代方案更有意义的情况下javascript:

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

我已经看到了href="javascript:void(0)",我已经看到href="javascript:;" 了有什么理由我不会直接使用href="javascript:"吗?

4

4 回答 4

18

我个人会避免使用任何一种。我会onclick='return false;'改为,然后设置href='#'.

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

事实上,因为无论如何它都会被忽略,所以您可以将任何您喜欢的 URL 放入 中href,而不仅仅是散列。哈希是最安全的,以防万一您的用户禁用了 Javascript,但除此之外,它可以是任何东西。

但我必须指出:将<a>带有 href 的标签转到无效的 Javascript 代码似乎完全违背了<a>首先要有标签的意义。我可以看到您希望如何在运行时启用和禁用链接,但简单地将 href 设置为 void 似乎有点毫无意义。如果它不是一个真正的链接,为什么不只是有一个<span>或其他一些标签。如果你必须让它看起来像一个链接,那么在 CSS 中做到这一点是微不足道的。

于 2011-03-08T19:19:41.567 回答
14

不回答您的问题,但可能会对此有所了解,一些早期版本的浏览器(如 netscape)在href.

void操作员几乎只能强制点击什么都不做。

Now, with browsers properly implementing "pseudo URLs", you can safely just use javascript:;.

于 2011-10-30T15:12:03.593 回答
2

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

于 2011-03-08T19:23:04.917 回答
2

最好都不用。该href属性表示一个url。最好使用事件处理程序来获得所需的行为,这可能就是onclick事件。

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

于 2011-03-08T19:34:38.220 回答