1. 程式人生 > >h5開發:IOS開發與H5混合開發常見的坑

h5開發:IOS開發與H5混合開發常見的坑

最近做 iOS H5 專案,需要針對 iOS 的 webView 做適配,發現幾個非常噁心的 bug。

因為現在據統計 iOS7 的佔比超過80%,所以適配主要針對 iOS7,但是 iOS7 不同版本缺有不同的 bug,真是讓人蛋疼。

iOS 7.0 input 元素聚焦問題

bug 演示

ios7.0bug.gif

bug 分析

點選螢幕下方的input元素,且該元素在鍵盤彈起的區域內;當鍵盤彈起時,input 元素未獲得焦點,且 input 元素不在可視範圍內,沒有進行自動定位調整。

但 input 元素不在鍵盤彈起的區域內,當鍵盤彈起時,一切正常。

該 bug,iOS < 7.1 有問題,>=7.1 無問題。

解決辦法

辦法有點猥瑣,要通過 js,去強制 input 元素獲得焦點。

element.on("tap", function(e){
  element.focus();
});

iOS 7.1 input 元素失焦問題

bug 演示

ios7.1bug.gif

bug 分析

點選 input 元素(input 元素在不在浮層中不重要),彈出鍵盤時,當點選 Html 中的元素,致使 input 元素失去焦點,鍵盤收起,position:fixed 元素(演示中的浮層為 position:fixed)會導致介面錯亂。

但若點選鍵盤右上角的 完成 按鈕,鍵盤收起,一切正常。

也就是說,使用 iOS 系統的方式使得鍵盤收起,沒有問題;使用其他方式,使得鍵盤收起,position:fixed 元素會導致介面錯亂。

該 bug,iOS >= 7.1 有問題,< 7.1 無問題。當好和上一個 bug 的情況相反。

解決辦法

避免使用 position:fixed,換成 position:absolute 替代。