移动端H5页面常见bug解决方法

1.上下拉动滚动条时卡顿、慢  

  解决办法:添加样式

body {
 -webkit-overflow-scrolling: touch;
 overflow-scrolling: touch;
}

2.长时间按住页面出现闪退 

  解决办法:添加办法

element {
 -webkit-touch-callout: none;
}

3.顶部状态栏背景色  

<meta name="apple-mobile-web-app-status-bar-style" content="black" />

说明:

  • 除非你先使用apple-mobile-web-app-capable指定全屏模式,否则这个meta标签不会起任何作用。
  • 如果content设置为default,则状态栏正常显示。如果设置为black,则状态栏会有一个黑色的背景。如果设置为blank-translucent,则状态栏显示为黑色半透明。
  • 如果设置为default或blank,则页面显示在状态栏的下方,即状态栏占据上方部分,页面占据下方部分,二者没有遮挡对方或被遮挡。
  • 如果设置为blank-translucent,则页面会充满屏幕,其中页面顶部会被状态栏遮盖住(会覆盖页面20px高度,而iphone4和itouch4的Retina屏幕为40px)。
  • 默认值是default。

4.移动端 HTML5 audio autoplay 失效问题

  问题:这个不是 BUG,由于自动播放网页中的音频或视频,会给用户带来一些困扰或者不必要的流量消耗,所以苹果系统和安卓系统通常都会禁止自动播放和使用 JS 的触发播放,必须由用户来触发才可以播放

  解决办法:先通过用户 touchstart 触碰,触发播放并暂停(音频开始加载,后面用 JS 再操作就没问题了)

document.addEventListener('touchstart', function () {
     document.getElementsByTagName('audio')[0].play();
     document.getElementsByTagName('audio')[0].pause();
});

5.ios端按钮和输入框自带圆角问题:

  解决办法:添加样式

-webkit-appearance : none ; /* 解决ios上按钮的圆角问题 */
border-radius: 0; /* 解决ios上输入框圆角问题 */

6.vue遮罩层阻止默认滚动事件(适用于遮罩层本身没有滚动事件的,否则本身的滚动事件也会被阻止)

  @touchmove.prevent 

7.页面在ios上能正常上下滑动,而安卓上不行,pc端也不能滑动,但是通过鼠标滚动是可行的,这时候有可能是css文件中加入了touch-action:none导致的,这句代码作用是阻止页面滚动,将它去掉就好了。  

8.ios上双击强制缩放问题:

  解决办法:添加样式

*{touch-action: manipulation}   // 该方法还能移除整个文档的触发延迟,对于IE10,需要使用-ms-touch-action

9.使用translate导致元素内字体模糊:  

  问题:translate中的参数为非整数。常见于translateX(百分比)、translateY(百分比), translate(百分比,百分比)。

  解决办法:translate中参数百分比其实是相对于操作元素本身的宽或高的百分比,所以可以调整所要操作的元素的宽或高,已达到百分比后的值是整数

10.App嵌入h5页面(使用vue)

  问题:App端需要在页面跳转时拦截到跳转路径,使用vue的路由跳转方法时,App端是拦截不到的,因为vue是单页面应用,根本不存在页面的跳转。

  解决办法:使用window.location.href方法跳转(注:如果当前页面使用window.location.href跳转,且路径中带有查询参数,在跳转后的页面中仍然可以使用this.$route.query来获取查询参数)

11.防止手机中网页放大和缩小

  解决办法:设置meta中的viewport

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />

12.format-detection---启动或禁用自动识别页面中的电话号码  

<meta name="format-detection" content="telephone=no">

  说明:默认情况下,设备会自动识别任何可能是电话号码的字符串。设置telephone=no可以禁用这项功能。

13.H5调用安卓或者ios的拨号功能

  解决办法:在a标签的href中添加tel:

<a href="tel:10010">10010</a>

14.禁止复制、选中文本  

  解决办法:添加样式

Element {
 -webkit-user-select: none;
 -moz-user-select: none;
 -khtml-user-select: none;
  user-select: none;
}

15.输入框吊起键盘,低版本安卓机,收回键盘时页面变形

  解决办法:body加上height:100%

-----------------后续补充

posted @ 2020-09-29 17:31  Judicious  阅读(477)  评论(0编辑  收藏  举报