以下是构建链接的两种方法,该链接的唯一目的是运行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>
当前回答
我使用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)”
第二种显然更容易沟通。
其他回答
javascript:void(0)将在将来弃用,因此您应该使用#。
如果您使用链接来执行一些JavaScript代码(而不是使用D4V360这样的span),请执行以下操作:
<a href="javascript:(function()%7Balert(%22test%22)%3B%7D)()%3B">test</a>
如果您使用带有onclick的链接进行导航,请不要在JavaScript关闭时使用href=“#”作为回退。当用户单击链接时,这通常非常令人讨厌。相反,如果可能,请提供onclick处理程序将提供的相同链接。如果无法做到这一点,请跳过onclick,只需在href中使用JavaScript URI。
您可以在这里使用javascript:void(0),而不是使用#来停止锚标记重定向到标头部分。
function helloFunction() {
alert("hello world");
}
<a href="javascript:void(0)" onclick="helloFunction();">Call Hello Function</a>
不要忽视这样一个事实,即您的URL可能是必需的——在引用之后会触发onclick,因此有时您需要在导航离开页面之前处理客户端的某些内容。
也不
如果您可以有一个实际的URL,请将其用作HREF。如果有人中间点击你的链接打开一个新的标签,或者他们禁用了JavaScript,onclick就不会启动。
如果这是不可能的,那么您至少应该使用JavaScript和适当的单击事件处理程序将锚标记注入到文档中。
我意识到这并不总是可能的,但在我看来,在开发任何公共网站时都应该努力做到这一点。
查看Unobrusive JavaScript和Progressive增强(两个维基百科)。