通过href属性调用JavaScript函数的最佳方法

时间:2016-06-03 09:24:45

标签: javascript onclick href void

我有以下代码:

 <a href="javascript: doSomeFunction();">Click here</a>

在Chrome浏览器中运行良好,但在其他浏览器中,如Opera,Firefox等,它什么也不做,只打开一个空白页面,其中包含"Object object"或类似的消息。

如果我通过

更改上面的href调用
<a href="#" onClick="doSomeFunction();">Click here</a>

它适用于所有浏览器,但页面移动到顶部(滚动条)。

第三种解决方案:

 <a href="javascript:void(0);" onClick="doSomeFunction();">Click here</a>

适用于所有浏览器。

然而,在野外我发现了这个建议:

<a href="javascript: doSomeFunction(); void(0);">Click here</a>

与上面的类似,但不需要onClick事件。

为什么最好的方法和原因?

1 个答案:

答案 0 :(得分:3)

普遍的共识是使用href =&#34;#&#34;优于&#34; javascript:void(0);&#34; as&#34; javascript:&#34;不会优雅地降级,所以应该尽可能避免它们。

最好的解决方案是你的第二个解决方案:
    <a href="#" onClick="doSomeFunction();">Click here</a>

要解决问题,请在点击时滚动到顶部,只需将其更改为:
<a href="#" onClick="doSomeFunction(event);">Click here</a>(添加了事件参数)并执行event.preventDefault();在你的功能。

所以代码看起来像这样:

<a href="#" onClick="doSomeFunction(event);">Click here</a>

<script>
function doSomeFunction(event){
    // Do stuff

    event.preventDefault();
}
</script>