“javascript:void(0)”是什么意思?

<a href="javascript:void(0)" id="loginlink">login</a>

我已经看过很多次这样的href ,但我不知道这意味着什么。


void运算符评估给定的表达式,然后返回undefined

void运算符通常仅用于获取undefined原始值,通常使用“ void(0) ”(相当于“ void 0 ”)。 在这些情况下,可以使用全局变量undefined (假设它尚未分配给非默认值)。

这里提供了一个解释: void操作符。

你想用链接的href来做这件事的原因通常是, javascript: URL会将浏览器重定向到评估JavaScript的纯文本版本。 但是如果结果undefined ,那么浏览器保持在同一页面上。 void(0)只是一个简短而简单的脚本,其评估为undefined


除了技术答案之外, javascript:void意味着作者正在做错了。

没有理由使用javascript:伪URL(*)。 在实践中,如果任何人尝试诸如“书签链接”,“在新标签中打开链接”等等,会造成混淆或错误。 现在人们已经习惯了中间点击新标签:这看起来像一个链接,你想在新标签中阅读它,但事实证明这根本不是真正的链接,并在中点击时给出不想要的结果,如空白页或JS错误。

<a href="#">是一种常见的替代方法,可以说不会那么糟糕。 但是,您必须记得从onclick事件处理程序return false ,以防止链接被跟踪并滚动到页面的顶部。

在某些情况下,可能有实际有用的地方指向链接。 例如,如果你有一个控件,你可以点击它打开一个以前隐藏的<div id="foo"> ,使用<a href="#foo">链接到它是有道理的。 或者,如果有一种非JavaScript方式来执行相同的操作(例如,'thispage.php?show = foo'将foo设置为可见),则可以链接到该方法。

否则,如果链接仅指向某个脚本,则它不是一个真正的链接,不应该被标记为这样。 通常的做法是将onclick添加到<span><div><a>而没有href ,并以某种方式设置它的样式以使其清晰可以点击它。 这就是StackOverflow [在撰写本文时所做的; 现在它使用href="#" ]。

这样做的缺点是你失去了键盘控制,因为你不能在span / div / bare-a上标签或者用空格激活它。 这是否实际上是一个劣势取决于元素打算采取什么样的行动。 您可以尝试通过向元素添加tabIndex并侦听Space按键来模仿键盘的可交互性。 但它绝不会100%重现真实的浏览器行为,这不仅仅是因为不同的浏览器可以不同地响应键盘(更不用说非视觉浏览器)。

如果你真的想要一个不是链接的元素,但它可以通过鼠标或键盘正常激活,你想要的是一个<button type="button"> (或<input type="button">就像好,对于简单的文本内容)。 如果你愿意的话,你总是可以使用CSS来重新调整它,使它看起来更像链接而不是按钮。 但由于它的行为像一个按钮,所以你应该如何标记它。

(*:在网站创作中,无论如何,显然它们对bookmarklets很有用javascript:伪网址是一种概念上的奇怪现象:一个定位器不指向某个位置,而是调用当前位置内的活动代码。对于浏览器和webapps都有严重的安全问题,而且不应该由Netscape发明。)


这意味着它什么都不会做。 这是试图让链接不在任何地方“导航”。 但这不是正确的方法。

实际上,您应该在onclick事件中return false ,如下所示:

<a href="#" onclick="return false;">hello</a>

通常,如果链接正在执行一些'JavaScript-y'的事情,就会使用它。 比如发布一个AJAX表单,或者交换图片,或者其他什么。 在这种情况下,你只需将任何函数称为return false

然而,为了使你的网站完全真棒,如果浏览它的人选择不运行JavaScript,通常你会包含一个执行相同动作的链接。

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>
链接地址: http://www.djcxy.com/p/8001.html

上一篇: What does "javascript:void(0)" mean?

下一篇: How do I return clean JSON from a WCF Service?