微信禁止下拉查看URL的處理方法
場景:
微信下拉時(shí)可以查看到URL,本身是微信的一種安全策略之一,也是一種用戶交互友好的體驗(yàn);
效果原理:
微信下拉彈性效果其實(shí)是瀏覽器本身的一種特性,重點(diǎn)就是scroll值的一種體現(xiàn);
處理策略:
1、直接禁止mobile端的touchmove事件;
這種策略一般適用頁面只有一屏不需要下拉情況下使用;
var touch1 = function(){
document.querySelector(‘body‘).addEventListener(‘touchmove‘, function (e) {
e.preventDefault();
});
}
弊端:對于大小不同的屏要考慮到內(nèi)容一屏全部顯示,不然2+屏的內(nèi)容就沒有辦法看了;
2、禁止touchmove同時(shí)判斷scroll的位置是否到達(dá)頂部;
考慮到下拉時(shí)滾動(dòng)條是否到達(dá)頂部 <= 10 來禁止touchmove事件,同時(shí)考慮存在先上拉再下拉的情況所以監(jiān)聽的touchend事件并計(jì)算一次touch事件流中的最高點(diǎn)位置用以判斷
var touch2 = function () {
var lastY;//最后一次y坐標(biāo)點(diǎn)
var betterY;//每次touch最高點(diǎn)
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; //滾動(dòng)條高度
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; //滾動(dòng)條高度
if(y < betterY && st <= 10){
event.preventDefault();
}
});
}
弊端:第一次的touchmove存在漏洞問題,touchmove的過程中也存在漏洞
3、監(jiān)聽scroll的滾動(dòng)事件,禁止高度<0;
每當(dāng)滾動(dòng)條的高度小于0時(shí)就重置為0,強(qiáng)制回退頂部位置
var touch3 = function () {
window.onscroll = function () {
var top = document.documentElement.scrollTop || document.body.scrollTop;
if(top <= 0){
document.body.scrollTop = 0;
}
}
}
弊端:會存在下拉URL閃屏的現(xiàn)象
總結(jié):
可以考慮以上三種策略結(jié)合來使用會更好;也有些人把touchmove禁掉后自己模擬touchmove處理,也是可以做到的就是比較復(fù)雜而已;
以上所述是小編給大家介紹的微信禁止下拉查看URL的處理方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)
相關(guān)文章
Javascript圖像處理—平滑處理實(shí)現(xiàn)原理
這里直接引用OpenCV 2.4+ C++ 平滑處理和OpenCV 2.4+ C++ 邊緣梯度計(jì)算的相關(guān)內(nèi)容平滑也稱模糊, 是一項(xiàng)簡單且使用頻率很高的圖像處理方法,需要了解的朋友可以參考下2012-12-12
javascript中的有名函數(shù)和無名函數(shù)
javascript中的有名函數(shù)和無名函數(shù)...2007-10-10
JavaScript詞法作用域與調(diào)用對象深入理解
關(guān)于 Javascript 的函數(shù)作用域、調(diào)用對象和閉包之間的關(guān)系很微妙,關(guān)于它們的文章已經(jīng)有很多,本文做了一些總結(jié),需要的朋友可以參考下2012-11-11
innerText innerHTML的用法以及注意事項(xiàng) [推薦]
我們常常需要使用另外一些對象的屬性來實(shí)現(xiàn)動(dòng)態(tài)改變其中的文本,它們就是:innerText,outerText,innerHTML,outerHTML,千萬要注意它們的大小寫,因?yàn)殄e(cuò)一點(diǎn)您就得不到預(yù)期的效果了。2009-05-05
微信小程序?qū)崿F(xiàn)吸頂效果的方法實(shí)例
在微信小程序的開發(fā)中,經(jīng)常會有列表分類標(biāo)簽隨著界面滾動(dòng)吸頂?shù)男Ч?下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)吸頂效果的相關(guān)資料,需要的朋友可以參考下2021-08-08

