HREF = “JavaScript的:;”或者href =“javascript:void(0)”,区别?

时间:2013-09-16 01:41:47

标签: javascript href

我读到有关href="#"href="javascript:void(0)"的比较, 我也想知道关于

的比较

href="javascript:;" or href="javascript:void(0)"

ps:我一直使用href="javascript:;"而不是href="javascript:void(0)", 没有发现任何麻烦。

4 个答案:

答案 0 :(得分:2)

在任何一种形式的超链接中使用javascript:都是不好的。您的JavaScript设计应该不引人注目。

如果你要将事件监听器附加到你的锚点,你应该使用#锚点甚至是实际的URL,例如:

<a href="/delete/post/123">delete</a>
...
<script>
jQuery(function($) {
     $('a').on('click', function(event) {
         event.preventDefault();
         // do ajax stuff
     });
});
</script>

这样,旧浏览器(或禁用了JavaScript的浏览器)将遵循常规链接删除项目,而启用JavaScript的浏览器将通过AJAX执行此操作,以便页面无需刷新。

如果您的链接真的无意义,那么您根本不应该使用锚点;只需为此目的设置<span>样式。

答案 1 :(得分:0)

javascript:链接的通常行为是文档正文被表达式求值的内容替换,除非计算为undefined。您的两个版本之间没有区别,它们都评估为undefined,在javascript:链接中,它们没有效果。

但是,这不是制作无操作链接的首选方式。您不必要地强迫浏览器解析和评估JavaScript。如果您想创建一个什么都不做的链接,您应该将其href设置为"#",并将绑定功能绑定到链接的click事件。您的事件处理程序将传递一个事件对象;如果您想评估某些代码,然后阻止跟踪该链接(将#附加到当前网址),那么您可以使用event.preventDefault()event.stopPropagation(),或者只返回{{1}来自你的事件处理程序。

最好的选择是在false属性中保留一些有意义的值,这样如果JavaScript被规避(IE,用户在新窗口中打开链接),仍然会有一些理智的回落。然后,您应该在现有的仅HTML功能的顶部上添加其他“丰富”操作

答案 2 :(得分:0)

您在href中添加的内容并不重要。您应该首先通过从点击处理程序返回false来阻止链接被跟踪。

示例:

<a href="fallback.html" onclick="doSomething();return false;">

href中,您可以为已禁用Javascript的用户提供回退解决方案的链接,或者通知他们需要使用Javascript来使用页面功能的页面。

答案 3 :(得分:0)

javascript:void(0) - 比javascript:some_code_to_execute更容易理解。当然,在你的情况下javascript:;不难读,人们不会假设代码被破坏了。

Theres有几个原因,为什么用javascript处理lcicks:很糟糕。我知道这不是实际问题,但它是相关的:

  1. 这种方法已经过时,并且仍然受到浏览器供应商的支持,但它不符合wc3标准。
  2. 链接href =“javascript”不适用于没有javascript的用户。最好使用href =“/ somePage.com?id=123”onclick =“makeActionFor(777); return false”&gt;
  3. 标记和代码之间没有分离。在这种情况下,在prev示例中使用onclick也是一种附加点击处理程序的错误方法。