HTML中href="javascript:;"的<a>元素含义是什么?

15

我偶尔会看到一个HTML的<a>元素,它的href属性是一个只有javascript协议和空语句;的URL。

  • 这是什么目的?

  • 它与href="javascript:void(0);"相同吗?

  • 它与没有href属性一样吗?

  • 它与没有<a>元素一样吗?

更新

我看到的确切内容是<a href="javascript:;" style="cursor: default;"></a>。这只是控制光标图标的一种方式吗?


3
请看这个链接:https://dev59.com/YHVC5IYBdhLWcg3w9GLM。 - Ruslan Ismagilov
1
  1. 目的是创建一个没有默认HTML操作的锚元素。
  2. 是的。
  3. 是的。
  4. 不是,因为您仍然可以使用带有(例如)onclick事件处理程序或click事件侦听器的锚点。
- devnull69
关于最后一个要点:怎么可能“有一个<a>”和“没有一个<a>”是一样的呢? - Cerbrus
@Cerbrus:就像<div>text</div>text一样,除了任何CSS影响。 - Borodin
感谢您提供的关于重复问题的建议,但是它们都没有涉及到 href="javascript:;"。如果这与 href="#" 或者 href="javascript:void(0)" 相同,请将其作为答案写下来,但我并没有看到这个特定问题的重复。 - Borodin
1个回答

6
您可以按照以下步骤了解:

步骤:

<a onclick="foo()">Next Image</a>
<a href="#" onclick="foo()">Next Image</a>
<a href="javascript:foo()">Next Image</a>
<a href="javascript:void(0)" onclick="foo()">Next Image</a>
<a href="#" onclick="foo(); return false;">Next Image</a>

方法1通常不会将鼠标光标更改为“手形光标”,因此在某些情况下可能不太理想。

方法2似乎会导致页面在IE 6和IE 7上有时移动到新位置。(移到页面顶部?)

方法3...应该可以使用...但这是一种老派的方式,现代浏览器应该避免使用吗?

方法4应该很好用。the-void/作者似乎建议有时可能会出问题,尽量不要使用href="javascript:[anything]"

方法5可能是最好的?根据上面的文章,这可能是最好的方法,因为它不使用href="javascript:[something]",而且return false部分将导致href="#"不被评估,因此这是最好的方法?非常感谢!


1
谢谢。<a href="javascript:;"></a> 在这个方案中的位置是什么? - Borodin
href="" 将链接到当前页面,实际上刷新了页面。href="#" 不会刷新页面,但使用 # 会使屏幕移动到页面顶部(这是浏览器在寻找没有名称的锚点)。javascript:void(0) 将完全阻止链接上的任何操作。 - Manoj Saini
谢谢你的回复,但是你还没有解答我的问题,就是关于 href="javascript:;" 的问题。 - Borodin
当我们创建一个链接来运行JavaScript代码以达到我们的目的时,有两种编写代码的方式。从功能、页面加载速度、验证目的等方面来看,哪种更好呢? <a href="#" onclick="myJsFunc();">运行JavaScript代码</a> <a href="javascript:void(0)" onclick="myJsFunc();">运行JavaScript代码</a> - Manoj Saini
我明白,但你还没有提到 href="javascript:;"。它在这个方案中的位置是什么? - Borodin
这里是 SO 上关于分号使用的早期答案(这不是有效的 JavaScript,在某些浏览器上可能会导致错误)https://dev59.com/52TWa4cB1Zd3GeqPEpOj - DenizEng

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