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

Ahm*_*gdy 21 javascript anchor cross-browser href

我想知道它之间的区别是什么javascript:;,javascript:void(0);如果我在hrefattribure中使用它们a(链接)

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

<a href="javascript:void(0);" onclick="DoSomething();">Link</a>
Run Code Online (Sandbox Code Playgroud)

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

此致,Magdy

Que*_*tin 18

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

也不应该使用.

  • +1阻止此模式.真的很迂腐,实际上第一个包含*一个*声明,[空声明](http://bclary.com/2004/11/07/#a-12.3)```:P (3认同)
  • 在第一种情况下,没有评估任何陈述是不正确的.分号表示空语句,**是**语句. (3认同)

小智 6

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

<a href="#" onclick="DoSomething(); return false;">Link</a>
Run Code Online (Sandbox Code Playgroud)

"return false"会阻止实际跟踪链接.

  • 因此,如果JavaScript可用,它将是"DoSomething",如果不是......它将链接到页面顶部.这几乎总是一个可怕的后备位置. (2认同)
  • 来自未来的注意:感谢上帝,我们不必再担心 IE6! (2认同)

Jas*_*ary 5

只有后者javascript:void(0);更具可读性,并且接受的约定表明此代码不起作用.

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