href=""
会重新加载当前页面。
href="#"
会将当前页面滚动到顶部。
href="javascript: void(0)"
不会执行任何操作。
你可以通过在锚点的点击事件处理程序中返回false来达到与javascript: void(0)
相同的效果,也可以使用其他两种方法之一。
我更喜欢使用<a id="the-link" href="#">链接</a>
,然后在我的JavaScript代码中某个地方绑定一个事件处理程序:
document.getElementById('the-link').onclick = function(){
// Do stuff
return false;
};
这样,由于您使用了#
,即使用户禁用了JavaScript,页面也不会重新加载(只会滚动到顶部),而且我认为这比javascript: void(0)
看起来更清晰。
'#'将带用户返回到页面顶部,因此我通常使用void(0)
。
有三个原因。在开发团队中鼓励使用 # 不可避免地会导致某些人使用此类调用的函数的返回值:
function doSomething() {
//some code
return false;
}
然而,他们忘了在onclick
中使用return doSomething()
,只是使用了doSomething()
。
避免使用#的第二个原因是,如果所调用的函数抛出错误,最终的return false;
将不会执行。因此,开发人员还必须记住适当处理所调用函数中的任何错误。
第三个原因是,有些情况下,onclick事件属性是动态分配的。我希望能够调用函数或动态分配函数,而不必特别编写一个方法来附加它。因此,我的HTML标记中的onclick(或on anything)如下所示:
onclick="someFunc.call(this)"
或者
onclick="someFunc.apply(this, arguments)"
使用 javascript:void(0)
可以避免上述所有问题,我没有发现任何缺点的例子。
因此,如果您是独立开发者,那么您可以清楚地做出自己的选择,但如果您作为团队工作,您必须要么声明:
使用 href="#"
,确保 onclick
总是包含在结尾处的 return false;
,被调用的任何函数都不会抛出错误,如果您动态地将函数附加到 onclick 属性上,请确保它不仅不会抛出错误,而且返回 false。
要么
use href="javascript:void(0)"
<button onclick="dothis()">Click me!</button>
function dothis() {
// do what ever you want to do here
}
第三种类型不会改变URL,也不会重定向!
href="" 将链接到当前页面,实际上是刷新页面。 href="#" 不会刷新页面,但使用 # 会使屏幕移动到页面顶部(浏览器实际上在查找没有名称的锚点)。javascript:void(0) 将完全阻止链接上的任何操作。
当我想要放置链接但不确定它们的位置时,例如创建页面布局时,我使用 #。如果我想将表单提交到同一页,则通常使用 form action="",但我从未个人使用过 href="" 或 javascript:void(0)。
如果您使用 href=""
,一些浏览器可能会认为锚标签不是链接,而是锚点。那么它就无法获得链接的行为和事件。即使它在您可以测试的浏览器中工作,最好也不要使用空值。
通常使用无名称书签 href="#"
。它与链接到任何书签(如 href="#contact"
)相同,只是无名称书签会导航到页面顶部。如果 Javascript 不起作用,这将作为一个不错的后备方案,因为它只会将您带到页面顶部,而不是导航到其他地方。有时您会看到开发人员忘记停止链接的默认操作,页面会跳转到顶部,而脚本则执行其操作。
使用 href="javascript:void(0)"
是一种产生完全不导航到任何地方的 URL 的方法,因此链接不会被跟随。它很有效,但由于在大多数浏览器中指向链接时 URL 显示在状态字段中,因此它看起来不太美观。
href 属性定义链接资源的 URL。如果锚标签没有 href 属性,则它不会成为超链接。href 属性具有以下值:
1. Absolute path: move to another site like href="http://www.google.com"
2. Relative path: move to another page within the site like herf ="defaultpage.aspx"
3. Move to an element with a specified id within the page like href="#bottom"
4. href="javascript:void(0)", it does not move anywhere.
5. href="#" , it does not move anywhere but scroll on the top of the current page.
6. href= "" , it will load the current page but some browsers causes forbidden errors.
Note: When we do not need to specified any url inside a anchor tag then use
<a href="javascript:void(0)">Test1</a>
href=""
可以重新加载当前页面吗?我这里没有发生。 - CodingYoshi