成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

總結幾個移動端H5軟鍵盤的大坑

開發 前端
Element.scrollIntoViewIfNeeded()方法也是用來將不在瀏覽器窗口的可見區域內的元素滾動到瀏覽器窗口的可見區域。但如果該元素已經在瀏覽器窗口的可見區域內,則不會發生滾動。

1. 部分機型軟鍵盤彈起擋住原來的視圖

解決方法:可以通過監聽移動端軟鍵盤彈起。

Element.scrollIntoView() 方法讓當前的元素滾動到瀏覽器窗口的可視區域內。參數如下:

  • true,表示元素的頂部與當前區域的可見部分的頂部對齊
  • false,表示元素的底部與當前區域的可見部分的尾部對齊

[[319677]]

Element.scrollIntoViewIfNeeded()方法也是用來將不在瀏覽器窗口的可見區域內的元素滾動到瀏覽器窗口的可見區域。但如果該元素已經在瀏覽器窗口的可見區域內,則不會發生滾動。此方法是標準的Element.scrollIntoView()方法的專有變體。

  1. window.addEventListener('resize', function() { 
  2.   if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA') { 
  3.     window.setTimeout(function() { 
  4.       if ('scrollIntoView' in document.activeElement) { 
  5.         document.activeElement.scrollIntoView(false) 
  6.       } else { 
  7.         document.activeElement.scrollIntoViewIfNeeded(false) 
  8.       } 
  9.     }, 0) 
  10.   } 
  11. }) 

2. ios 鍵盤收起時頁面沒有回落,底部會留白

部分蘋果手機填寫表單的時候的,輸入內容后關閉軟鍵盤,底部會留一塊空白。這種情況可以通過監聽鍵盤回落時間滾動到原來的位置。

  1. window.addEventListener('focusout', function() { 
  2.   window.scrollTo(0, 0) 
  3. }) 
  4.  
  5. //input輸入框彈起軟鍵盤的解決方案。 
  6. var bfscrolltop = document.body.scrollTop 
  7. $('input') 
  8.   .focus(function() { 
  9.     documentdocument.body.scrollTop = document.body.scrollHeight 
  10.     //console.log(document.body.scrollTop); 
  11.   }) 
  12.   .blur(function() { 
  13.     document.body.scrollTop = bfscrolltop 
  14.     //console.log(document.body.scrollTop); 
  15.   }) 

3. onkeyUp 和 onKeydown 兼容性問題

部分 ios 機型 中 input 鍵盤事件 keyup、keydown、等支持不是很好, 用 input 監聽鍵盤 keyup 事件,在安卓手機瀏覽器中沒有問題,但是在 ios 手機瀏覽器中用輸入法輸入之后,并未立刻相應 keyup 事件:

  • onkeypress 用戶按下并放開任何字母數字鍵時發生。系統按鈕(箭頭鍵和功能鍵)無法得到識別。
  • onkeyup 用戶放開任何先前按下的鍵盤鍵時發生。
  • onkeydown 用戶按下任何鍵盤鍵(包括系統按鈕,如箭頭鍵和功能鍵)時發生。

4. ios12 輸入框難以點擊獲取焦點,彈不出軟鍵盤

