javascript:;与 javascript:void(0);
Posted
技术标签:
【中文标题】javascript:;与 javascript:void(0);【英文标题】:javascript:; vs javascript:void(0); 【发布时间】:2011-03-08 17:27:13 【问题描述】:如果我在href
属性中为a
锚(链接)使用javascript:;
和javascript:void(0);
,我想知道它们有什么区别
<a href="javascript:;" onclick="DoSomething();">Link</a>
<a href="javascript:void(0);" onclick="DoSomething();">Link</a>
我看到它们在所有浏览器上的行为都相同,但技术上的区别是什么?
问候, 玛迪
【问题讨论】:
重要提示:这里的每个答案都指出,无论如何,不应再使用onclick
属性。确保你不会错过那条非常重要的信息 :)
我知道,我只是在演示使用它,但在我的代码中我总是使用事件处理程序,而不是直接将它放在 html 标记中
【参考方案1】:
一个运行没有语句的 JavaScript,另一个运行评估语句 0
然后返回 undefined
的 JavaScript。
Neither should be used.
【讨论】:
+1 表示不鼓励这种模式。真的很迂腐,实际上第一个包含 one 语句,Empty Statement;
:P
在第一种情况下不评估任何语句是不正确的。分号代表一个空语句,它是一个语句。
@timpeterson — 3 年后,更好的选择没有改变(并且仍然与答案相关)。
@Quentin 和 3 年后,链接现在断开了;P
@SnakeDoc — 并且完好无损【参考方案2】:
我同意 David 的观点,两者都不应该使用。 javascript 伪协议可以在某些浏览器中将页面置于等待状态,这可能会产生意想不到的后果。举个例子,我花了几个小时尝试调试一个 Web 应用程序,当有人在页面加载后不久单击 javascript: 链接时,它就会导致 IE6 崩溃。原来,进入等待状态的页面与试图初始化的 Flash 电影冲突。我通过用这种格式的链接替换链接解决了这个问题:
<a href="#" onclick="DoSomething(); return false;">Link</a>
“return false”会阻止链接实际被关注。
【讨论】:
因此,如果 JavaScript 可用,它将DoSomething
,如果不可用……它会链接到页面顶部。这几乎总是一个糟糕的后备位置。
未来注意事项:感谢上帝,我们不必再担心 IE6!【参考方案3】:
只有后者javascript:void(0);
更具可读性,并且是一个公认的约定,即此代码什么都不做。
值得注意的是,行业标准在这种语法方面已经取得了长足的进步。您应该研究渐进增强。
【讨论】:
以上是关于javascript:;与 javascript:void(0);的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript之基础-16 JavaScript 原型与继承