H5開發(fā)常見問題

1.active兼容處理 即偽類 :active 失效
2.圓角bug
3.啟動畫面,避免加載時的白屏
4.IOS中input鍵盤事件keyup、keydown、keypress支持不是很好
5.IOS鍵盤字母輸入,默認首字母大寫
6.移動端點擊300ms延遲
7.移動端點透問題
8.關(guān)于 iOS 系統(tǒng)中,中文輸入法輸入英文時
9.移動端 HTML5 audio autoplay 失效問題

1、active兼容處理 即偽類 :active 失效

方法一:body添加ontouchstart<body ontouchstart="">
方法二:js給 document 綁定 touchstart 或 touchend 事件

<style>
a {
   color: #000;
}
a:active {
   color: #fff;
}
</style>
<a herf=foo >bar</a>
<script>
  document.addEventListener('touchstart',function(){},false);
</script>
2、圓角bug

某些Android手機圓角失效
background-clip: padding-box;

3、啟動畫面

<link rel="apple-touch-startup-image" href="start.png"/>

iOS下頁面啟動加載時顯示的畫面圖片,避免加載時的白屏??梢酝ㄟ^madia來指定不同的大?。?/p>

<!--iPhone-->
<link href="apple-touch-startup-image-320x460.png" media="(device-width: 320px)" rel="apple-touch-startup-image" />
<!-- iPhone Retina -->
<link href="apple-touch-startup-image-640x920.png" media="(device-width: 320px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
<!-- iPhone 5 -->
<link rel="apple-touch-startup-image" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" href="apple-touch-startup-image-640x1096.png">
<!-- iPad portrait -->
<link href="apple-touch-startup-image-768x1004.png" media="(device-width: 768px) and (orientation: portrait)" rel="apple-touch-startup-image" />
<!-- iPad landscape -->
<link href="apple-touch-startup-image-748x1024.png" media="(device-width: 768px) and (orientation: landscape)" rel="apple-touch-startup-image" />
<!-- iPad Retina portrait -->
<link href="apple-touch-startup-image-1536x2008.png" media="(device-width: 1536px) and (orientation: portrait) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
<!-- iPad Retina landscape -->
<link href="apple-touch-startup-image-1496x2048.png" media="(device-width: 1536px) and (orientation: landscape) and (-webkit-device-pixel-ratio: 2)"rel="apple-touch-startup-image" />
4、 IOS中input鍵盤事件keyup、keydown、keypress支持不是很好

問題是這樣的,用input search做模糊搜索的時候,在鍵盤里面輸入關(guān)鍵詞,會通過ajax后臺查詢,然后返回數(shù)據(jù),然后再對返回的數(shù)據(jù)進行關(guān)鍵詞標(biāo)紅。
用input監(jiān)聽鍵盤keyup事件,在安卓手機瀏覽器中是可以的,但是在ios手機瀏覽器中變紅很慢,用輸入法輸入之后,并未立刻相應(yīng)keyup事件,只有在通過刪除之后才能相應(yīng)!
解決辦法:
可以用html5的oninput事件去代替keyup

<script type="text/javascript">
    document.getElementById('testInput').addEventListener('input', function(e){
        var value = e.target.value;
    });
</script>

然后就達到類似keyup的效果!

5、IOS鍵盤字母輸入,默認首字母大寫

解決方案,設(shè)置如下屬性 <input type="text" autocapitalize="off" />

6、移動端點擊300ms延遲

300ms尚可接受,不過因為300ms產(chǎn)生的問題,我們必須要解決。300ms導(dǎo)致用戶體驗并不是很好,解決這個問題,我們一般在移動端用tap事件來取代click事件。
推薦兩個js,一個是fastclick,一個是tap.js
關(guān)于300ms延遲,具體請看。

7、移動端點透問題

案例如下:

<div id="haorooms">點頭事件測試</div>
<a href="#">www.xxx.com</a>

div是絕對定位的蒙層,并且z-index高于a。而a標(biāo)簽是頁面中的一個鏈接,我們給div綁定tap事件:

$('#haorooms').on('tap',function(){
  $('#haorooms').hide();
});

我們點擊蒙層時 div正常消失,但是當(dāng)我們在a標(biāo)簽上點擊蒙層時,發(fā)現(xiàn)a鏈接被觸發(fā),這就是所謂的點透事件。
原因:touchstart 早于 touchend 早于click。 亦即click的觸發(fā)是有延遲的,這個時間大概在300ms左右,也就是說我們tap觸發(fā)之后蒙層隱藏, 此時 click還沒有觸發(fā),300ms之后由于蒙層隱藏,我們的click觸發(fā)到了下面的a鏈接上。
解決:
(1)盡量都使用touch事件來替換click事件。例如用touchend事件(推薦)。
(2)用 fastclick
(3)用preventDefault阻止a標(biāo)簽的click
(4)延遲一定的時間(300ms+)來處理事件(不推薦)

(5)以上一般都能解決,實在不行就換成click事件。

下面介紹一下touchend事件,如下:

$("#haorooms").on("touchend", function (event) {
  event.preventDefault();
});
8、關(guān)于 iOS 系統(tǒng)中,中文輸入法輸入英文時

字母之間可能會出現(xiàn)一個六分之一空格可以通過正則去掉
this.value = this.value.replace(/\u2006/g, '');

9、移動端 HTML5 audio autoplay 失效問題

這個不是 BUG,由于自動播放網(wǎng)頁中的音頻或視頻,會給用戶帶來一些困擾或者不必要的流量消耗,所以蘋果系統(tǒng)和安卓系統(tǒng)通常都會禁止自動播放和使用 JS 的觸發(fā)播放,必須由用戶來觸發(fā)才可以播放。
解決方法思路:先通過用戶 touchstart 觸碰,觸發(fā)播放并暫停(音頻開始加載,后面用 JS 再操作就沒問題了)。
解決代碼:

document.addEventListener('touchstart', function () {
  document.getElementsByTagName('audio')[0].play();
  document.getElementsByTagName('audio')[0].pause();
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容