微信禁止下拉查看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 相关文章推荐
jquery.validate使用攻略 第一部
Jul 01 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
JavaScript知识点整理
Dec 09 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
May 12 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 Javascript
新版小程序登录授权的方法
Dec 12 Javascript
js设置鼠标悬停改变背景色实现详解
Jun 26 Javascript
Vue监听滚动实现锚点定位(双向)示例
Nov 13 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 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
PHP的explode和implode的使用说明
2011/07/17 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
CI框架附属类用法分析
2018/12/26 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
vue实现动态列表点击各行换色的方法
2018/09/13 Javascript
Python根据文件名批量转移图片的方法
2018/10/21 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python实现图像全景拼接
2020/03/27 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
python pip如何手动安装二进制包
2020/09/30 Python
python实现录音功能(可随时停止录音)
2020/10/26 Python
简述安装Slackware Linux系统的过程
2012/01/12 面试题
12月小学生校园广播稿
2014/02/04 职场文书
超市重阳节活动方案
2014/02/10 职场文书
安全生产月演讲稿
2014/05/09 职场文书
2014中考励志标语
2014/06/05 职场文书
应届大学生求职信
2014/07/20 职场文书
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle