JavaScript实现移动端禁止下拉露出网址广告屏蔽技巧

目录
  • 需求
  • 查找解决方案

需求

移动端禁止下拉 露出网址或广告

查找解决方案

基本都是

document.body.addEventListener('touchmove', function (e) { e.preventDefault() }, { passive: false })

就很离谱,这样会导致scroll无法滚动。

我的解决方案

function stopDown(el) {
    let startX, startY;
    // el是最外层div
    el.addEventListener("touchstart", (e) => {
        startX = e.changedTouches[0].pageX;
        startY = e.changedTouches[0].pageY;
    })
    el.addEventListener("touchmove", (e) => {
        //获取滑动屏幕时的X,Y
        let endX = e.changedTouches[0].pageX;
        let endY = e.changedTouches[0].pageY;
        //获取滑动距离
        let distanceX = endX - startX;
        let distanceY = endY - startY;
        //判断滑动方向
        if (Math.abs(distanceX) > Math.abs(distanceY) && distanceX > 0) {
            // console.log('往右滑动');
        } else if (Math.abs(distanceX) > Math.abs(distanceY) && distanceX < 0) {
            // console.log('往左滑动');
        } else if (Math.abs(distanceX) < Math.abs(distanceY) && distanceY < 0) {
            // console.log('往上滑动');
        } else if (Math.abs(distanceX) < Math.abs(distanceY) && distanceY > 0) {
            // 核心在这
            // path 是从触摸点到最外层所有祖先节点的集合,不了解就log看下
            let path = e.path
            let is_scrollTop = false
            // 从触摸点到最外层所有祖先节点 scrollTop不为0就不禁止下拉 为0 就禁止下拉
            for (let dom of path) {
                if (dom.scrollTop) {
                    is_scrollTop = true
                }
            }
            if (!is_scrollTop) {
                e.preventDefault()
                return false
            }
            // console.log('往下滑动');
        } else {
            // console.log('点击未滑动');
        }
    })
}

目前自测安卓 微信内、uc、小米浏览器 效果都不错,更多关于移动端禁止下拉广告网址的相关技巧请关注我们其它相关文章!

(0)

