“href="", href="#"和href="javascript:void(0)"有什么区别?”

12
“href=''”,“href='#'”和“href='javascript:void(0)'”有什么区别?它们的不同用法是什么,什么情况下使用其中一种更好?
6个回答

17

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)看起来更清晰。


你确定 href="" 可以重新加载当前页面吗?我这里没有发生。 - CodingYoshi

4

'#'将带用户返回到页面顶部,因此我通常使用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)"

第二个显然更容易沟通。

0
它们是两个不同的链接:
1. href="" 将重定向用户到根页面。更像默认页面或索引页面。
2. href="#" 不会重定向用户,也不会做任何事情,只是改变URL。它只是为了使URL像按钮一样,我的意思是一个锚点按钮。但没有地方可以去。 3. 如果你想用它做一些javascript的工作,你可以使用
<button onclick="dothis()">Click me!</button>  
function dothis() {
// do what ever you want to do here
} 

第三种类型不会改变URL,也不会重定向!


0

href="" 将链接到当前页面,实际上是刷新页面。 href="#" 不会刷新页面,但使用 # 会使屏幕移动到页面顶部(浏览器实际上在查找没有名称的锚点)。javascript:void(0) 将完全阻止链接上的任何操作。

当我想要放置链接但不确定它们的位置时,例如创建页面布局时,我使用 #。如果我想将表单提交到同一页,则通常使用 form action="",但我从未个人使用过 href="" 或 javascript:void(0)。


0

如果您使用 href="",一些浏览器可能会认为锚标签不是链接,而是锚点。那么它就无法获得链接的行为和事件。即使它在您可以测试的浏览器中工作,最好也不要使用空值。

通常使用无名称书签 href="#"。它与链接到任何书签(如 href="#contact")相同,只是无名称书签会导航到页面顶部。如果 Javascript 不起作用,这将作为一个不错的后备方案,因为它只会将您带到页面顶部,而不是导航到其他地方。有时您会看到开发人员忘记停止链接的默认操作,页面会跳转到顶部,而脚本则执行其操作。

使用 href="javascript:void(0)" 是一种产生完全不导航到任何地方的 URL 的方法,因此链接不会被跟随。它很有效,但由于在大多数浏览器中指向链接时 URL 显示在状态字段中,因此它看起来不太美观。


0

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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接