我读到有关href="#"
和href="javascript:void(0)"
的比较,
我也想知道关于
href="javascript:;" or href="javascript:void(0)"
,
ps:我一直使用href="javascript:;"
而不是href="javascript:void(0)"
,
没有发现任何麻烦。
答案 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:很糟糕。我知道这不是实际问题,但它是相关的: