href=javascript:;是什么?

11
在我查看的一段代码中,有一个链接的href属性的值为“javascript:;”。当该链接被点击时,会打开一个带有关闭按钮的灯箱(lightbox),显示一些信息。请问是如何实现的?我认为这可能使用了Dojo库。

4
这些答案是否为您解决了问题? - Russell
8个回答

11

代码:

<a href="javascript:;">..</a>

实际上什么也不会发生。通常,这个"Nothing"链接允许一些JavaScript代码使用"onclick"事件。"onclick"事件触发窗口,可能来自Django、jQuery或其他地方。


5

编辑:

我刚刚添加了一个链接,它解释了如何使用 Dojo 处理 onclick 事件:

好的,仅为了说明,这里的所有答案都是好的答案。在您使用 Dojo 的特定情况下:

<a href="javascript:;" > 简单地阻止了您的 <a> 标签在被点击时跳转,当然没有其他动作!

可能您的代码中有类似这样的内容:

<a href="javascript:;" id="some" class="some_too" rel="some_too_too">

Dojo仅保留标签中的id、class或rel属性,并执行相应函数!


4

href="javascript:somefunction();" 是指向某些JavaScript代码中的函数的方法。

你也可以这样做:href="#" onclick="somefunction();return false;"

这与Dojo无关。它只是调用函数或JavaScript代码。它只是告诉元素使用JavaScript。

或者就像已经提到的那样,href="javascript:void(0);" onclick="somefunction();"


2
在带有 href="#" 的示例中,我认为缺少了 return false; - binaryLV
你也可以这样做: href="#" onclick="sommefunction();" - David Murdoch
是的,两者都可以,但是binaryLV是正确的,它应该返回false,因为没有指定url。已经进行了更正。干杯 :) 虽然你可以指定javascript:void(0);,这样你就不需要担心返回false。 - SoLoGHoST
而且,它是 onclick 而不是 onClick,请确保按照其原意使用正确的属性,否则,您的网页将出现 XHTML 验证错误。 - SoLoGHoST

2

它被称为JavaScript伪协议。它的设计目的是用JavaScript计算出来的值替换文档内容。出于多种原因,最好不要使用它,包括:

  • 如果禁用JavaScript,则会得到一个无效链接
  • 如果您的JavaScript返回一个值,则页面内容将被该值替换

更多不应使用它的理由


1
<a href="javascript:void(0)" onClick="callFunction();">

在点击时调用callFunction()方法

这也可以按以下方式使用

<a href="javascript:callFunction();">


<a href="#" onClick="callFunction();">

这也被称为JavaScript的callFunction()方法,但它会在您的URL中添加#以避免此问题,请使用

<a href="javascript:void(0)" onClick="callFunction();">

1

据说,这是一个可以通过“javascript”协议访问的资源的URL,就像您可以使用“http:”或“ftp:”一样。我不知道它是否是一个实际的标准,但大多数浏览器都理解该URL必须提供给JavaScript解释器。因此,在实践中,您可以使用它来触发链接的JavaScript代码,例如:

<a href="javascript:alert('Hello!')">Say hello</a>

当然,在 HTML 标签中编写 JavaScript 代码既不干净也不易维护。但这是有可能的。

那么 href="javascript:;" 呢?如果你仔细观察,你会发现 ";" 是一个 JavaScript 代码片段,它什么也不做。这就是重点。这经常用于创建一个指向无处的链接。主要目的是点击它会触发在其他地方定义的 JavaScript 代码(通过 onclick 事件处理程序)。

最后,你经常会看到像 onclick="javascript:doStuff()" 这样的东西。 onclick HTML 属性期望的是 Javascript 代码,而不是 URL。在这种情况下,javascript: 前缀完全是多余的。然而,代码仍然可以运行。这只是巧合下 JavaScript 语法中的标签而已 ;-)


1
这只是调用一个执行一些JavaScript的JavaScript函数。也许将代码作为示例发布会有所帮助。

有点奇怪,通常代码如David所述。<a href="#" onclick="somefunction();">yourlinktext</a> 这个链接是显示为URL还是图片?我知道Lightbox使用图像上的'rel'属性来显示漂亮的Lightbox效果并让图像弹出。 - Rob
1
他可能在代码的其他地方有一个addEventListener。 - Martin Konecny
@teehoo 这些会响应 href=javascript; 吗? - Rob

1

我相信这只是表示您的链接将执行一些JavaScript函数。通常,您可以通过在链接上挂接事件来实现这一点,例如OnClick / OnMouseMove。


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