ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

js 禁止/允许页面滚动

2019-09-04 18:52:37  阅读:324  来源: 互联网

标签:function false js passive touchmove 滚动 document 页面


参考:https://blog.csdn.net/huangfu_chunfeng/article/details/46429997
         https://www.cnblogs.com/wxcbg/p/10452985.html
         https://blog.csdn.net/weixin_40126227/article/details/80858990
         https://blog.csdn.net/lyy_666/article/details/82185248

方法一:IOS允许滚动会无效

function scrControl(t){
    if(t == 0){ //禁止滚动
        document.body.addEventListener('touchmove', function (e) {
              e.preventDefault();
        }, { passive: false });  //passive 参数不能省略,用来兼容ios和android
        }else if( t == 1){ //允许滚动
        document.body.addEventListener('touchmove', function (e) {
                  e.returnValue = true;
            }, {passive: false});
    }
}

passive,设置该属性的目的主要是为了在阻止事件默认行为导致的卡顿。等待监听器的执行是耗时的,有些甚至耗时很明显,这样就会导致页面卡顿。即便监听器是个空函数,也会产生一定的卡顿,毕竟空函数的执行也会耗时。加上{ passive: false }能防止页面卡顿。

可以通过传递 passive 为 true 来明确告诉浏览器,事件处理程序不会调用 preventDefault 来阻止默认滑动行为。
如果设置了passive为true,同时又阻止默认行为,阻止是不生效的。

document.addEventListener("touchmove", function(event) {
    event.preventDefault() //不产生作用
}, {passive: true});

方法二:兼容IOS

function bodyScroll(event){
    event.preventDefault();
}

function scrControl(t){
    if(t == 0){ //禁止滚动
        document.body.addEventListener('touchmove', this.bodyScroll, { passive: false });
    }else if( t == 1){ //开启滚动
        document.body.removeEventListener('touchmove',this.bodyScroll, {passive: false});
    }
}

 

标签:function,false,js,passive,touchmove,滚动,document,页面
来源: https://www.cnblogs.com/linjiangxian/p/11460930.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有