[转]html⾥a标签中href调⽤js的⼏种⽅法
我们常⽤的在a标签中有点击事件:
1. a href=”javascript:js_method();”
这是我们平台上常⽤的⽅法,但是这种⽅法在传递this等参数的时候很容易出问题,⽽且javascript:协议作为a的href属性的时候不仅会导致不必要的触发beforeunload事件,在IE⾥⾯更会使gif动画图⽚停⽌播放。W3C标准不推荐在href⾥⾯执⾏javascript语句。
a href=”javascript:void(0);” onclick=”js_method()”
这种⽅法是很多⽹站最常⽤的⽅法,也是最周全的⽅法,onclick⽅法负责执⾏js函数,⽽void是⼀个操作符,void(0)返回undefined,地址不发⽣跳转。⽽且这种⽅法不会像第⼀种⽅法⼀样直接将js⽅法暴露在浏览器的状态栏。pdf转html
3.a href=”javascript:;” onclick=”js_method()”
这种⽅法跟跟2种类似,区别只是执⾏了⼀条空的js代码。
4.a href=”#” onclick=”js_method()”
这种⽅法也是⽹上很常见的代码,#是标签内置的⼀个⽅法,代表top的作⽤。所以⽤这种⽅法点击后⽹页后返回到页⾯的最顶端。
5.a href=”#” onclick=”js_method();return false;”
这种⽅法点击执⾏了js函数后return false,页⾯不发⽣跳转,执⾏后还是在页⾯的当前位置。
我看了下taobao的主页,他们采⽤的是第2种⽅法,⽽alibaba的主页是采⽤的第1种⽅法,和我们的区别是每个href⾥的javascript⽅法都⽤try、catch包围。
综合上述,在a中调⽤js函数最适当的⽅法推荐使⽤:
a href=”javascript:void(0);” onclick=”js_method()”
a href=”javascript:;” onclick=”js_method()”
a href=”#” onclick=”js_method();return false;”
⽰例代码:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-Type" content="text/html" charset="utf-8">
<title>浏览器对象</title>
</head>
<body>
<h2>操作成功</h2>
<span id="time">5</span>秒后回到主页<a href="javascript:goBack()">返回</a>
<script type="text/javascript">
var i = 5;
var t = setInterval(function clock(){
i--;
time.innerHTML= i;
if (i==1) {
window.location.assign("www.sina");
}
} ,1000);
function goBack(){
varwindow.history.back();
}
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-Type"content="text/html"charset="utf-8">
<title>浏览器对象</title>
</head>
<body>
<h2>操作成功</h2>
<span id="time">5</span>秒后回到主页<a href="javascript:goBack()">返回</a>
<script type="text/javascript">
var i = 5;
var t = setInterval(function clock(){
i--;
time.innerHTML= i;
if (i==1) {
window.location.assign("www.sina");
}
} ,1000);
function goBack(){
varwindow.history.back();
}
</script>
</body>
</html>