博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
h5开发坑点小总结
阅读量:7068 次
发布时间:2019-06-28

本文共 3146 字,大约阅读时间需要 10 分钟。

平时在开发h5项目中,遇到一些h5的小坑,在此分享(2.17 update again)。

博客维护在git上,欢迎给一个star!!! https://github.com/mtonhuang/blog

1.微信端禁止页面分享

//隐藏微信分享菜单,当点击右上角时不会出现分享的选项    document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {        WeixinJSBridge.call('hideOptionMenu');    });复制代码

2.禁止页面上下拉动

//禁止页面上拉下拉    document.body.addEventListener('touchmove', function (e) {        e.preventDefault(); //阻止默认的处理方式    }, {passive: false}); //passive 参数不能省略,用来兼容ios和android复制代码

3.禁止微信浏览器图片长按出现菜单

网上挺多代码无效,下面亲测有效(兼容ios与android)

img{    pointer-events:none;    -webkit-pointer-events:none;    -ms-pointer-events:none;    -moz-pointer-events:none;}复制代码

4.禁止微信浏览器长按“显示在浏览器打开”

document.oncontextmenu=function(e){       //或者return false;      e.preventDefault();    };复制代码

5.禁止复制文本

-webkit-user-select: none;user-select: none;-webkit-touch-callout: none;复制代码

6.禁止浏览器调整字体大小

ios解决方案:

body {    -webkit-text-size-adjust: 100% !important;    text-size-adjust: 100% !important;    -moz-text-size-adjust: 100% !important;}复制代码

android解决方案(用自执行函数强制禁止用户修改字体大小):

(function () {    if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {        handleFontSize();    } else {        if (document.addEventListener) {            document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);        } else if (document.attachEvent) {            document.attachEvent("WeixinJSBridgeReady", handleFontSize);            document.attachEvent("onWeixinJSBridgeReady", handleFontSize);        }    }    function handleFontSize() {        // 设置字体为默认大小并且重写事件        WeixinJSBridge.invoke('setFontSizeCallback', {
'fontSize': 0}); WeixinJSBridge.on('menu:setfont', function () { WeixinJSBridge.invoke('setFontSizeCallback', {
'fontSize': 0}); }); }})();复制代码

7.移动端伪类:active无效的解决方法

做项目做到一半,测试按钮点击态的时候,在PC和安卓机测试上都没有问题,但到ios移动端就出现无效的情况,google了一下。

在mozilla社区找到了答案:

[1] By default, Safari Mobile does not use the :active state unless there is a touchstart event handler on the relevant element or on the .

需要在按钮元素或者body/html上绑定一个touchstart事件才能激活:active状态。

document.body.addEventListener('touchstart', function (){}); //...空函数即可复制代码

8.禁止页面上下拉,但不影响页面内部scroll

2.20号 在某个微信群里关注到第2点的代码会影响页面内部的scroll,用之前的项目测试了一下,确实如此。

但如果去掉第2点的代码,虽然内部的scroll可以正常使用了,但橡皮筋的效果出现了。

这怎么能忍呢?于是遍寻良药:

var overscroll = function(el) {//el需要滑动的元素        el.addEventListener("touchstart", function() {          var top = el.scrollTop,            totalScroll = el.scrollHeight,            currentScroll = top + el.offsetHeight;//被滑动到最上方和最下方的时候          if (top === 0) {            el.scrollTop = 1; //0~1之间的小数会被当成0          } else if (currentScroll === totalScroll) {            el.scrollTop = top - 1;          }        });        el.addEventListener("touchmove", function(evt) {          if (el.offsetHeight < el.scrollHeight) evt._isScroller = true;        });      };      overscroll(document.querySelector(".aaaa")); //允许滚动的区域      document.body.addEventListener("touchmove",function(evt) {          if (!evt._isScroller) {            evt.preventDefault(); //阻止默认事件(上下滑动)          }        },        { passive: false } //这行依旧不可以省略,用于兼容ios      );复制代码

转载地址:http://qwoll.baihongyu.com/

你可能感兴趣的文章
系统出现非法操作错误解决对策
查看>>
xml文件对比或xml大字符串对比方法(蛮精简的)
查看>>
Weblogic产品模式切换与JVM切换
查看>>
论“性能需求分析”系列专题(一)之 性能需求剖析
查看>>
费波拉奇 递归
查看>>
PC 加入AD域的要求
查看>>
Enterprise Library 2.0 Hands On Lab 翻译(1):数据访问程序块(一)
查看>>
微软私有云分享(R2)17SCAC被精简的功能
查看>>
安装maildrop-2.0.4
查看>>
eCryptfs文件系统测试
查看>>
Spring Security身份认证之HelloSpringSecurity(附源码)
查看>>
WPF实例秀——不用属性也Binding
查看>>
打造Ubuntu下的SLAMP
查看>>
数据库构建的一点总结
查看>>
Kinect for windows中的抓握(Grip)和释放(GripRelease)
查看>>
10月第5周安全回顾 IE7又现新漏洞 僵尸网络感染率上升
查看>>
演示:在思科路由器上IPv6本地链路地址的配置
查看>>
系统初始化SHELL脚本
查看>>
用”伪代码“装饰你的程序
查看>>
Windows 2008R2平台: Exchange 2010安装部署笔记(一)
查看>>