微信禁止下拉查看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继承机制的设计思想分享
Aug 28 Javascript
深入分析jquery解析json数据
Dec 09 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
jQuery实现径向动画菜单效果
Jul 17 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 Javascript
jQuery中table数据的值拷贝和拆分
Mar 19 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 Javascript
async/await让异步操作同步执行的方法详解
Nov 01 Javascript
简单了解JavaScript sort方法
Nov 25 Javascript
学前端,css与javascript重难点浅析
Jun 11 Javascript
原生JavaScript实现五子棋游戏
Nov 09 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
音乐播放用的的几个函数
2006/09/07 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python中的字符串查找操作方法总结
2016/06/27 Python
Python执行时间的计算方法小结
2017/03/17 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
python @property的用法及含义全面解析
2018/02/01 Python
Python入门学习指南分享
2018/04/11 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python写一个随机点名软件的实例
2019/11/28 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
网络工程师的自我评价
2013/10/02 职场文书
农村门前三包责任书
2014/07/25 职场文书
网络研修心得体会
2016/01/08 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers