有时候移动端页面通过手指滑动会误触到a标签造成页面跳转,这时候可以通过javascript 先清除掉浏览器的默认事件,然后通过window.location.href属性实现页面跳转!但是清除掉浏览器默认事件后 点击a标签失效不会跳转 手机浏览器的自带滚动条失效
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,user-scalable=no">
<title>Title</title>
<style>
a{width: 50px; height: 50px; display: block;background: red; margin-top: 20px;}
</style>
</head>
<body>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<a href="https://www.baidu.com/">百度</a>
<script>
/*防止误触,先清除掉浏览器的默认事件 这时候 点击a标签失效不会跳转 手机浏览器的自带滚动条失效*/
document.addEventListener('touchstart',function(e){
e.preventDefault();
});
window.onload = function(){
var Aa = document.querySelectorAll('a');
for(var i=0;i<Aa.length;i++){
Aa[i].addEventListener('touchmove',function(){
this.isMove = true; //给当前元素添加自定义属性isMove 让他等于true; 如果在元素上移动以后就等于true
});
Aa[i].addEventListener('touchend',function(){
if(!this.isMove){ //这里判断 的是如果没有移动的话就是点击。根据当前元素的链接通过window.location.href跳转
window.location.href = this.href;
}
this.isMove = false; //跳转完成以后恢复到false
});
}
}
</script>
</body>
</html>