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

2020/09/16 20:31 · javascript ·  · 0评论
<a href="javascript:void(0)" id="loginlink">login</a>

我已经看过href很多次了,但是我不知道那是什么意思。

void运算符计算给定表达式,然后返回undefined

void操作者经常被用来仅获取undefined原始值,通常使用“ void(0)”(这是相当于“ void 0”)。在这些情况下,undefined
可以改用
全局变量(假设尚未将其分配给非默认值)。

这里提供了一个解释:voidoperator

您要使用的href链接执行此操作的原因是,通常,javascript:URL会将浏览器重定向到评估该JavaScript的结果的纯文本版本。但是,如果结果为undefined,则浏览器将停留在同一页面上。void(0)只是一个简短而简单的脚本,其计算结果为undefined

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

没有充分的理由使用javascript:伪URL(*)。在实践中,如果有人尝试使用“书签链接”,“在新标签页中打开链接”等内容,则会引起混乱或错误。现在,这种情况已经发生了很多,人们已经习惯了单击新标签的中间键:它看起来像一个链接,您想在新标签中阅读它,但事实证明它根本不是真正的链接,并在单击鼠标中键时显示空白页或JS错误等不良结果。

<a href="#">是一种常见的替代方法,可能会更糟。但是,您必须记住return falseonclick事件处理程序进入,以防止链接被跟踪并向上滚动到页面顶部。

在某些情况下,可能会有一个实际有用的地方指向链接。例如,如果您有一个控件,则可以单击它打开一个先前隐藏的控件<div id="foo">,使用它可以<a href="#foo">链接到它。或者,如果有一种非JavaScript的方式做同样的事情(例如,“ thispage.php?show = foo”将foo开头可见),则可以链接到该脚本。

否则,如果链接仅指向某个脚本,则它实际上不是链接,因此不应进行标记。通常的做法是添加onclick<span><div>或者<a>没有href以某种方式和风格也要想清楚,你可以点击它。这就是StackOverflow [在撰写本文时所要做的;现在它使用href="#"]。

这样做的缺点是您失去了键盘控制权,因为您无法切换到span / div / bare-a或使用空格激活它。这是否实际上是不利的,取决于该元素打算采取哪种动作。您可以花些力气,通过tabIndex在元素上添加a 并监听Space按键来模仿键盘的交互性但这绝不会100%重现真实的浏览器行为,尤其是因为不同的浏览器对键盘的响应方式不同(更不用说非视觉浏览器了)。

如果您确实想要一个不是链接但可以通过鼠标或键盘正常激活的元素,则您想要的是一个元素<button type="button">(或者<input type="button">对于简单的文本内容也是如此)。您始终可以使用CSS对其进行样式更改,因此,如果需要,它看起来更像是链接而不是按钮。但是由于它的行为就像一个按钮,因此您应该真正对其进行标记。

(*:在现场创作,反正很显然他们是有用的bookmarklet。javascript:伪网址是一个概念bizarreness:一点不点的位置的定位,而是调用当前位置内激活码他们造成了巨大的安全。浏览器和Web应用程序都存在问题,而Netscape永远不会发明。)

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

您实际上应该只是return falseonclick事件中,如下所示:

<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>

这是将JavaScript函数添加到HTML链接的一种非常流行的方法。
例如:[Print]您在许多网页上看到链接是这样写的:

<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>

为什么我们需要href消磨onclick单独可以完成这项工作?因为当用户将鼠标悬停在“打印”文本上时href,光标将变为尖号(ꕯ)而不是指针(👆)。hrefa标签上才会将其验证为超链接。

的替代方法href="javascript:void(0);"是使用href="#"此替代方法不需要在用户的浏览器中打开JavaScript,因此更加兼容。

“#”与javascript:void的行为存在巨大差异

“#”将您滚动到页面的顶部,而“ javascript:void(0);” 才不是。

如果您要编码动态页面,这非常重要。用户不希望仅单击页面上的链接就返回顶部。

标签上应始终带有href 调用返回“ undefined”的JavaScript函数就可以了。因此将链接到“#”。

Internet Explorer 6中没有href的锚标记不会a:hover应用样式。

是的,这是可怕的,轻微的危害人类罪,但Internet Explorer 6也是这样。

我希望这有帮助。

Internet Explorer 6实际上是危害人类的主要罪行。

值得一提的是,在检查undefined时有时会看到void 0,这仅仅是因为它需要较少的字符。

例如:

something === undefined

something === void 0

因此,某些缩小方法会将undefined替换为void 0。

用法的使用javascript:void(0)意味着HTML的作者滥用了anchor元素而不是button元素。

通过将href设置为“#”或“ javascript:void(0)”以防止页面刷新,锚点标记通常会与onclick事件一起使用以创建伪按钮。当复制/拖动链接,在新选项卡/窗口中打开链接,添加书签以及仍在下载JavaScript,错误输出或被禁用时,这些值会导致意外行为。这也将不正确的语义传达给辅助技术(例如,屏幕阅读器)。在这种情况下,建议改用a <button>通常,您只应使用锚来使用正确的URL进行导航。

