微信禁止下拉查看URL的处理方法


Posted in Javascript onSeptember 28, 2017

场景:

微信下拉时可以查看到URL,本身是微信的一种安全策略之一,也是一种用户交互友好的体验;

效果原理:

微信下拉弹性效果其实是浏览器本身的一种特性,重点就是scroll值的一种体现;

处理策略:

1、直接禁止mobile端的touchmove事件;

这种策略一般适用页面只有一屏不需要下拉情况下使用;

var touch1 = function(){
  document.querySelector(‘body‘).addEventListener(‘touchmove‘, function (e) { 
    e.preventDefault(); 
  });
}

弊端:对于大小不同的屏要考虑到内容一屏全部显示,不然2+屏的内容就没有办法看了;

2、禁止touchmove同时判断scroll的位置是否到达顶部;

考虑到下拉时滚动条是否到达顶部 <= 10 来禁止touchmove事件,同时考虑存在先上拉再下拉的情况所以监听的touchend事件并计算一次touch事件流中的最高点位置用以判断

var touch2 = function () {
  var lastY;//最后一次y坐标点
  var betterY;//每次touch最高点
  document.querySelector(‘body‘).addEventListener('touchstart', function(event) {
    lastY = event.originalEvent.changedTouches[0].clientY;
    betterY = lastY;
  });
  document.querySelector(‘body‘).addEventListener('touchmove', function(event) {
    var y = event.originalEvent.changedTouches[0].clientY;
    if(y > betterY){
      betterY = y;
    }
    var st = document.body.scrollTop; //滚动条高度
    if (y >= lastY && st <= 10) {
      lastY = y;
      event.preventDefault();
    }
    lastY = y;
  });
  document.querySelector(‘body‘).addEventListener('touchend', function(event) {
    var y = event.originalEvent.changedTouches[0].clientY;
    var st = document.body.scrollTop; //滚动条高度
    if(y < betterY && st <= 10){
      event.preventDefault();
    }
  });
}

弊端:第一次的touchmove存在漏洞问题,touchmove的过程中也存在漏洞

3、监听scroll的滚动事件,禁止高度<0;

每当滚动条的高度小于0时就重置为0,强制回退顶部位置

var touch3 = function () {
  window.onscroll = function () {
    var top = document.documentElement.scrollTop || document.body.scrollTop;
    if(top <= 0){
      document.body.scrollTop = 0;
    }
  }
}

弊端:会存在下拉URL闪屏的现象

总结:

可以考虑以上三种策略结合来使用会更好;也有些人把touchmove禁掉后自己模拟touchmove处理,也是可以做到的就是比较复杂而已;

以上所述是小编给大家介绍的微信禁止下拉查看URL的处理方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复

Javascript 相关文章推荐
javascript web对话框与弹出窗口
Feb 22 Javascript
ASP中进行HTML数据及JS数据编码函数
Nov 11 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
JavaScript中 this 指向问题深度解析
Feb 21 Javascript
基于JS递归函数细化认识及实用实例(推荐)
Aug 07 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
小程序实现五星点评效果
Nov 03 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
vue封装swiper代码实例解析
Oct 08 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 #jQuery
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 #Javascript
js实现登录注册框手机号和验证码校验(前端部分)
Sep 28 #Javascript
基于JavaScript实现前端数据多条件筛选功能
Aug 19 #Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 #Javascript
JavaScript中重名的函数与对象示例详析
Sep 28 #Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
Sep 28 #Javascript
You might like
关于laravel后台模板laravel-admin select框的使用详解
2019/10/03 PHP
js输出列表实现代码
2010/09/12 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
javascript实现在某个元素上阻止鼠标右键事件的方法和实例
2014/08/12 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
js实现表格筛选功能
2017/01/18 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python+requests接口自动化框架的实现
2020/08/31 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
树转促学习心得体会
2014/09/10 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python