以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
以下是构建链接的两种方法,该链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好。?
函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>
or
函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>
当前回答
我认为你提出了一个错误的二分法。这不是唯一的两个选项。
我同意D4V360先生的观点,他建议,即使您使用的是锚标记,但这里并没有真正的锚。您所拥有的只是文档的一个特殊部分,其行为应该略有不同。<span>标记更合适。
其他回答
理想情况下,您应该这样做:
<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>
或者,更好的是,您可以在HTML中使用默认的操作链接,并且在DOM渲染后通过JavaScript将onclick事件不显眼地添加到元素中,从而确保如果JavaScript不存在/未被利用,您不会有无用的事件处理程序来处理代码,并可能混淆(或至少分散您的注意力)实际内容。
我会使用:
<a href="#" onclick="myJsFunc();return false;">Link</a>
原因:
这使得href变得简单,搜索引擎需要它。如果您使用其他任何东西(例如字符串),它可能会导致404未找到错误。当鼠标悬停在链接上时,它不会显示它是一个脚本。通过使用return false;,页面不会跳到顶部或断开后退按钮。
理想情况下,您应该有一个真正的URL作为非JavaScript用户的回退。
如果这没有意义,请使用#作为href属性。我不喜欢使用onclick属性,因为它将JavaScript直接嵌入到HTML中。更好的方法是使用外部JS文件,然后将事件处理程序添加到该链接。然后,您可以阻止默认事件,以便在用户单击该事件后,URL不会更改为追加#。
我认为你提出了一个错误的二分法。这不是唯一的两个选项。
我同意D4V360先生的观点,他建议,即使您使用的是锚标记,但这里并没有真正的锚。您所拥有的只是文档的一个特殊部分,其行为应该略有不同。<span>标记更合适。
我使用javascript:void(0)。
三个原因。鼓励在开发人员团队中使用#不可避免地会导致一些人使用这样调用的函数的返回值:
function doSomething() {
//Some code
return false;
}
但是他们忘记了在onclick中使用return doSomething(),而只使用doSometthing()。
避免#的第二个原因是最终返回为false;如果被调用的函数抛出错误,则不会执行。因此,开发人员还必须记住正确处理调用函数中的任何错误。
第三个原因是在某些情况下,onclick事件属性是动态分配的。我更希望能够调用函数或动态分配函数,而不必为一种或另一种连接方法专门编写函数代码。因此,我在HTML标记中的onclick(或任何东西)看起来像这样:
onclick="someFunc.call(this)"
OR
onclick="someFunc.apply(this, arguments)"
使用javascript:void(0)避免了上述所有麻烦,而且我还没有发现任何缺点的例子。
因此,如果你是一个独立的开发人员,那么你可以明确地做出自己的选择,但如果你是团队成员,你必须声明:
使用href=“#”,确保onclick始终包含return false;最后,任何被调用的函数都不会抛出错误,如果您将一个函数动态地附加到onclick属性,请确保它不会抛出错误并返回false。
OR
使用href=“javascript:void(0)”
第二种显然更容易沟通。