欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

移动端开发常见问题

程序员文章站 2022-05-30 09:25:26
...

移动端开发常见问题

1、iOS无法识别的时间格式 2020-03-15 9:30:30 ,在时间中不要使用 - 短横线,当传入new Date('2020-03-15 9:30:30') 会发生报错,可以使用 / 斜杠分隔,而安卓则都可以识别。

2、iOS微信分享问题,当你开发单页应用时,网页需要运行在微信浏览器,使用了路由库比如 vue-router,首页可以正常分享,但是跳转到其他页面的则无法分享,需要把 $route.push('/about') 改成 window.href ='/about',也就是路由跳转改成href跳转。

3、手机1像素边框显示粗细的问题。这是手机设备像素比的问题。可以参考我这篇文章《实现手机1像素边框

4、iOS无法滚动的问题,比如弹窗,弹窗中使用了定位,弹窗里面有部分内容需要滚动,但是当触摸到滚动以外的地方再回来滚动时,这时滚动区域无法滚动,需要等待几秒手机才恢复滚动。看下面图:

黑色边框区域表示可以滚动,红色边框区域表示不可以滚动,2号箭头表示手指完全在黑色边框里面触摸滚动,这是正常情况,1号箭头表示手指既触摸了红色边框又触摸了黑色边框,然后又回来再黑色边框里面触摸滚动,这时无法滚动了,需要等待几秒才能恢复滚动。

移动端开发常见问题

解决办法需要更改页面布局,让 body 始终不发生滚动,让里面的元素去设置滚动。

html,body {
  height: 100%;
  overflow: hidden;
}
#app {
  height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
}

5、 安卓的键盘弹起会遮挡input输入,建议设计师设计的表单普遍都在键盘的上方,大概是屏幕的1/2以上位置。

移动端开发常见问题

7、iOS表单手指点击无法获取焦点,出现在 iPhone6 机型上,解决办法就是给表单绑定点击事件,然后点击的时候调取 input 的 focus 方法。

8、安卓在键盘收取时表单 input 无法失去焦点,需要单独判断在键盘收起的时候调用 input 的 blur 方法。

// 解决输入框无法失去焦点
const originHeight = document.documentElement.clientHeight || document.body.clientHeight
window.addEventListener('resize', () => {
  const resizeHeight = document.documentElement.clientHeight || document.body.clientHeight
  if (resizeHeight < originHeight) {
    // console.log('键盘弹起')
  } else {
    // console.log('键盘收起')
    const el = document.getElementsByClassName('add-input') // 需要给失去焦点的表单加上add-input类名
    Array.from(el, (item) => item.blur())
  }
}, false)

9、iOS 键盘弹起之后键盘收取,页面多出了一个空白区域,就是页面滚动的区域没有还原。

移动端开发常见问题

通常出现这个问题的情况键盘弹起使页面整体高度上移了,我们可以通过JS重新滚动回去。

let isReset = true
document.body.addEventListener('focusin', () => {
  isReset = false
})
document.body.addEventListener('focusout', () => {
  isReset = true
  setTimeout(() => {
    if (isReset) {
      window.scroll(0, 0)
    }
  }, 300)
})

10、 安卓和iOS都有横屏问题,手机横过来,页面布局混乱,下面的页面在手机横过来的时候图片没有完全展示,没有完全自适应,所以如果要做横屏需要单独自适应。

移动端开发常见问题

11、定位问题,如果使用 navigator.geolocation 原生JS获取地理位置,HTTP是不支持获取定位的,需要升级达到HTTPS。

12、安卓固定定位在底部的元素会随键盘弹起固定在键盘的上方。

移动端开发常见问题

修改方法就是键盘弹起让按钮隐藏,键盘收起让按钮显示,注意安卓要修改无法失去焦点的问题。

移动端开发常见问题