资料来源:MDN的<a>Page

void是用于返回undefined的运算符,因此浏览器将无法加载新页面。

除非它是一个返回null的JavaScript函数,否则Web浏览器将尝试使用任何用作URL的内容并将其加载。例如,如果我们单击这样的链接:

<a href="javascript: alert('Hello World')">Click Me</a>

那么将显示一条警报消息,而无需加载新页面,这是因为alert该函数返回了空值。这意味着,当浏览器尝试加载新页面时,它会显示为null并且没有任何内容可加载。

有关void运算符的重要注意事项是它需要一个值,并且不能单独使用。我们应该这样使用它:

<a href="javascript: void(0)">I am a useless link</a>

要理解这一概念,首先应该了解JavaScript中的void运算符。

void运算符的语法为:void «expr»评估expr并返回未定义。

如果将void实现为函数,则其外观如下:

function myVoid(expr) {
    return undefined;
}

该void运算符的一个重要用法是-丢弃表达式的结果。

在某些情况下,重要的是要返回undefined而不是表达式的结果。然后可以使用void放弃该结果。其中一种情况涉及javascript:URL,对于链接,应避免使用URL,但对于小书签却有用。当您访问这些URL之一时,许多浏览器都会用评估URL“内容”的结果来替换当前文档,但前提是结果没有不确定。因此,如果要在不更改当前显示内容的情况下打开新窗口,则可以执行以下操作:

javascript:void window.open("http://example.com/")

void运算符计算给定表达式,然后返回未定义。这样可以避免刷新页面。

Web开发人员javascript:void(0)之所以使用它,是因为它是防止a标记默认行为的最简单方法void(*anything*)返回undefined,这是一个虚假的值。并且返回假值就像return false标记onclick事件中a阻止其默认行为一样。

因此,我认为这javascript:void(0)是防止a标记默认行为的最简单方法

链接必须具有要指定的HREF目标,才能使其成为可用的显示对象。

大多数浏览器不会在

<A HREF="" 

标签,例如:

<A href="JavaScript:var elem = document.getElementById('foo');" 

因为大多数浏览器中的HREF标记都不允许空格,或者会将空格转换为%20(相当于SPACE的十六进制),这使JavaScript绝对对解释器无用。

因此,如果您想使用A HREF标记执行内联JavaScript,则必须为HREF FIRST指定一个不太复杂(不包含空格)的有效值,然后在事件属性标记(如OnClick)中提供JavaScript ,OnMouseOver,OnMouseOut等。

典型的答案是做这样的事情:

<A HREF="#" onclick="var elem = document.getElementById('foo');">Get the object</a>

这可以正常工作,但是由于井号/井号指示它可以使页面跳至顶部。

只需在A HREF标签中提供井号/哈希标签即可实际指定根锚,默认情况下,根锚始终位于页面顶部,您可以通过在A HREF标签内指定NAME属性来指定其他位置。

<A NAME='middleofpage'></A>

然后,您可以将A HREF标记更改为跳转到“ middleofpage”,然后在OnClick事件中执行JavaScript,如下所示:

<A HREF="#middleofpage" onclick="var elem = document.getElementById('foo');">Get the object</a>

在很多时候,您都不希望该链接跳来跳去,因此您可以做两件事:

<A HREF="#thislinkname" name='thislinkname' onclick="var elem = document.getElementById('foo');">Get the object</a>

现在,单击时它将无处可去,但可能导致页面从当前视口重新居中。不好看 什么是使用A HREF提供内联JavaScript的最佳方法,而无需执行上述任何操作?JavaScript:无效(0);

<A HREF="JavaScript:void(0);" onclick="var elem = document.getElementById('foo');">Get the object</a>

这告诉浏览器现在不运行,而是执行有效的JavaScript:void(0);。首先在HREF标记中起作用,因为它不包含空格,也不会被解析为URL。相反,它将由编译器运行。VOID是一个关键字,当提供0的性能参数时,它返回UNDEFINED,它不使用更多的资源来处理不指定0就会出现的返回值(它对内存管理/性能更友好)。

接下来发生的事情是OnClick被执行。页面不会移动,在显示方面不会发生任何事情。

JavaScript:不包含网址;这是void可以用来编写较短代码的地方。

var error1 = false,
    error2 = false,
    error3 = false;

function error1() {

  error1 = true;
}

function myFunction() {

  // You can easily return and call a function at once, if you don't care about myFunction's return value
  if (!someCondition1)
    return error1();

  // What if you want to set a value first?
  if (!someCondition2) {
    error2 = true;
    return
  }

  // Shortest way to return and set a value at once
  if (!someCondition3)
    return void(error3 = true);

  // More code goes here
}
本文地址:http://javascript.askforanswer.com/javascriptvoid0shishenmeyisi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!