定位找到問題是 fastclick.js 對 ios12 的兼容性,可在 fastclick.js 源碼或者 main.js 做以下修改:

  1. FastClick.prototype.focus = function(targetElement) { 
  2.   var length 
  3.   if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { 
  4.     length = targetElement.value.length 
  5.     targetElement.setSelectionRange(length, length) 
  6.     targetElement.focus() 
  7.   } else { 
  8.     targetElement.focus() 
  9.   } 

5. fastclick 導致下拉框焦點沖突

移動端使用 fastclick 之后,在 ios 環境下,有幾個連續的下拉框 第一個 select 框突然填充了第二個下拉框的內容。

根本原因是 Fastclick 導致 ios 下多個 select ,點擊某一個,焦點不停變換的 bug。修改源碼,在 onTouchStart 事件內判斷設備是否為 ios,再判斷當前 nodeName 是否為 select,如果是 return false 去阻止 fastClick 執行其他事件。

  1. //line 391行 
  2. FastClick.prototype.onTouchStart = function(event) { 
  3.   //在其方法中添加判斷 符合ios select的時候 不返回事件 
  4.   if (deviceIsIOS && this.targetElement == 'select') this.targetElement = null 
  5.   event.preventDefault() 
  6. //line521 或者講源碼中 有關touchEnd判斷非ios或者非select的事件注釋, 
  7. if (!deviceIsIOS || targetTagName !== 'select') { 
  8.   this.targetElement = null 
  9.   event.preventDefault() 

6. ios 下 fixed 失效的原因

軟鍵盤喚起后,頁面的 fixed 元素將失效,變成了 absolute,所以當頁面超過一屏且滾動時,失效的 fixed 元素就會跟隨滾動了。不僅限于 type=text 的輸入框,凡是軟鍵盤(比如時間日期選擇、select 選擇等等)被喚起,都會遇到同樣地問題。

解決方法: 不讓頁面滾動,而是讓主體部分自己滾動,主體部分高度設為 100%,overflow:scroll

  1. <body> 
  2.   <div class='warper'> 
  3.     <div class='main'></div> 
  4.   <div> 
  5.   <div class="fix-bottom"></div> 
  6. </body>
  1. .warper { 
  2.   position: absolute; 
  3.   width: 100%; 
  4.   left: 0; 
  5.   right: 0; 
  6.   top: 0; 
  7.   bottom: 0; 
  8.   overflow-y: scroll; 
  9.   -webkit-overflow-scrolling: touch; /* 解決ios滑動不流暢問題 */ 
  10. .fix-bottom { 
  11.   position: fixed; 
  12.   bottom: 0; 
  13.   width: 100%; 

7. ios 鍵盤換行變為搜索

  • input type="search"
  • input 外面套 form,必須要有 action,action="javascript:return true"
  • 表單提交阻止默認提交事件
  1. <form action="javascript:return true" @submit.prevent="formSubmit"> 
  2.   <input type="search" placeholder="請輸入訴求名稱" id="search" /> 
  3. </form> 

 

責任編輯:趙寧寧 來源: 前端先鋒隊
相關推薦

2019-04-25 10:20:22

H5軟鍵盤前端

2022-10-26 09:01:55

H5移動端調試

2021-06-23 06:30:14

H5 移動端前端開發

2009-08-21 13:25:49

C#打開軟鍵盤

2021-08-07 15:31:45

Windows 10Windows微軟

2015-12-03 15:27:46

2024-03-06 09:16:57

PAD設備kikaInput鴻蒙

2015-12-03 10:47:49

2015-12-16 12:40:32

H5緩存機制移動

2024-04-11 10:02:06

iOS鍵盤Android

2024-05-06 08:28:09

Android窗口鍵盤

2017-12-05 15:26:19

2017-12-05 13:12:35

Android軟鍵盤參數

2015-07-15 12:30:37

移動端H5高清多屏

2015-07-15 14:38:54

H5移動適配

2021-07-13 09:49:08

鴻蒙HarmonyOS應用

2013-06-27 17:26:01

AndroidEditText

2017-08-16 10:57:25

H5HTML開發

2021-04-27 07:52:19

C++promisefuture

2017-07-03 17:20:55

Android軟鍵盤控制開發問題
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜免费观看网站 | 一级黄色片在线免费观看 | av日韩精品 | 久久久精品网站 | 亚洲精品一区中文字幕乱码 | 国产一区二区 | 国产真实乱对白精彩久久小说 | 国产视频精品在线 | 午夜免费看视频 | 中文字幕视频一区二区 | 91精品久久久久久久久 | 成人免费黄视频 | 色综合国产 | 精品国产乱码久久久久久果冻传媒 | 亚洲精品乱码久久久久v最新版 | 91国产在线播放 | 日韩高清一区 | 日本在线免费视频 | 网站黄色在线免费观看 | 国产精品一区二区久久 | 免费欧美视频 | 国产一区二区三区 | 午夜视频在线免费观看 | 依人成人| 日韩av一区二区在线观看 | 男女视频在线免费观看 | 男人天堂色 | 欧美日韩最新 | 久久亚洲国产 | 免费看淫片 | 久久国际精品 | 久草网站| 在线免费中文字幕 | 久久影音先锋 | 日韩国产精品一区二区三区 | 性一交一乱一伦视频免费观看 | 精品国产乱码久久久久久蜜柚 | 欧美a级成人淫片免费看 | 欧美精品中文字幕久久二区 | 午夜影院操 | 日日干综合|