VUE前端界面在iOS中遇到的坑

前段時間,公司用前端做了一個微型圖片生成界面,通過考慮,選擇使用vue多頁面進行編寫,在界面編寫完成之后,本地瀏覽器進行測試,發(fā)現(xiàn)一切都很順利,然后嵌入到APP端進行聯(lián)合測試。前期,界面在Android上運行比較順利,個人以為沒什么問題,但是當(dāng)頁面嵌入到iOS中,問題暴露了出來,主要體現(xiàn)在三點上:

1、界面使用了瀑布流滑動效果,但是在iOS上滑動效果非常的差,會出現(xiàn)卡頓現(xiàn)象;

2、在界面進行點擊的時候,界面響應(yīng)明顯要比Android上要慢很多;

3、界面按鈕點擊之后會產(chǎn)生一個灰色的陰影圖層;

開始,在iOS本身尋找問題,以為是iOS webview使用的問題,但是當(dāng)頁面在微信或者其他應(yīng)用中打開之后,也會出現(xiàn)這種問題,以此排除iOS webview問題,確認問題出現(xiàn)在前端界面上,經(jīng)過排查,發(fā)現(xiàn)是iOS在嵌入前端界面時本身機制的問題,在經(jīng)過修改之后,問題得以解決,附上解決方案:

一、滑動效果卡頓問題解決方案

在需要滑動的位置加上如下css代碼:

-webkit-overflow-scrolling:touch;

以此,界面滑動卡頓問題得以解決,但是,這一行代碼會帶來一個副作用:

1、在滑動界面之中使用的position:fixed 無法固定下來,會隨著界面進行一起滾動

解決方法:將使用的position:fixed(頭部導(dǎo)航)寫在滑動部位外部,在使用絕對定位進行布局,以此解決問題

2、vue中使用v-if導(dǎo)致的界面初始化之后無法滑動

解決方法:將v-if改成v-show進行展示,解決界面進入之后第一次不能滑動的問題


二、界面點反應(yīng)慢、延時問題解決方案

經(jīng)過排查,導(dǎo)致問題的原因是iOS嵌套界面之后,界面點擊效果會自動產(chǎn)生一個300毫秒的延時,解決方案:

vue 引入 fastclick(npm install fastclick -S)

然后再進行引入 FastClick.attach(document.body);

問題解決

注:在引入fastclick之后,會有一個副作用:input輸入框需要連續(xù)點擊兩次或者長按才能獲取焦點,解決方法詳見個人文章:

vue引入fastClick導(dǎo)致的輸入框點擊無響應(yīng)問題


三、按鈕點擊之后會產(chǎn)生灰色圖層解決方案

目前未發(fā)現(xiàn)前端有效的解決方案,本次是讓iOS進行單獨的處理


四、關(guān)于new Date()轉(zhuǎn)換時間在iOS中不生效問題

前端界面使用new Date('2018-12-20 23:59:59').getTime(),放到iOS中后發(fā)現(xiàn),沒有正常轉(zhuǎn)換成時間戳,經(jīng)過查找相關(guān)資料發(fā)現(xiàn),

iOS不支持該種時間格式的轉(zhuǎn)換,將代碼寫成:

new Date('2018-12-20T23:59:59').getTime()

即可獲取到正確的時間戳


五、關(guān)于部分拷貝方法在iOS中不生效問題

前端有時候需要用到拷貝部分內(nèi)容到剪切板中,但是在使用時發(fā)現(xiàn),部分網(wǎng)上提供的拷貝方法在Android中正常使用,但是在iOS中無法進行拷貝,經(jīng)過試驗發(fā)現(xiàn)一種通用的拷貝方法,如下:

/**

* 將內(nèi)容拷貝到剪切板中

*

* @param copyText? ? ? ? ? ? ? ? ? 需要拷貝的內(nèi)容

*/

function copyContent(message) { // text: 要復(fù)制的內(nèi)容, callback: 回調(diào)

? var input = document.createElement("input");

? input.value = message;

? document.body.appendChild(input);

? input.select();

? input.setSelectionRange(0, input.value.length);

? document.execCommand('Copy');

? document.body.removeChild(input);

}

該方法親測在Android以及iOS中都有效


六、關(guān)于input輸入框在iOS中獲取到焦點之后界面上移無法回落問題

在聯(lián)合移動端開發(fā)過程中,會遇到input輸入框獲取到焦點之后,軟鍵盤自動頂起界面,但是失去焦點之后無法回落的問題,解決方法如下,添加如下代碼:

const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0;

window.scrollTo(0, Math.max(scrollHeight - 1, 0));



七、關(guān)于移動端定時器運行過程中,界面點擊/滑動會造成定時器卡頓的現(xiàn)象

原因:界面點擊時,iOS會有300毫秒延時阻塞,同時界面滑動時,也會造成定時器方法的阻塞

解決方法:

1.使用fastClick結(jié)局300毫秒延時問題,參考文章? ?第二點

2.定時器運轉(zhuǎn)期間,使用css或者js禁止界面滾動

最后編輯于
?著作權(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)容

  • 她,在幾十公里以外的他處,她通過網(wǎng)路向我要錢、向我傾訴情感。語言變化著,攜帶著情感,我感到害怕、恐懼繼而產(chǎn)生憤怒,...
    娥少的春天閱讀 241評論 0 0
  • 有文字從地平線升起 因為阿波羅的召喚 初冬溫好 海水里墨香飄搖 眾鳥一起飛來 東方有詩和酒 打開窗簾放飛新鮮的夢 ...
    客塵人閱讀 302評論 0 0
  • 經(jīng)歷的每一個地方,經(jīng)歷的每一個人,都要付出時間與感情,等有一天回頭的時候,你還能想起點什么。這是士兵突擊里面袁朗跟...
    千里行軍閱讀 250評論 0 1
  • 2016年的5月份,我當(dāng)時準(zhǔn)備在天津買房,畢竟自己住著單位的房子不是長久之計,我由于沒有任何的買房的基礎(chǔ)和經(jīng)驗,就...
    職場精英666閱讀 360評論 0 2

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