微信禁止下拉查看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 相关文章推荐
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
利用Node.JS实现邮件发送功能
Oct 21 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
JS实现本地存储信息的方法(基于localStorage与userData)
Feb 18 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
Jul 11 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
Apr 09 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
webpack安装配置与常见使用过程详解(结合vue)
Jun 01 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
星际实力自我测试
2020/03/04 星际争霸
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHPMailer发送HTML内容、带附件的邮件实例
2014/07/01 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
JavaScript使用cookie
2007/02/02 Javascript
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
javascript动画效果类封装代码
2007/08/28 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
在新窗口打开超链接的方法小结
2013/04/14 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
vue 弹框产生的滚动穿透问题的解决
2018/09/21 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python中print函数简单使用总结
2019/08/05 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
几道数据库的面试题或笔试题
2014/05/31 面试题
2014年冬季防火方案
2014/05/21 职场文书
学校志愿者活动总结
2014/06/27 职场文书
乡镇干部个人对照检查材料思想汇报
2014/10/04 职场文书
导游词400字
2015/02/13 职场文书
百年孤独读书笔记
2015/06/29 职场文书
Python正则表达式中flags参数的实例详解
2022/04/01 Python