我读过href="#"
和href="javascript:void(0)"
比较,我也想知道比较
href="javascript:;" or href="javascript:void(0)"
,
ps:我一直用href="javascript:;"
的href="javascript:void(0)"
,没发现什么麻烦。
我读过href="#"
和href="javascript:void(0)"
比较,我也想知道比较
href="javascript:;" or href="javascript:void(0)"
,
ps:我一直用href="javascript:;"
的href="javascript:void(0)"
,没发现什么麻烦。
以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>
只需为此目的设置 a 样式。
链接的通常行为javascript:
是将文档正文替换为表达式计算结果的任何内容,除非它计算结果为undefined
. 您的两个版本之间没有区别,它们都对链接undefined
中的哪个版本javascript:
无效。
但是,这不是制作无操作链接的首选方式。您不必要地强制浏览器解析和评估 JavaScript。如果您想创建一个什么都不做的链接,您应该将其设置href
为"#"
, 并将函数绑定到链接的click
事件。您的事件处理程序将被传递一个事件对象;如果您想评估某些代码然后阻止链接被跟踪(附加#
到当前 URL),那么您可以使用event.preventDefault()
,event.stopPropagation()
或简单地false
从您的事件处理程序中返回。
最好的选择是在href
属性中保留一些有意义的值,这样如果绕过 JavaScript(IE,用户在新窗口中打开链接),仍然有一些理智的后备。然后,您应该在现有的纯 HTML 功能之上添加额外的“丰富”操作。
您放入的href
内容并不真正相关。您应该首先通过false
从单击处理程序返回来阻止链接被跟踪。
例子:
<a href="fallback.html" onclick="doSomething();return false;">
在其中,href
您可以为禁用 Javascript 的用户放置一个后备解决方案的链接,或者一个页面通知他们需要 Javascript 才能使用该页面的功能。
javascript:void(0) - 比 javascript:some_code_to_execute 更容易理解。当然,在你的情况下 javascript:; 不难阅读,不会假设代码被破坏。
有几个原因,为什么用 javascript: 处理 lcick 不好。我知道这不是实际问题,但它是相关的: