以下是构建链接的两种方法,其唯一目的是运行JavaScript代码。在功能,页面加载速度,验证目的等方面哪个更好?
function myJsFunc() { alert("myJsFunc"); }
<a href="#" onclick="myJsFunc();">Run JavaScript Code</a>
要么
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
我用javascript:void(0)。
javascript:void(0)
三个原因。鼓励#在一组开发人员中使用,不可避免地导致某些人使用这样的函数的返回值:
function doSomething() { //Some code return false; }
但是后来他们忘记return doSomething()在onclick中使用,而只使用doSomething()。
return doSomething()
onclick
doSomething()
避免的第二个原因#是,return false;如果被调用的函数抛出错误,则最终语句将不会执行。因此,开发人员还必须记住在调用的函数中适当地处理任何错误。
#
return false
第三个原因是在某些情况下onclick会动态分配事件属性。我更喜欢能够调用一个函数或动态分配它,而不必专门为一种附加方法或另一种附加方法编写函数。因此,我的onclickHTML标记(或其他内容)如下所示:
onclickHTML
onclick="someFunc.call(this)"
onclick="someFunc.apply(this, arguments)"
使用javascript:void(0)可以避免上述所有麻烦,而且我还没有发现任何不利方面的例子。
因此,如果您是一个孤独的开发人员,则可以清楚地做出自己的选择,但是如果您是团队合作,则必须声明以下两种情况:
使用href="#",请确保onclick始终return false;在最后包含任何被调用的函数都不会引发错误,并且如果您将函数动态地附加到该onclick属性,请确保它不会抛出错误也返回false。
href="#"
采用href="javascript:void(0)"
href="javascript:void(0)"
第二种显然更容易沟通。