<a href="javascript:void(0)" id="loginlink">login</a>
我见过很多次这样的威胁,但我不知道这到底意味着什么。
<a href="javascript:void(0)" id="loginlink">login</a>
我见过很多次这样的威胁,但我不知道这到底意味着什么。
当前回答
链接必须指定href目标,才能使其成为可用的显示对象。
大多数浏览器不会在<a>元素的href中解析高级JavaScript,例如:
<a href="javascript:var el = document.getElementById('foo');">Get element</a>
由于大多数浏览器中的href标记不允许空白或将空白转换为%20(空格的十六进制代码),JavaScript解释器将遇到多个错误。
因此,如果要使用<a>元素的href来执行内联JavaScript,必须首先为href指定一个不太复杂的有效值(不包含空格),然后在事件属性标记中提供JavaScript,如onClick、onMouseOver、onMouseOut等。
典型的答案是这样做:
<a href="#" onclick="var el = document.getElementById('foo');">Get element</a>
这很好,但它会使页面滚动到顶部,因为告诉浏览器这样做。
在<a>元素的href中放置#指定根锚点,默认情况下,根锚点位于页面顶部,但您可以通过在<a<元素中指定name属性来指定不同的位置。
<a name="middleOfPage"></a>
然后,您可以更改<a>元素的href以跳转到middleOfPage并在onClick事件中执行JavaScript:
<a href="#middleOfPage" onclick="var el = document.getElementById('foo');">Get element</a>
很多时候,你不想让链接跳来跳去,所以你可以做两件事:
<a href="#thisLinkName" name="thisLinkCame" onclick="var elem = document.getElementById('foo');">Get element</a>
现在,单击它时,它将无法移动,但可能会导致页面从当前视口重新居中。
使用<a>元素的href使用内联javascript的最佳方法是javascript:void(0);:
<a href="javascript:void(0);" onclick="var el = document.getElementById('foo');">Get element</a>
这告诉浏览器不要去任何地方,而是执行JavaScript:void(0);函数,因为它不包含空格,并且不会被解析为URL。它将由编译器运行。
void是一个关键字,当提供参数0时,该关键字返回undefined,它不使用任何更多的资源来处理在不指定0的情况下会出现的返回值(它更便于内存管理/性能)。
接下来会执行onClick。页面不会移动,显示时不会发生任何事情。
其他回答
void是一个运算符,用于返回未定义的值,因此浏览器将无法加载新页面。
除非是返回null的JavaScript函数,否则Web浏览器将尝试将使用的任何内容作为URL并加载它。例如,如果我们单击如下链接:
<a href="javascript: alert('Hello World')">Click Me</a>
然后将显示一条警报消息,而不加载新页面,这是因为警报是一个返回空值的函数。这意味着,当浏览器尝试加载新页面时,它会看到null,并且没有任何内容可加载。
关于void运算符需要注意的一点是,它需要一个值,并且不能单独使用。我们应该这样使用:
<a href="javascript: void(0)">I am a useless link</a>
这意味着它什么都不会做。这是试图让链接不在任何地方“导航”。但这不是正确的方式。
实际上,您应该在onclick事件中返回false,如下所示:
<a href="#" onclick="return false;">hello</a>
通常,如果链接正在做一些“JavaScript-y”的事情,则使用它。比如发布AJAX表单,或者交换图像等等。在这种情况下,只需使调用的函数返回false。
然而,为了让你的网站变得非常棒,如果浏览者选择不运行JavaScript,通常你会包含一个执行相同操作的链接。
<a href="backup_page_displaying_image.aspx"
onclick="return coolImageDisplayFunction();">hello</a>
要理解这个概念,首先应该理解JavaScript中的void运算符。
void运算符的语法为:void«expr»,它计算expr并返回undefined。
如果将void实现为函数,则如下所示:
function myVoid(expr) {
return undefined;
}
这个void运算符有一个重要的用法,那就是丢弃表达式的结果。
在某些情况下,返回undefined而不是表达式的结果是很重要的。然后可以使用void来丢弃该结果。一种这样的情况涉及javascript:URL,对于链接应该避免使用javascript,但对于bookmarklets很有用。当您访问其中一个URL时,许多浏览器会将当前文档替换为评估URL“内容”的结果,但前提是结果未定义。因此,如果要在不更改当前显示内容的情况下打开新窗口,可以执行以下操作:
javascript:void window.open("http://example.com/")
void运算符计算给定的表达式,然后返回undefined。它避免了刷新页面。
你的a标签上应该有一个href。调用返回“undefined”的JavaScript函数就可以了。链接到“#”也是如此。
没有href的Internet Explorer 6中的定位标记不会应用a:hover样式。
是的,这很可怕,是一种轻微的反人类罪行,但总体来说,InternetExplorer6也是如此。
我希望这有帮助。
Internet Explorer 6实际上是一项危害人类的重大罪行。