JavaScript的:; vs javascript:void(0);

时间:2010-06-26 22:09:30

标签: javascript cross-browser anchor href

我想知道javascript:;javascript:void(0);之间的区别,如果我在href a锚点(链接)

中使用它们
<a href="javascript:;" onclick="DoSomething();">Link</a>

<a href="javascript:void(0);" onclick="DoSomething();">Link</a>

我看到它们在所有浏览器上的行为相同,但技术上有什么区别?

此致 Magdy

3 个答案:

答案 0 :(得分:17)

一个运行没有语句的JavaScript,另一个运行JavaScript来评估语句0,然后返回undefined

Neither should be used.

答案 1 :(得分:6)

我同意David的观点,不应该使用它。 javascript伪协议可以在某些浏览器中将页面置于等待状态,这可能会产生意想不到的后果。作为一个例子,我花了几个小时试图调试一个Web应用程序,当有人在页面加载后不久点击了一个javascript:链接时崩溃IE6。事实证明,进入等待状态的页面与尝试初始化的Flash电影相冲突。我通过用以下格式替换链接来解决问题:

<a href="#" onclick="DoSomething(); return false;">Link</a>

“return false”会阻止链接实际被跟踪。

答案 2 :(得分:5)

只有后者javascript:void(0);更具可读性且是一个接受的约定,表示此代码不执行任何操作

值得注意的是,行业标准在这种语法方面已经取得了很大进展。你应该研究渐进增强。