JavaScript中防止微信浏览器被整体拖动的方法

发布时间 - 2026-01-11 02:57:44    点击率:

在微信网页开发中,我使用的页面结构是在body下的container覆盖全屏,container下有个header和page的容器,page负责显示所有内容并实现滚动。

结构如图: 

但是遇到了一个问题:在页面已经滚动到顶部时,继续往下拖动page容器,会将微信浏览器整体往下拖,漏出“该网页由XXX提供”的提示,然后在安卓下,影响并不大,但是在iphone下,就没那么简单了,经过测试,在苹果下,往下拖动后快速滑动页面中的page,page并不会滚动,上拖同样遇到了这个问题,非常影响体验。

查阅文献后,我准备在touchstart和touchmove上做些处理。

思路是当page页面滚动到顶部时,再向下拖动会阻止默认的拖动事件,page页面到底后也阻止向上拖动。结构与代码如下

doctype html

html
  head
    title 微信拖动测试
    meta(charset="utf-8")
    meta(name="viewport", content="initial-scale=1, maximum-scale=1, minimum-scale=1")
    link(rel='stylesheet', href='/stylesheets/style.css')
    script(src="http://apps.bdimg.com/libs/zepto/1.1.4/zepto.min.js")
  body
    #container
      .header
        | header
      .page
        .box box1 in page
        .box box2 in page
        .box box3 in page
        .box.bottom box4 in page
  script.
    $(function() {
      var startY, endY;
      var box_height = $('#container').height();
      $('.page').on('touchstart', function(event) {
        event.stopPropagation();
        startY = event.touches[0].pageY;
      });
      $('.page').on('touchmove', function(event) {
        event.stopPropagation();
        var endY = event.changedTouches[0].pageY;
        var changedY = endY - startY;
        var scroll_top = $('.page').scrollTop();
          // 判断是否在顶部,且向下拖动
        if (scroll_top === 0 && changedY > 0) {
          event.preventDefault();
        }
          // 判断是否在底部,且向上拖动
        var o = $('.bottom').offset();
        if (o.top + o.height === box_height && changedY < 0) {
          event.preventDefault();
        }
      });
       // header禁止拖动
      $('.header').on('touchmove', function(event) {
        event.preventDefault();
      });
    });

样式如下:

*{
  padding: 0;
  margin: 0;
}
#container{
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  background-color: #efefef;
  color: #fff;
  text-align: center;
  font-size: 40px;
}
.header{
  position: absolute;
  left: 0;
  right: 0;
  height: 80px;
  line-height: 80px;
  background-color: #ddd;
}
.page{
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 80px;
  background-color: #ccc;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.page > *{
  z-index: 1;
}
.box{
  width: 100%;
  height: 300px;
  line-height: 300px;
  box-sizing: border-box;
  border-bottom: 2px solid #fff;
}

总结

以上所述是小编给大家介绍的JavaScript中防止微信浏览器被整体拖动的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# 微信浏览器整体拖动  # 解决微信内置浏览器返回上一页强制刷新问题方法  # JavaScript 监控微信浏览器且自带返回按钮时间  # JS如何设置iOS中微信浏览器的title  # 微信小程序 在Chrome浏览器上运行以及WebStorm的使用  # JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法  # Adnroid 微信内置浏览器清除缓存  # 解决微信浏览器Javascript无法使用window.location.reload()刷新页面  # 拖动  # 往下  # 小编  # 判断是否  # 是在  # 有个  # 在此  # 这个问题  # 就没  # 给大家  # 如图  # 一个问题  # 会将  # 全屏  # 所有内容  # 做些  # 所述  # 给我留言  # 感谢大家  # 再向 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Python并发异常传播_错误处理解析【教程】  网站制作壁纸教程视频,电脑壁纸网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  如何在Windows服务器上快速搭建网站?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  实例解析Array和String方法  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  javascript基本数据类型及类型检测常用方法小结  如何在IIS中新建站点并配置端口与物理路径?  如何在云指建站中生成FTP站点?  手机软键盘弹出时影响布局的解决方法  Laravel用户密码怎么加密_Laravel Hash门面使用教程  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  深圳网站制作的公司有哪些,dido官方网站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  制作电商网页,电商供应链怎么做?  非常酷的网站设计制作软件,酷培ai教育官方网站?  Thinkphp 中 distinct 的用法解析  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  iOS中将个别页面强制横屏其他页面竖屏  bootstrap日历插件datetimepicker使用方法  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  微信小程序 闭包写法详细介绍  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel如何生成URL和重定向?(路由助手函数)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何配置Horizon来管理队列?(安装和使用)  英语简历制作免费网站推荐,如何将简历翻译成英文?  php结合redis实现高并发下的抢购、秒杀功能的实例  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  Laravel如何使用模型观察者?(Observer代码示例)  如何快速搭建个人网站并优化SEO?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中