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


相关推荐: 南京网站制作费用,南京远驱官方网站?  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  重庆市网站制作公司,重庆招聘网站哪个好?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  JavaScript如何操作视频_媒体API怎么控制播放  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  如何在建站宝盒中设置产品搜索功能?  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  怎样使用JSON进行数据交换_它有什么限制  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何用虚拟主机快速搭建网站?详细步骤解析  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  高性价比服务器租赁——企业级配置与24小时运维服务  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  如何制作一个表白网站视频,关于勇敢表白的小标题?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  如何快速生成凡客建站的专业级图册?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何在宝塔面板创建新站点?  简单实现jsp分页  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  Laravel如何实现事件和监听器?(Event & Listener实战)  郑州企业网站制作公司,郑州招聘网站有哪些?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Bootstrap整体框架之CSS12栅格系统  SQL查询语句优化的实用方法总结  如何快速搭建高效服务器建站系统?  如何快速生成高效建站系统源代码?  android nfc常用标签读取总结  如何快速生成ASP一键建站模板并优化安全性?  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何挑选优质建站一级代理提升网站排名?  C#如何调用原生C++ COM对象详解  如何在云主机快速搭建网站站点?  C语言设计一个闪闪的圣诞树  在线制作视频的网站有哪些,电脑如何制作视频短片?  原生JS实现图片轮播切换效果  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  利用python获取某年中每个月的第一天和最后一天  如何在阿里云域名上完成建站全流程?  个人网站制作流程图片大全,个人网站如何注销?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析