屏蔽微信下拉出现黑底现象
来源:互联网 发布:javascript 子元素 编辑:程序博客网 时间:2024/05/01 16:47
最近做的项目遇到了一个需求,在ios上微信网页下拉的时候不能出现黑底。如果要做的网页本来就设计成不能滚动的效果的话,普遍流传的方法是屏蔽掉 body 的 touchstart 或 touchmove 事件,但也会让所有滚动不可用,只适用部分页面。解决的方法很简单:
document.addEventListener('touchmove', function(e) { e.preventDefault();});
这样就可以禁止网页的滚动。但是当遇到网页内容超过窗口的100%的时候,禁止滚动就会导致用户没法滚动屏幕看到窗口以外的内容。因此这个办法不可行啦!
如果遇到了需要部分滚动的页面,在网上找到了以下办法:
$(function(){ if (!HTMLElement.currentStyle) { function _getStyle(prop) { var _s = window.getComputedStyle(this, null) return prop ? _s[prop] : _s; } HTMLElement.prototype.currentStyle = _getStyle; HTMLElement.prototype.getStyle = _getStyle; }// 阻止微信下拉出黑底插件 function PreventScroll() { // // 非微信浏览器直接跳出 -- 后来发现好些浏览器都有这个坑,所以去掉 // var ua = navigator.userAgent.toLowerCase(); // if (!ua.match(/MicroMessenger/i)) return; var elem = arguments || []; // 传入绑定的元素 var $elem = []; // 存储所有需要监听的元素 // 获取需要监听的元素 for (var i=0,len=elem.length; i<len; i++) { var $e = document.querySelectorAll(elem[i]); if (!$e) {console.error('您输入的元素不对,请检查'); return;} for(var j=0; j<$e.length; j++) { if ($e[j].currentStyle('overflow').match(/auto|scroll/i)) { $elem.push($e[j]); } } } window.addEventListener('touchstart', function(e){ window.scroll_start = e.touches[0].clientY; }); window.addEventListener('touchmove', prevent); function prevent(e) { var status = '11'; // 1容许 0禁止,十位表示向上滑动,个位表示向下滑动 var startY = window.scroll_start; var currentY = e.touches[0].clientY; var direction = currentY - startY > 0 ? '10' : '01'; // 当前的滚动方向,10 表示向上滑动 $elem.forEach(function(ele){ var scrollTop = ele.scrollTop, offsetHeight = ele.offsetHeight, scrollHeight = ele.scrollHeight; if (scrollTop === 0) { // 到顶,禁止向下滑动,或高度不够,禁止滑动 status = offsetHeight >= scrollHeight ? '00' : '01'; } else if (scrollTop + offsetHeight >= scrollHeight) { // 到底,则禁止向上滑动 status = '10'; } }); // output.innerHTML = status + ' ' + ++count; // 如果有滑动障碍,如到顶到底等 if (status != '11') { if (!(parseInt(status, 2) & parseInt(direction, 2))) { e.preventDefault(); return; } } } } PreventScroll('body');});
调用PreventScroll();函数即可。但是此方法在安卓上可行,在ios上如果手一直拖动网页不放开,滚动条不消失的话,黑底还是会出现。。不知道大家有什么更完善的方法呢?
阅读全文
0 0
- 屏蔽微信下拉出现黑底现象
- Android ListView下拉刷新出现卡顿现象,解决方案
- 微信屏蔽分享域名
- 微信屏蔽分享功能
- 微信开发实现一键拨号出现屏蔽问题的解决方案
- HBuilder 如何模仿微信:标题栏是黑底白字,底部选项卡也是
- 微信域名屏蔽检测工具微信域名屏蔽检测api防止微信屏蔽分享域名微信屏蔽域名检测微信分享域名防屏蔽
- 微信下拉加载
- 禁止微信下拉
- wireshark抓包出现许多黑底红字
- 微信下拉出现黑框IP地址信息修改办法
- 微信屏蔽右上角分享功能
- 如何看待微信屏蔽竞争对手产品?
- 微信分享屏蔽跳转appstore解决方法
- 微信分享屏蔽跳转appstore解决方法
- 微信右上角菜单屏蔽代码
- iOS逆向 微信屏蔽群消息
- 微信自定义分享与屏蔽
- 深入浅出:如何从0开始学习大数据挖掘分析?
- 新兴生态系统:数据科学与机器学习软件分析
- 学习链接
- SpringBoot中使用Spring Data Jpa 实现简单的动态查询的两种方法
- elacsearch修改mapping重建索引
- 屏蔽微信下拉出现黑底现象
- Java开发中的23种设计模式详解,深入浅出的文章
- 5.3 实际 Web 服务器工作流程
- C#中DataGridView控件使用大全
- Linux安装软件
- python 学习与复习 1
- 关于避免按钮短时间内频繁点击或过快点击的处理方法
- Android 7.0 行为变更 通过FileProvider在应用间共享文件吧
- js缓存