微信禁止下拉查看URL的处理方法

 更新时间:2017年09月28日 17:05:31   投稿:mrr  
这篇文章主要介绍了微信禁止下拉查看URL的处理方法,需要的朋友可以参考下

场景:

微信下拉时可以查看到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实现搜索筛选功能实例代码

    这篇文章主要给大家介绍了关于javascript实现搜索筛选功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • JS 修改URL参数(实现代码)

    JS 修改URL参数(实现代码)

    本篇文章是对JS修改URL参数的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • JS如何去掉小数末尾多余的0,并且最多保留两位小数

    JS如何去掉小数末尾多余的0,并且最多保留两位小数

    这篇文章主要介绍了JS如何去掉小数末尾多余的0,并且最多保留两位小数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • js+css3实现炫酷时钟

    js+css3实现炫酷时钟

    这篇文章主要为大家详细介绍了js+css3实现炫酷时钟,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • js实现支持手机滑动切换的轮播图片效果实例

    js实现支持手机滑动切换的轮播图片效果实例

    这篇文章主要介绍了js实现支持手机滑动切换的轮播图片效果,实例分析了javascript实现图片切换的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 微信小程序动态增加按钮组件

    微信小程序动态增加按钮组件

    这篇文章主要为大家详细介绍了微信小程序动态增加按钮组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • JS中arguments的使用示例

    JS中arguments的使用示例

    本文主要介绍了JS中arguments的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • js实现对table动态添加、删除和更新的方法

    js实现对table动态添加、删除和更新的方法

    这篇文章主要介绍了js实现对table动态添加、删除和更新的方法,涉及javascript针对html中table表格节点的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果

    bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果

    这篇文章主要给大家介绍了关于利用bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果的相关资料,文中给出了完整的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2017-06-06
  • Nuxt.js开启SSR渲染的教程详解

    Nuxt.js开启SSR渲染的教程详解

    Nuxt.js 是一个基于 Vue.js 的通用应用框架。 通过对客户端/服务端基础架构的抽象组织,Nuxt.js 主要关注的是应用的 UI渲染。这篇文章主要介绍了Nuxt.js开启SSR渲染 ,需要的朋友可以参考下
    2018-11-11

最新评论