href =“javascript:”vs. href =“javascript:void(0)”

我们的networking应用程序完全在浏览器上呈现。
服务器只通过JSON消息传递给浏览器。

因此,我们只需要一个页面的应用程序,大多数<a>标签没有一个真正的href指向其他页面。

在我寻求删除不必要的东西时,我想知道是否可以摆脱我们代码中的void(0)的无数次,因为它们看起来没有用处:

 <a onclick="fn()">Does not appear as a link, because there's no href</a> <a href="javascript:void(0)" onclick="fn()">fn is called</a> <a href="javascript:" onclick="fn()">fn is called too!</a> 

有谁知道如果使用href="javascript:"可以导致一个问题?
它甚至在IE7上工作…

请不要花你宝贵的时间来告诉我内联的JavaScript是不好的,因为这是由模板引擎生成的:)

这不会导致问题,但是这与PreventDefault

当你在页面中停下来,并锚定为:

 <a href="#" onclick="fn()">click here</a> 

你会跳到顶部,URL也会有锚点# ,为了避免这种情况,我们只需return false; 或者使用javascript:void(0);

关于你的例子

 <a onclick="fn()">Does not appear as a link, because there's no href</a> 

只是做a {text-decoration:underline;}你会有“链接像”

 <a href="javascript:void(0)" onclick="fn()">fn is called</a> <a href="javascript:" onclick="fn()">fn is called too!</a> 

没关系,但在你的function结束时,只需return false; 为了防止默认行为,你不需要再做任何事情。

当使用javascript:导航时,执行的脚本的返回值(如果有的话)成为浏览器中显示的新文档的内容。 JavaScript中的void操作符会导致expression式的返回值返回undefined ,从而阻止此操作的发生。 您可以自己尝试,将以下内容复制到地址栏并按回车:

 javascript:"hello" 

结果是只有单词“你好”的新页面。 现在将其更改为:

 javascript:void "hello" 

…什么都没发生。

当你编写javascript:它自己没有脚本被执行,所以脚本执行的结果也是未定义的 ,所以浏览器什么都不做。 这使得以下几乎等同于:

 javascript:undefined; javascript:void 0; javascript: 

除了可以通过声明具有相同名称的variables来覆盖undefined外。 使用void 0通常是毫无意义的,它基本上已经从void functionThatReturnsSomething()删除了。

正如其他人所说,最好还是使用return false; 在点击处理程序中使用javascript:协议。

使用'javascript:void 0'会在IE中造成问题

当你点击这个链接的时候,它会触发onbeforeunload事件的窗口!

 <!doctype html> <html> <head> </head> <body> <a href="javascript:void(0);" >Click me!</a> <script> window.onbeforeunload = function() { alert( 'oops!' ); }; </script> </body> </html> 

在所有浏览器中,这个方法似乎都可以,如果你使用jQuery事件来设置onclick:

 <a href="javascript:;">Click me!</a> 

如前所述,如果使用History(或ba-bbq)JS插件,可以使用href =“#”更改url散列,并可以触发数据重新加载。

你可以让他们都成为现实。

您将需要添加return false; 到任何被称为onclick的函数的结尾,都没有页面跳到顶端。

我通常不使用任何href和改变与CSS的方面,使他们似乎链接。 因此,除了应用程序的事件处理程序之外,您不必担心链接效应

 a { text-recoration: underline; cursor: pointer; } 

为什么所有的点击事件都作为a href链接?

如果你使用span标签 :hover CSS和适当的onclick事件,这将彻底解决这个问题。