1. iOS无法识别的时间格式 ​​2020-03-15 9:30:30​​​ ,在时间中不要使用 ​​-​​​ 短横线,当传入​​new Date('2020-03-15 9:30:30')​​​ 会发生报错,可以使用 ​​/​​ 斜杠分隔,而安卓则都可以识别。
  2. iOS微信分享问题,当你开发单页引用的时候,网页需要运行在微信浏览器,使用了路由库比如 ​​vue-router​​​,首页可以正常分享,但是跳转到其他页面的则无法分享,必须使用 ​​window.href ='/about'​​​ href 跳转页面,不要使用路由方法跳转 ​​$route.push('/about')​​。
  3. 手机1像素边框显示粗细的问题
  4. iOS无法滚动的问题,比如弹窗,弹窗中使用了定位,弹窗里面有需要滚动的地方,有不需要滚动的地方,当手指在滚动的地方滑动的时候,突然触摸到了不需要滚动的地方,滚动的地方再滑动,会出现无法滑动的情况,需要等几秒才能再滑动,看下面图

黑色框是可以滚动,红色框是不可以滚动的,2号箭头表示手指只在黑框内触摸,如果你的手指一直在这个范围内触摸是可以正常滚动的,但是如果是1号箭头,手指超出了黑色范围,既在黑色框又在红色框,那么这个时候是无法滚动,当你再次使用2号箭头只在黑色框触摸时,这个时候无法滚动了,会卡顿几秒才会恢复。这是因为iOS滚动会触发webview的滚动。

要解决这个问题就要改变CSS的布局样式,让 body 设置​​overflow: hidden;​​​,然后让页面​​overflow-y: auto;​​,不要把滚动设置在body上就不会出现这个问题,这个时候就不会触发webview的滚动了

html,body {
height: 100%;
overflow: hidden;
}
#app {
height: 100%;
overflow-y: auto;
overflow-x: hidden;
}
  1. 安卓的键盘弹起会遮挡input输入,建议设计师设计的表单普遍都在键盘的上方,大概是屏幕的1/2以上位置
  2. 安卓固定定位在最底部的元素,当键盘弹起时,会固定在键盘上方,而iOS键盘弹起时不会固定在键盘上方。
  3. iOS表单手指点击无法无法获取焦点,出现在iPhone6机型上,解决办法就是给表单绑定点击事件,然后点击的时候调取input的focus方法。
  4. 安卓在键盘收取时表单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')
Array.from(el, (item) => item.blur())
}
}, false)
  1. 定位问题,如果使用 ​​navigator.geolocation​​ 原始JS获取地理位置,HTTP是不支持获取定位的,需要升级达到HTTPS
  2. 安卓和iOS都要横屏问题,手机横过来,页面布局混乱,下面的页面在手机横过来的时候图片没有完全展示,没有完全自适应,所以如果要做横屏需要单独自适应。如果不想做支持横屏,那么可以在横屏状态给出提示警告。
  3. iOS键盘弹起之后键盘收取,页面多出了一个空白区域,就是页面滚动的区域没有还原
let isReset = true
document.body.addEventListener('focusin', () => {
isReset = false
})
document.body.addEventListener('focusout', () => {
isReset = true
setTimeout(() => {
if (isReset) {
window.scroll(0, 0)
}
}, 300)
})