其中";href";“我应该为JavaScript链接使用的值”#&引用;或;javascript:void(0)“;?
以下是构建链接的两种方法,链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好其中";href";“我应该为JavaScript链接使用的值”#&引用;或;javascript:void(0)“;?,javascript,html,performance,optimization,href,Javascript,Html,Performance,Optimization,Href,以下是构建链接的两种方法,链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好 函数myJsFunc(){ 警报(“myJsFunc”); } “#”将用户带回到页面顶部,因此我通常使用void(0) javascript:的行为也类似于javascript:void(0)第一个,最好有一个真正的链接,以防用户禁用JavaScript。只要确保返回false,以防止在JavaScript执行时触发click事件 <a href="#" onclic
函数myJsFunc(){
警报(“myJsFunc”);
}
“#”
将用户带回到页面顶部,因此我通常使用void(0)
javascript:
的行为也类似于javascript:void(0)代码>第一个,最好有一个真正的链接,以防用户禁用JavaScript。只要确保返回false,以防止在JavaScript执行时触发click事件
<a href="#" onclick="myJsFunc(); return false;">Link</a>
如果使用Angular2,则此方法有效:
除非您使用JavaScript编写链接(这样您就知道它在浏览器中已启用),否则理想情况下,您应该为禁用JavaScript浏览的用户提供适当的链接,然后在onclick事件处理程序中阻止链接的默认操作。这样,那些启用JavaScript的人将运行该函数,而那些禁用JavaScript的人将跳转到适当的页面(或同一页面中的位置),而不仅仅是单击链接而什么也没有发生。
如果你有一个实际的URL,可以使用它作为HREF。如果有人在你的链接上点击鼠标中键打开一个新标签,或者如果他们禁用了JavaScript,onclick将不会触发
如果这是不可能的,那么您至少应该使用JavaScript和适当的click事件处理程序将锚定标记注入到文档中
我意识到这并不总是可能的,但在我看来,在开发任何公共网站时都应该努力做到这一点
查看和(都是维基百科)。理想情况下,您可以这样做:
<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>
或者,更好的方法是,在HTML中有默认的操作链接,并且在DOM呈现后通过JavaScript将onclick事件悄悄地添加到元素中,从而确保如果JavaScript不存在/未使用,则不会有无用的事件处理程序混淆代码和潜在的混淆(或至少分散注意力)您的实际内容。禁用JavaScript的用户可以访问您的站点,这很好,在这种情况下,href指向一个页面,该页面执行与正在执行的JavaScript相同的操作。否则,我会使用带有“返回false;”
”的“#”来阻止其他人提到的默认操作(滚动到页面顶部)
谷歌搜索“javascript:void(0)
”提供了有关此主题的大量信息。如果你问我的话,他们中的一些人会提到不使用void(0)的原因
如果你的“链接”的唯一目的是运行一些JavaScript代码,那么它不符合链接的条件;而是一段带有JavaScript函数的文本。我建议使用一个带有onclick处理程序的
标记和一些基本CSS来导入链接。链接用于导航,如果您的JavaScript代码不用于导航,那么它不应该是
标记
例如:
function callFunction(){console.log(“调用的函数”);}
.jsAction{
光标:指针;
颜色:#00f;
文字装饰:下划线;
}
我想在这里调用JavaScript函数。
根据您想要完成的任务,您可以忽略onclick,只需使用href:
<a href="javascript:myJsFunc()">Link Text</a>
最后,如果您不想让任何人去任何地方,也不想调用javascript函数,则可以使用javascript:void(0)
。如果你有一张你想让鼠标悬停事件发生的图片,它会非常有用,但是用户没有任何东西可以点击。我相信你提出的是一个错误的二分法。这不是唯一的两个选择
我同意D4V360先生的意见,他建议,即使您使用锚定标签,您在这里也没有真正的锚定。您所拥有的只是文档中的一个特殊部分,其行为应该略有不同。
标记更合适。我使用javascript:void(0)
原因有三。鼓励开发团队使用#
不可避免地会导致一些人使用如下函数的返回值:
function doSomething() {
//Some code
return false;
}
onclick="someFunc.call(this)"
但是他们忘记了在onclick中使用returndosomething()
,只使用doSomething()
避免#
的第二个原因是最后的返回false如果调用的函数抛出错误,则不会执行代码>。因此,开发人员还必须记住适当地处理被调用函数中的任何错误
第三个原因是,在某些情况下,onclick
事件属性是动态分配的。我更喜欢能够调用函数或动态分配函数,而不必专门为一种或另一种附件方法编写函数代码。因此,我的HTML标记中的onclick
(或任何内容)如下所示:
function doSomething() {
//Some code
return false;
}
onclick="someFunc.call(this)"
或
使用javascript:void(0)
可以避免上述所有问题,而且我还没有发现任何负面影响的例子
因此,如果您是一名独立的开发人员,那么您显然可以做出自己的选择,但如果您是一个团队,您必须声明:
使用href=“#”
,确保onclick
始终包含返回false
最后,任何被调用的函数都不会抛出错误,如果将函数动态附加到onclick
属性,请确保它在不抛出错误的同时返回false
或
使用href=“javascript:void(0)”
第二种方法显然更容易沟通。我同意其他地方的建议,即你应该定期使用U
function doSomething() {
alert( 'you clicked on the link' );
return true;
}
<a href="path/to/some/url" onclick="return !doSomething();">link text</a>
<a href="search.php" id="searchLink">Search</a>
var link = document.getElementById('searchLink');
link.onclick = function() {
try {
// Do Stuff Here
} finally {
return false;
}
};
$(document).ready(function() {
$("a").css("cursor", "pointer");
});
<a onclick="hello()">Hello</a>
<a href="javascript:;" onclick="myJsFunc();">Link</a>
<a href="javascript:void(0);" onclick="myJsFunc();">Link</a>
<a href="/gracefully/degrading/url/with/same/functionality.ext" class="some-selector">For great justice</a>
$(function() {
$(".some-selector").click(myJsFunc);
});
<p><a href="Home/ChangePicture" onclick="return ChangePicture_onClick();" title="Change Picture">Change Picture</a></p>
<script type="text/javascript">
function ChangePicture_onClick() {
$.get('Home/ChangePicture',
function (htmlResult) {
$("#ModalViewDiv").remove(); //Prevent duplicate dialogs
$("#modalContainer").append(htmlResult);
$("#ModalViewDiv").dialog({
width: 400,
modal: true,
buttons: {
"Upload": function () {
if(!ValidateUpload()) return false;
$("#ModalViewDiv").find("form").submit();
},
Cancel: function () { $(this).dialog("close"); }
},
close: function () { }
});
}
);
return false;
}
</script>
<a href="#" onclick="myJsFunc();return false;">Link</a>
$(function(){
$('.no-link').click(function(e){
e.preventDefault();
});
});
<a href="/" class="no-link">Faux-Link</a>
<a href="javascript:void(0)" class="no-link">Faux-Link</a>
<a href="">Do some fancy JavaScript</a>
<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>
<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
<a href="#">Link</a>
$('a[href="#"]').attr('href','javascript:void(0);');
$('a[href="#"]').click(function(e) {
e.preventDefault();
});
<span class="link">Link</span>
<script>
(function($) {
$('.link').click(function() {
// do something
});
})(jQuery);
</script>
$('.link').on('click', function() {
// do something
});
$(document).on('click','.link', function() {
// do something
});
.link {
color: #0000ee;
text-decoration: underline;
cursor: pointer;
}
.link:active {
color: red;
}
<a href="javascript:;" onclick="yourFunction()">Link description</a>
<span onclick="myJsFunc()" class="funcActuator">myJsFunc</span>
.funcActuator {
cursor: default;
}
.funcActuator:hover {
color: #900;
}