微信禁止下拉查看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中的View-Model使用介绍
Aug 11 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
javascript中Number对象的toString()方法分析
Dec 20 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
js文本框输入内容智能提示效果
Dec 02 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
JavaScript设计模式开发中组合模式的使用教程
May 18 Javascript
JavaScript的继承实现小结
May 07 Javascript
mac上node.js环境的安装测试
Jul 03 Javascript
vue axios同步请求解决方案
Sep 29 Javascript
js实现div色块碰撞
Jan 16 Javascript
js实现抽奖功能
Nov 24 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
php计算一个文件大小的方法
2015/03/30 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
JavaScript数据结构中串的表示与应用实例
2017/04/12 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
2018/08/09 jQuery
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
vue+express+jwt持久化登录的方法
2019/06/14 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
不要用强制方法杀掉python线程
2017/02/26 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
使用python制作一个为hex文件增加版本号的脚本实例
2019/06/12 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
自动化专业个人求职信范文
2013/12/30 职场文书
销售总监岗位职责
2014/01/04 职场文书
2014和解协议书范文
2014/09/15 职场文书
家庭贫困证明
2014/09/23 职场文书
员工评语范文
2014/12/31 职场文书
考研英语辞职信
2015/05/13 职场文书
行政诉讼答辩状
2015/05/21 职场文书