以下是构建链接的两种方法,该链接的唯一目的是运行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。
使用href=“#”将页面滚动到顶部;使用void(0)会在浏览器中产生导航问题。
而是使用链接以外的元素:
<span onclick="myJsFunc()" class="funcActuator">myJsFunc</span>
并使用CSS设置样式:
.funcActuator {
cursor: default;
}
.funcActuator:hover {
color: #900;
}
其他回答
我用开发工具在谷歌chrome中尝试了这两种方法,结果id=“#”花了0.32秒。而javascript:void(0)方法只花了0.18秒。因此,在googlechrome中,javascript:void(0)工作得更好更快。
让禁用JavaScript的用户可以访问您的网站很好,在这种情况下,href指向执行与正在执行的JavaScript相同操作的页面。否则,我使用带有“return false;”的“#”来阻止其他人提到的默认操作(滚动到页面顶部)。
在谷歌上搜索“javascript:void(0)”提供了有关此主题的大量信息。其中一些,比如这篇提到了不使用void(0)的原因。
如果您使用的是<a>元素,请使用以下命令:
<a href="javascript:myJSFunc();" />myLink</a>
就我个人而言,我会在稍后使用JavaScript附加一个事件处理程序(使用attachEvent或addEventListener,或者也可以将您最喜欢的JavaScript框架放在这里)。
我个人将它们结合使用。例如:
HTML
<a href="#">Link</a>
使用一点jQuery
$('a[href="#"]').attr('href','javascript:void(0);');
or
$('a[href="#"]').click(function(e) {
e.preventDefault();
});
但我使用它只是为了防止用户单击空锚点时页面跳到顶部。我很少在HTML中直接使用onClick和其他on事件。
我的建议是将<span>元素与class属性一起使用,而不是锚。例如:
<span class="link">Link</span>
然后将函数分配给.link,其中包含一个封装在body中的脚本,该脚本位于</body>标记之前或外部JavaScript文档中。
<script>
(function($) {
$('.link').click(function() {
// do something
});
})(jQuery);
</script>
*注意:对于动态创建的元素,请使用:
$('.link').on('click', function() {
// do something
});
对于使用动态创建元素创建的动态创建元素,请使用:
$(document).on('click','.link', function() {
// do something
});
然后,您可以将span元素设置为看起来像带有一点CSS的锚点:
.link {
color: #0000ee;
text-decoration: underline;
cursor: pointer;
}
.link:active {
color: red;
}
下面是上面提到的jsFiddle示例。
我同意其他地方的建议,即应该在href属性中使用常规URL,然后在onclick中调用一些JavaScript函数。缺陷在于,它们在调用后自动添加return false。
这种方法的问题是,如果函数无法工作或出现任何问题,链接将变得不可点击。Onclick事件将始终返回false,因此不会调用正常的URL。
有一个非常简单的解决方案。如果函数工作正常,则返回true。然后使用返回的值确定是否应取消单击:
JavaScript
function doSomething() {
alert( 'you clicked on the link' );
return true;
}
HTML
<a href="path/to/some/url" onclick="return !doSomething();">link text</a>
注意,我否定了doSomething()函数的结果。如果它有效,它将返回true,因此它将被否定(false),路径/to/some/URL将不会被调用。如果函数返回false(例如,浏览器不支持函数中使用的内容或其他任何错误),则将其否定为true,并调用路径/to/some/URL。