最近再作項目的時候(移動端),遇到了兩個小問題,一個是ios端鍵盤不回彈的問題(微信瀏覽器),另外一個是ios輸入光標位置問題。首先看第二個問題:javascript
就是點擊一個按鈕,要把輸入框裏面原來的內容加上一些固定的內容,而後一塊兒輸出到輸入框。原本這個需求是很簡單的,可是遇到一個問題,就是點擊玩這個按鈕以後,ios端的光標在輸入框的最前面,體驗不是很友好。請看下面的代碼,這個就是我最開始寫的css
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> 7 </head> 8 <body> 9 <p>測試ios端光標在表情以前的問題</p> 10 <textarea name="" rows="" cols="">123</textarea> 11 <button>獲取焦點</button> 12 </body> 13 <script type="text/javascript"> 14 var btn = document.getElementsByTagName("button")[0]; 15 var txt = document.getElementsByTagName("textarea")[0]; 16 btn.onclick = function(){ 17 18 txt.value = txt.value + "456"; 19 txt.focus(); 20 } 21 </script> 22 </html>
其中18行是獲取原來裏面的值,而後拼接上最新的值,而後讓輸入框獲取焦點,這個時候ios 的光標就在輸入框的最前面。你們能夠找個ios測試一下,我截圖沒有截到光標;安卓是沒有問題的html
這樣的體驗顯然是不能達到需求的,因此去網上找了一下,發現只要把18行和19行的代碼互換位置,這樣就能夠了。這個我也是否是很明白,這個時候Android和ios都是能夠的,真的很神奇,並且解釋不通。java
另外一個問題是有的ios版本,當彈出輸入法輸入完成以後,鍵盤迴去了,可是頁面沒有返回。這個時候就須要在輸入框中失去焦點的狀況下,調用一個函數,我把函數放在下面:ios
1 /*ios鍵盤迴彈**********************************************/ 2 function kickBack() { 3 //alert("是去焦點了"); 4 setTimeout(() => { 5 window.scrollTo(0, document.body.scrollTop + 1); 6 document.body.scrollTop >= 1 && window.scrollTo(0, document.body.scrollTop - 1); 7 }, 10) 8 } 9 /*ios鍵盤迴彈end**************************************/
最後再說一下關於ios的css兼容問題,就是我在設置背景的時候,我是用的rgb來設置顏色,可是由於編輯器的緣由,他給我多了一個a,成了rgba(),最後一個是背景透明。可是在ios端是不能夠的,他執行到這一句話的時候,是會報錯的。此次記錄下來,給本身提個醒。瀏覽器