通过对滑动事件(touchmove)设置e.preventDefault()和e.stopPropagation()函数实现功能。以及禁止解除,即把touchmove改成touchstart即可。
具体实现思路及代码如下:
1、打开一个HTML页面,页面只有一个<h>标签,并在浏览器打开开发者调试界面。安卓和IOS调试均正常。
2、添加关键函数,滑动时输出字符。(此时,将e.preventDefault()和e.stopPropagation()两个函数注释)
3、此时,开发者工具console输出:
4、此时,将第三步的注释去掉,将正常的console注释,如下:
5、此时的页面输出如下:(滑动时返回错误)
扩展资料:
js移动端事件:
1、touchstart:当手指触摸屏幕时触发;即使已经有一个手指放在了屏幕上也会触发
2、touchmove:当手指在屏幕上滑动时连续地触发。在这个世界发生期间,调用preventDefault()可以阻止滚动。
3、touchend:当手指在屏幕上移开时触发。
4、touchcancel:当系统停止跟踪触摸时触发。
上面这几个事件都会冒泡,也都可以取消。
虽然这些触摸事件没有在DOM规范中定义,但它们却是以兼容DOM的方式实现的。因此,每个触摸事件的event对象都提供了鼠标事件中常见的属性:
bubbles,cancelable,view,clientX,clientY,screenX,screenY,detail,altKey,shiftKey,ctrlKey和metaKey。
除了常见的DOM属性外,触摸世界还包含下列三个用于跟踪触摸的属性。
1、touches:表示当前跟踪的触摸操作的Touch对象的数组。
2、targetTouches:特定于事件目标的Touch对象的数组。
3、changedTouches:表示字上次触摸以来发生了什么改变的Touch对象的数组。
推荐于2017-04-17
var jinzhi=0;
document.addEventListener("touchmove",function(e){
if(jinzhi==0){
e.preventDefault();
e.stopPropagation();
}
},false);
后面随便用个函数 把jinzhi的值改为不为0 就又可以滚动了。原理就是这样 很简单
你好,我是这样写的
var t=0;
$(".nav_click").click(function(){
t++;
var jz=t%2;
if(jz==0)
{
document.addEventListener("touchmove",function(e){
e.preventDefault();
e.stopPropagation();
},false);
}
})当jz不是0,也是禁止的,怎么改,谢谢
因为 禁止不禁止是在监听里做判断 而不是监听函数外,在函数外只要触发一次监听,只要不取消监听都会一直执行。所以必须把判断写在里面
document.addEventListener("touchmove",function(e){
if(jz==0){
e.preventDefault();
e.stopPropagation();
}
},false);
}
2018-07-05 · 百度知道合伙人官方认证企业
var jinzhi=0;
document.addEventListener("touchmove",function(e){
if(jinzhi==0){
e.preventDefault();
e.stopPropagation();
}
},false);
后面随便用个函数 把jinzhi的值改为不为0 就又可以滚动了。原理就是这样 很简单