微信禁止下拉查看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 相关文章推荐
JS加ASP二级域名转向的代码
May 17 Javascript
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
javascript类型转换使用方法
Feb 08 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
Dec 23 Javascript
jquery横向纵向鼠标滚轮全屏切换
Feb 27 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
ng-zorro-antd 入门初体验
Dec 03 Javascript
react同构实践之实现自己的同构模板
Mar 13 Javascript
小程序实现tab标签页
Nov 16 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
PHP中的超全局变量
2006/10/09 PHP
php学习之变量的使用
2011/05/29 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
Codeigniter里的无刷新上传的实现代码
2019/04/14 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
javascript getElementsByName()的用法说明
2009/07/31 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
理解JS事件循环
2016/01/07 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Python字符串切片操作知识详解
2016/03/28 Python
多版本Python共存的配置方法
2017/05/22 Python
python添加模块搜索路径方法
2017/09/11 Python
详解python中的装饰器
2018/07/10 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
职业女性的职业规划
2014/03/04 职场文书
小学雷锋月活动总结
2014/07/03 职场文书
离婚被告代理词
2015/05/23 职场文书
详解JVM系列之内存模型
2021/06/10 Javascript
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
python的变量和简单数字类型详解
2021/09/15 Python