2011-10-13 190 views
139

我已经看到不时在网页中使用以下href。但是,我不明白这是试图做什么或技术。有人可以详细说明吗?href表达式<a href="javascript:;"></a>做什么?

<a href="javascript:;"></a> 
+2

如果我没有弄错,你可以调用一个JS方法。javascript:SomeFunction() – Rob

+1

它不会尝试做任何事情,不能用合适的点击处理程序来处理。您应该避免这种情况,因为它很丑,无法访问,并导致人们使用'javascript:'方案不应该使用它('onclick =“javascript:...”') – Gareth

+1

检查了这一点:http:// stackoverflow。 com/a/138233/908879 – ajax333221

回答

150

一个<a>元素无效HTML,除非它具有hrefname属性。

如果您希望它作为链接正确呈现(例如带下划线,手形指针等),则只有在具有href属性时才会这样做。因此

这样的代码有时用作制备链路的方法,但不必提供在href属性的实际URL。开发者显然希望链接本身不做任何事情,而这是他知道的最简单的方式。

他可能在其他地方有一些JavaScript事件代码,当链接被点击时触发,这将是他想要实际发生的事情,但他希望它看起来像一个正常的<a>标记链接。

一些开发人员使用href='#'为了同样的目的,但是这会导致浏览器跳转到该页面的顶部,这可能并不希望这样。而且他不能简单地将href留空,因​​为href=''是回到当前页面的链接(即它导致页面刷新)。

有办法解决这些问题。在href中使用空位的Javascript代码就是其中之一,虽然它不是最好的解决方案,但它确实有效。

+11

出于好奇,有没有更好的方法来做到这一点? –

+20

一个更好的做法是,如果事件函数执行'return false;'或'event.preventDefault()',那么'href'动作永远不会被调用,所以你可以在那里放一些更明智的东西。 – Spudley

-1
<a href="javascript:void(0);"></a> 

javascript:告诉浏览器要编写JavaScript代码

+1

http://stackoverflow.com/a/1293130/681538 – Alex

5
<a href="javascript:alert('Hello');"></a> 

仅仅是速记:

<a href="" onclick="alert('Hello'); return false;"></a> 
+2

一种,但它不是一个真正的“喜欢喜欢”比较。首先使用它的陷阱就是一个原因。 – Lankymart

21

基本上而不是使用链接到移动网页(或锚),使用此方法启动了一个JavaScript函数(s)

<script> 
function doSomething() { 
    alert("hello") 
} 
</script> 
<a href="javascript:doSomething();">click me</a> 

点击链接将触发警报。

21

有几种机制可以避免链接到达目的地。问题中的问题并不太直观。

清洁选项是使用href="#no"其中#no是文档中的非定义锚点。

您可以使用更多语义名称,如#disable或#action来提高可读性。

该方法的优点:

  • 避免了空HREF = “#” 中的 “移动到顶部” 效应
  • 避免了使用JavaScript的

缺点的:

  • 您必须确保文档中未使用锚名称。

由于<a>元素不作为纽带,在这些情况下,最好的选择是不使用<a>元素,但一个<div>并提供所需的链接般的风格。

+6

我也喜欢非定义的锚点。然而,另一个缺点是它将锚点添加到浏览器历史记录中,所以我选择在OP中使用空白JS方法。 –

5

请参阅本:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a> 
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a> 
<a href="javascript:;">Nothing happens if there is no javaScript to render</a> 
3

旧线程,但觉得还是补充说,之所以开发人员使用此结构是不是创造一个死链接,但由于某种原因JavaScript网址,不要通过引用正确地激活html元素。

例如handler_function(this.id)作为onClick,但不作为JavaScript网址。

因此,在编写符合标准的迂回代码时,需要手动调整每个超链接的调用,或者可以编写一次并在任何地方使用的稍微不标准的代码。

0

始终正常显示的链接最好的办法是用CSS如下:

a {cursor: pointer !important} 

应该避免跟随非必要之类的东西在线程中提到。