微信禁止下拉查看URL的处理方法
场景:
微信下拉时可以查看到URL,本身是微信的一种安全策略之一,也是一种用户交互友好的体验;
效果原理:
微信下拉弹性效果其实是浏览器本身的一种特性,重点就是scroll值的一种体现;
处理策略:
1、直接禁止mobile端的touchmove事件;
这种策略一般适用页面只有一屏不需要下拉情况下使用;
vartouch1=function(){ document.querySelector(‘body‘).addEventListener(‘touchmove‘,function(e){ e.preventDefault(); }); }
弊端:对于大小不同的屏要考虑到内容一屏全部显示,不然2+屏的内容就没有办法看了;
2、禁止touchmove同时判断scroll的位置是否到达顶部;
考虑到下拉时滚动条是否到达顶部<=10来禁止touchmove事件,同时考虑存在先上拉再下拉的情况所以监听的touchend事件并计算一次touch事件流中的最高点位置用以判断
vartouch2=function(){ varlastY;//最后一次y坐标点 varbetterY;//每次touch最高点 document.querySelector(‘body‘).addEventListener('touchstart',function(event){ lastY=event.originalEvent.changedTouches[0].clientY; betterY=lastY; }); document.querySelector(‘body‘).addEventListener('touchmove',function(event){ vary=event.originalEvent.changedTouches[0].clientY; if(y>betterY){ betterY=y; } varst=document.body.scrollTop;//滚动条高度 if(y>=lastY&&st<=10){ lastY=y; event.preventDefault(); } lastY=y; }); document.querySelector(‘body‘).addEventListener('touchend',function(event){ vary=event.originalEvent.changedTouches[0].clientY; varst=document.body.scrollTop;//滚动条高度 if(y弊端:第一次的touchmove存在漏洞问题,touchmove的过程中也存在漏洞
3、监听scroll的滚动事件,禁止高度<0;
每当滚动条的高度小于0时就重置为0,强制回退顶部位置
vartouch3=function(){ window.onscroll=function(){ vartop=document.documentElement.scrollTop||document.body.scrollTop; if(top<=0){ document.body.scrollTop=0; } } }弊端:会存在下拉URL闪屏的现象
总结:
可以考虑以上三种策略结合来使用会更好;也有些人把touchmove禁掉后自己模拟touchmove处理,也是可以做到的就是比较复杂而已;
以上所述是小编给大家介绍的微信禁止下拉查看URL的处理方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复