“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