點擊底部input輸入框,彈出的軟鍵盤擋住input(蘋果手機使用第三方輸入法 )

来源:https://www.cnblogs.com/liyanyu520/archive/2018/08/09/9450102.html
-Advertisement-
Play Games

測試移動端頁面的時候,偶然發現點擊底部input輸入框時,彈出的虛擬鍵盤偶爾會擋住input輸入框。 輸入框固定在頁面底部,如圖所示: input固定底部設計圖.png 點擊底部input輸入框喚起軟鍵盤時,軟鍵盤擋住輸入框。如圖所示: 點擊input鍵盤擋住圖.png 測試過多台真機發現安卓的手機 ...


測試移動端頁面的時候,偶然發現點擊底部input輸入框時,彈出的虛擬鍵盤偶爾會擋住input輸入框。

輸入框固定在頁面底部,如圖所示:

  input固定底部設計圖.png

點擊底部input輸入框喚起軟鍵盤時,軟鍵盤擋住輸入框。如圖所示:


  點擊input鍵盤擋住圖.png

測試過多台真機發現安卓的手機都不會出現這個問題,個別的iOS手機有問題。而且同一型號的蘋果有的有問題有的沒有問題。經過多方的歸納、總結驚奇的發現:會出現這個bug的蘋果手機,使用的都是蘋果第三方輸入法,而使用蘋果自帶的輸入法則沒有這個bug。

出現這個bug的時候輸入字元的時候,input輸入框又會滾動上去。沿著這個思路往下想,我想到input獲取焦點失敗、滾動瀏覽器視窗或容器元素的問題。

解決這個問題的思路是,點擊input輸入框的時候,讓其input滾動到當前div的頂部。於是我想到了Element.scrollIntoView() 方法。

DOM規範中並沒有規定各瀏覽器需要實現怎樣的滾動頁面區域,各瀏覽器實現了相應的方法,可以使用不同的方式控制頁面區域的滾動。這些方法作為HTMLElement類型的擴展存在,所以它能在所有元素上使用。

Element.scrollIntoView()語法:
<code>
element.scrollIntoView(); // Equivalent to element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean arguments
element.scrollIntoView(scrollIntoViewOptions); // Object argument
</code>

參數:alignToTop(可選)
<code>
Is a Boolean value:
If true, the top of the element will be aligned to the top of the visible area of the scrollable ancestor. This is the default value.( 如果alignToTop為true,該元素的頂部將對齊的滾動的祖先的可見區域的頂部。這是預設值。)
If false, the bottom of the element will be aligned to the bottom of the visible area of the scrollable ancestor.(如果alignToTop false, 該元素的底部將對齊的滾動的祖先的可見區域的底部。)
</code>

點擊input底部輸入框,軟鍵盤擋住輸入框的解決辦法是,點擊輸入框的時候給input綁定事件,使用 Element.scrollIntoView()方法使元素彈到祖元素可見區域的頂部。代碼如下:
<code>
$("input").on("click", function() {
var target = this;
setTimeOut(function() {
target.scrollIntoView(true);
}, 100);
})
</code>


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 伺服器中資料庫結構 Redis 伺服器將所有資料庫都保存在伺服器狀態 redisServer 結構的 db 數組中,由 redisDb 結構代表一個資料庫 Redis 伺服器預設會創建16個資料庫,預設情況下,Redis客戶端的目標資料庫是0號資料庫。 2. 切換資料庫 SELECT 命令用來 ...
  • Spark官方文檔翻譯,有問題請及時指正,謝謝。 Overview頁 http://spark.apache.org/docs/latest/index.html Spark概述 Apache Spark 是一個快速的,分散式集群計算系統.它提供了高等級的針對 Java, Scala, Python ...
  • 在目前國內市場對大數據人才的需求非常的旺盛,很多人為了轉入大數據高薪崗位,紛紛學習大數據入門課程,參加大數據培訓成為他們學習大數據技術的主要途徑。下麵我們來介紹一下關於大數據培訓課程主要針對零基礎大數據工程師每個階段進行通俗易懂簡易介紹,方面大家更好的瞭解大數據學習課程。課程框架是零基礎大數據工程師 ...
  • --Oracle的操作步驟--一、基本操作--1.創建表空間 2.創建用戶 3.為用戶分配表空間 --4.對用戶進行授權 5.進行基本操作,例如:創建表,創建視圖等等 --每一步具體的操作--1.創建表空間-- create tablespace tablespace_name datafile ' ...
  • 一.概述 前面講了備份的一些理論知識,這篇開始講在簡單恢復模式下的備份與還原。在簡單模式下是不能做日誌備份的,發生災難後,資料庫最後一次備份之後做的數據修改將是全部丟失的,所以在生產環境下,數據又很重要,一般不建議使用這種模式。 例如對一個資料庫有5次完整數據備份,時間是t5, 之後發生災難,就會部 ...
  • 有兩種方法,大同小異吧,感覺命令真是個好東西,哈哈哈哈,輓救了我安了4次才安好的oracle!!! 方法一: 1.如果忘記密碼,找到忘記密碼的是哪個用戶身份,如果用戶被鎖定,可以使用下麵說的方法解除鎖定,沒有鎖定,直接修改密碼就可以 2.首先進入sqlplus:進入的方式有兩種,一種是通過cmd命令 ...
  • 前言 在Android中,zygote是整個系統創建新進程的核心進程。zygote進程在內部會先啟動Dalvik虛擬機,繼而載入一些必要的系統資源和系統類,最後進入一種監聽狀態。在之後的運作中,當其他系統模塊(比如 AMS)希望創建新進程時,只需向zygote進程發出請求,zygote進程監聽到該請 ...
  • Android7.0提供新功能以提升性能、生產效率和安全性。 關於Android N的性能改進,Android N建立了先進的圖形處理Vulkan系統,能少的減少對CPU的占用。與此同時,Android N加入了JIT編譯器,安裝程式快了75%,所占空間減少了50%。 在安全性上,Android N ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...