相关推荐

  • 倾力总结40条常见的移动端Web页面问题解决方案

    1.安卓浏览器看背景图片,有些设备会模糊. 用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone 4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2.现在android比较乱,有1.5的,有2的也有3的. 想让图片在手机里显示更为清晰,必须使用2x的背景图来代替img标签(一般情况都是用2倍).例如

  • 结合mint-ui移动端下拉加载实践方法总结

    1.npm i mint-ui -S 2.main.js中引入import 'mint-ui/lib/style.css' 3.以下是代码结构部分: <template> <div class="main-body" :style="{'-webkit-overflow-scrolling': scrollMode}"> <v-loadmore :bottom-method="loadBottom" :bottom-

  • 如何阻止移动端浏览器点击图片浏览

    在一些移动端浏览器上,如果点击图片,会产生一个浏览图片的行为. QQ没有这种默认行为,但是UC浏览器有. 所以为了达到一致的效果,这种默认的浏览行为是需要被禁止的. 下面介绍几种方法: 1.在img元素上添加 onclick="return false" <img src="a.png" onclick="return false" /> 2.图片用背景图的方式插入 background:url(a.png) norepeat cen

  • 如何实现移动端浏览器不显示 pc 端的广告

    前一段时间写了一篇博文, 关于微信内置浏览器不显示联盟广告 根据 window.navigator.userAgent 来判断当前浏览器是否是微信内置浏览器 window.navigator.userAgent=='micromessenger' 今天要分享的内容差不多,因为之前只考虑了微信浏览器的适配,回头在移动端浏览器打开站点,发现适配问题. 有的联盟会自动屏蔽移动端,但是有的联盟就不能屏蔽,所以只能手动去判断. 根据浏览器 userAgent 判断来源 安卓设备的的 userAgent 判

  • JavaScript实现移动端禁止下拉露出网址广告屏蔽技巧

    目录 需求 查找解决方案 需求 移动端禁止下拉 露出网址或广告 查找解决方案 基本都是 document.body.addEventListener('touchmove', function (e) { e.preventDefault() }, { passive: false }) 就很离谱,这样会导致scroll无法滚动. 我的解决方案 function stopDown(el) { let startX, startY; // el是最外层div el.addEventListener

  • 基于HTML模板和JSON数据的JavaScript交互(移动端)

    写本文之前,我正在做一个基于Tab页的订单中心: 每点击一个TAB标签,会请求对应状态的订单列表.之前的项目,我会在js里使用 + 连接符连接多个html内容: var html = ''; html += '<div class="empty-list">' + '<div class="icon icon-box"></div>'+ '<div>还没有订单</div>'+ '</div>';

  • JavaScript实现网页端播放摄像头实时画面

    目录 初衷 应对的场景 涉及到的范围 解决问题的思路 摄像头的Rtsp地址 ffmpeg下载,安装,配置环境变量 nodejs和Express JSMpeg播放和请求打开关闭 初衷 写这篇博客已经是项目过去很久了,之所以写是因为当时被这个问题为难了很久.我原本是做后端的,涉及到前端的东西,当时是两眼一黑.好在最后还是解决了.当相信这个内容还是有价值的,所以今天整理出来,帮助未来可能需求的人. 应对的场景 希望在自己的Web应用中播放局域网(不能上云),或是广域网的摄像头实时画面. 涉及到的范围

  • javascript实现省市区三级联动下拉框菜单

    本文实例讲述了javascript实现省市区三级联动下拉框菜单代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title> <!-- 使用QQ的省市区数据 --> <!-- <script type="text/javascript" src="http:/

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

    场景: 微信下拉时可以查看到URL,本身是微信的一种安全策略之一,也是一种用户交互友好的体验: 效果原理: 微信下拉弹性效果其实是浏览器本身的一种特性,重点就是scroll值的一种体现: 处理策略: 1.直接禁止mobile端的touchmove事件: 这种策略一般适用页面只有一屏不需要下拉情况下使用: var touch1 = function(){ document.querySelector('body').addEventListener('touchmove', function (e

  • JS实现从网页顶部掉下弹出层效果的方法

    本文实例讲述了JS实现从网页顶部掉下弹出层效果的方法.分享给大家供大家参考.具体如下: 这里介绍的JavaScript动画背景出层,实现从网页顶部掉下来的感觉,停止时还带有缓冲弹跳的意思,从上到下显示的动画弹出层,带关闭功能,没有怎么美化,喜欢的用时候息动手美化下,觉得不错. 运行效果如下图所示: 具体代码如下: <HTML><HEAD><TITLE>窗口从上掉下来</TITLE> </HEAD> <BODY bgColor=#fef4d9

  • 移动端 一个简单易懂的弹出框

    先给大家展示下效果图,如果大家感觉还不错,请继续参考实现代码. 关键代码如下所示: function tishi(content,url) { var html = '<div class="xiaoxi none" id="msg" style="z-index:9999;left: 5%;width: 90%;position: fixed;background:none;top:50%;"> <p class="

  • javascript适合移动端的日期时间拾取器

    这是一个适合移动设备WEB应用的日期和时间拾取器,在桌面版的日期拾取器我们一般用jQuery UI的datepicker插件,而移动手机版的日期拾取器则可以根据项目需求选择与jQuery Mobile配合的mobiscroll.js插件,它提供了友好的日期和时间选择操作界面,且易于配置和使用. HTML 首先我们加载相关插件和样式文件,该插件基于jQuery和jQuery.mobile所以首先需要加载这两个库文件,然后再加载mobiscroll.js插件以及相关CSS文件. <script sr

  • vue2.0 移动端实现下拉刷新和上拉加载更多的示例

    本人正在基于 vue2.0 + webpack + es6 搭建前端架构,整理了部分插件,下面这个是下拉更新 上拉更多的,挺好用的,分享给大家. 直接上代码,不懂的多看几遍,下面我换会告诉大家如何使用. <template lang="html"> <div class="yo-scroll" :class="{'down':(state===0),'up':(state==1),refresh:(state===2),touch:tou

  • javascript实现蒙版与禁止页面滚动

    本文实例为大家分享了javascript实现蒙版与禁止页面滚动的具体代码,供大家参考,具体内容如下 项目需求:页面很长,要求加个蒙版,点击特定位置蒙版消失可以滑动页面,否则蒙版存在页面不可以滑动:要同时兼容移动端和pc端. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name=viewport content="

随机推荐