一尘不染

将JavaScript代码放入的不同方法之间有什么区别?

javascript

我已经看到以下将JavaScript代码放入<a>标签中的方法:

function DoSomething() { ... return false; }
  1. <a href="javascript:;" onClick="return DoSomething();">link</a>
  2. <a href="javascript:DoSomething();">link</a>
  3. <a href="javascript:void(0);" onClick="return DoSomething();">link</a>
  4. <a href="#" onClick="return DoSomething();">link</a>

我了解尝试放置有效URL而不只是JavaScript代码的想法,以防万一用户未启用JavaScript。但是出于讨论的目的,我需要假定JavaScript已启用(没有JavaScript,他们将无法登录)。

我个人喜欢选项2,因为它使您可以看到要运行的内容–在调试将参数传递到函数的位置时特别有用。我已经使用了很多,还没有发现浏览器问题。

我已经读过人们推荐4,因为它给用户提供了一个真正的链接,但是#并不是“真实的”。绝对不会到哪里去。

当您知道用户已启用JavaScript时,是否存在不支持或非常糟糕的应用?

相关问题:Href for JavaScript链接:“#”还是“javascript:void(0)”?。


阅读 220

收藏
2020-05-01

共1个答案

一尘不染

我非常喜欢Matt Kruse的JavascriptBestPractices文章。他在其中指出,使用该href部分执行JavaScript代码是一个坏主意。即使您已声明用户必须启用JavaScript,但也没有理由没有一个简单的HTML页面,href如果有人在登录后碰巧关闭了JavaScript,则所有JavaScript链接都可以指向其相应部分。我强烈建议您仍然允许这种备用机制。这样的事情将遵循“最佳实践”并实现您的目标:

<a href="javascript_required.html" onclick="doSomething(); return false;">go</a>
2020-05-01