以下是构建链接的两种方法,该链接的唯一目的是运行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代码。
然后你应该考虑到有人在浏览器中阻止JavaScript。
因此,如果你真的要将该链接仅用于运行JavaScript函数,那么你应该动态添加它,这样即使用户没有在浏览器中启用JavaScript,也不会看到它,而你使用该链接只是为了触发一个JavaScript函数,在浏览器中禁用JavaScript时,使用这样的链接是没有意义的。
由于这个原因,当JavaScript被禁用时,它们都不好。
a如果启用了JavaScript,并且您只想使用该链接调用JavaScript函数,则
<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
比使用
<a href="#" onclick="myJsFunc();">Link</a>
因为href=“#”将导致页面执行不需要的操作。
此外,<a href=“javascript:void(0)”onclick=“myJsFunc();”>Link</a>优于<a href=”#“onclick=“myJsFunc(;)”>Link//a>的另一个原因是javascript被用作大多数浏览器的默认脚本语言。例如,InternetExplorer使用onclick属性来定义要使用的脚本语言类型。除非出现另一种好的脚本语言,否则Internet Explorer也会使用JavaScript作为默认语言,但如果另一种脚本语言使用JavaScript:,则会让Internet Explorer了解正在使用的脚本语言。
考虑到这一点,我更喜欢使用和锻炼
<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>
为了让它成为一种习惯,为了更方便用户,请在JavaScript代码中添加此类链接:
$(document).ready(function(){
$(".blabla").append('<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>')
});
其他回答
只使用#会做出一些有趣的动作,所以如果你想节省JavaScript bla、bla、的输入工作量,我建议使用#self,。
理想情况下,您应该有一个真正的URL作为非JavaScript用户的回退。
如果这没有意义,请使用#作为href属性。我不喜欢使用onclick属性,因为它将JavaScript直接嵌入到HTML中。更好的方法是使用外部JS文件,然后将事件处理程序添加到该链接。然后,您可以阻止默认事件,以便在用户单击该事件后,URL不会更改为追加#。
您不应该在HTML中使用inline onclick=“something();”,以避免用无意义的代码污染它;所有单击绑定都必须在Javascript文件(*.js)中设置。
像这样设置绑定:$(“#myAnchor”).click(function(){…**return false**;});或$('#myAnchor').bind('click',function(){…**return false**;});
然后,您就可以轻松加载一个干净的HTML文件(并且seo友好),而无需数千href=“javascript:void(0);”,只需href=“#”
因此,当您使用<a/>标记执行某些JavaScript操作时,如果您也放入href=“#”,则可以在事件末尾添加return false(如果是内联事件绑定),如:
<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>
或者您可以使用JavaScript更改href属性,如:
<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>
or
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
但从语义上讲,上述所有实现这一点的方法都是错误的(尽管它很好)。如果没有创建任何元素来导航页面,并且有一些JavaScript内容与之相关,那么它不应该是<a>标记。
您可以根据需要简单地使用<button/>来做事情或任何其他元素,如b、span或任何适合的元素,因为您可以在所有元素上添加事件。
因此,使用<a href=“#”>有一个好处。在执行a href=“#”时,默认情况下会在该元素上获得光标指针。为此,我认为您可以使用CSS,比如cursor:pointer;这也解决了这个问题。
最后,如果您从JavaScript代码本身绑定事件,那么如果您使用的是<a>标记,则可以使用event.prpreventDefault()来实现这一点,但如果您没有使用<a>标签,则可以获得一个优势,您不需要这样做。
所以,如果你看到了,最好不要对这种东西使用标签。
我用开发工具在谷歌chrome中尝试了这两种方法,结果id=“#”花了0.32秒。而javascript:void(0)方法只花了0.18秒。因此,在googlechrome中,javascript:void(0)工作得更好更快。