在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

移動端設備上稀奇古怪的前端問題收集(一)

京東云 ? 來源:jf_75140285 ? 2025-01-24 15:41 ? 次閱讀

作者:京東物流 陳雨

作為一名開發者,bug 往往是我們最怕遇見的東西;而比遇到 bug 更可怕的事情,是定位不到 bug。作為一名前端開發者,與業務邏輯相關的 bug 還相對好定位、好解決一些;而一些與語法特性、平臺與設備差異相關的 bug 則更令人頭疼一些。這里記錄下我在工作中遇到過的稀奇古怪的前端問題,作為給自己的記錄和提醒。

用 vh 定義全屏顯示的問題

很多頁面因為設計效果的需要,要求正好鋪滿一整個顯示界面、也不允許上下滑動。做類似的需求時,往往直覺會使用這樣的代碼解決問題:

{
 height: 100vh;
}

這樣的代碼看似很優雅,但是往往會有兼容性問題——不同瀏覽器定義的視口高度的定義不一致,導致 100vh 并不能真正覆蓋全視口高度;還有不少瀏覽器視口高度數值不變但實際視口大小可變,比如移動端 Chrome 瀏覽器的導航欄時不時隱藏但網頁獲取的視口高度不變,這都會導致最終顯示效果不符合預期。

如果要實現全屏幕覆蓋不可滑動,更為穩妥和保險的方法是使用絕對定位:

{
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
}

帶 alpha 通道的 hex 顏色值失效的問題

在較新的 web 標準中,hex 格式的顏色代碼也可以表示透明度了,只需要在常見的六位 hex 顏色代碼后加兩位表示透明度的 hex 值,例如 #66ccff 表示一種藍色,而 #66ccff80 表示透明度 50% 的這種藍色(80 是 16 進制的 128,是 256 的一半,即 50% 透明度)。雖然直接這樣寫代碼的行為在前端開發中不普遍,但是設計師交付的視覺稿給出的參考值有不少是這種格式。如果直接把這樣的顏色代碼用于生產中,可能會出現以下兩種問題:

?如果你編寫的項目引入了 less 或者 sass,在進行打包構建的操作時,部分預處理器無法正確識別帶 alpha 通道的 hex 顏色值,因此這部分代碼無法被正確轉譯,最終構建出的生產環境代碼中這部分顏色可能丟失。

?部分移動端瀏覽器并未適配帶 alpha 通道的 hex 顏色值,因此即使是使用原生 css 完成的代碼,也有可能出現在部分手機或部分瀏覽器顏色不正常的問題。

生命周期函數不執行的問題

在頁面剛打開或準備關閉時,我們往往需要進行一些諸如數據初始化、登入登出、數據上報等行為,而這些往往是借助 Vue 或 React 的生命周期函數完成的。不過,生命周期函數不執行也是常被忽略的 bug,詳細來說,又可以分為兩類原因——

組件被 keep alive 導致未被卸載或重新加載

如果是 Vue 中使用 keep-alive 包裹的組件,或在 React 中使用類似的第三方庫 keep alive 的組件,只會在第一次加載時執行生命周期初始化函數,且不會執行生命周期卸載函數。這導致的不符合預期的行為很好解決,只需要使用 onActivated 代替 onMounted ,用 onDeactivated 代替 onUnmounted 即可。

頁面被直接關閉導致框架生命周期函數無法執行

不管是 Vue 還是 React,生命周期函數的正確執行都依賴于 Vue 或 React 實例的存在。而當用戶直接關閉瀏覽器頁面的時候,Vue 或 React 實例已經被銷毀了,生命周期卸載函數當然就無法執行了。處理這種情況也并不麻煩,只需要在生命周期初始化函數中添加對 window 卸載事件的監聽,然后把想要進行的操作放到 window 卸載事件函數里就好了。

onMonted(() => {  
  window.addEventListener('beforeunload', () => {    
    // 需要執行的代碼 
  });
});

文本中的 emoji 上下被裁剪

UGC 內容中經常出現文本和 emoji 混排的場景,而有時可能遇到 emoji 上下邊緣被裁剪的問題。這往往是由于開發頁面時為了限定文本高度和間距或其他排版方面的要求,將 line-height 和 font-size 設置為同樣的值,且 overflow 屬性被設置為 hidden 。如果出現類似情況,建議去除 line-height 的限制,而通過 margin 等方式控制行距,從而避免 emoji 被裁減。

輸入框被彈起的軟鍵盤覆蓋的問題

如果移動端頁面中有輸入框,那么很可能面臨輸入框被彈起的軟鍵盤覆蓋的問題。一般來講,對于需要彈起軟鍵盤的場景,較新的瀏覽器或者移動端 app 的 webview 會自動聚焦到輸入框中并滾動到相應位置,來保證輸入框的正常顯示;但是,對于如下兩種情況,彈起的軟鍵盤會將輸入框覆蓋,影響用戶輸入。

瀏覽器未能主動聚焦到輸入框

軟鍵盤彈起時,一般會從底部將頁面頂起、壓縮視口;視口高度變低了,原先處于顯示區域的輸入框可能就被擠到輸入框外了。如果用戶使用的瀏覽器版本較早或 app 內置 webview 較為特殊,有可能在軟鍵盤彈出后瀏覽器未能主動聚焦到輸入框上。這時,開發者必須主動聚焦到輸入框并使輸入框滾動到視口內。

const inputEle = document.querySelector('#target-input');inputEle.focus();inputEle.scrollIntoView();

軟鍵盤采用覆蓋在視口上層而非壓縮視口的方式彈出

如果瀏覽器或 webview 版本較為特殊,且輸入框處于頁面靠下的位置或者針對視口絕對定位于底部,那么可能會面臨更加復雜的情況。剛才已經提到,正常情況下,軟鍵盤彈起的標準做法是從底部將頁面頂起、壓縮視口高度;但是某些情況下,軟鍵盤并不改變視口尺寸,而是直接蓋在視口上方。這就導致頁面邏輯上是展示完整的、輸入框也正常顯示在視口中;但軟鍵盤遮擋了半個頁面,也就真正意義上“覆蓋”在輸入框上。目前主流移動端瀏覽器較新的版本都不會出現這個問題,但是部分 app 內置 webview 會設置為“軟鍵盤覆蓋在 webview 上方”;因此要解決這個問題,必須由客戶端更改 webview 的軟鍵盤設置。如果是很舊的瀏覽器版本或者無法推動客戶端開發解決問題,那就只能放棄治療了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 前端
    +關注

    關注

    1

    文章

    200

    瀏覽量

    17848
  • 代碼
    +關注

    關注

    30

    文章

    4829

    瀏覽量

    69081
  • 移動端
    +關注

    關注

    0

    文章

    42

    瀏覽量

    4446
收藏 人收藏

    評論

    相關推薦

    初學者如何向高手請教問題?

    為什么自學單片機,有的初學者卻能學會,有的初學者卻學了好久都沒學會;連個數字時鐘的程序都寫不出來;每次看到壇友們做出各種稀奇古怪的DIY,我都感到心里酸溜溜,請問高手該該怎。。。。。。總是被學會單片機的嘲笑,看的我們初學者很不是滋味,你們不也就是這么過來的嗎?有什么好自傲的
    發表于 05-21 22:53

    如何正確掌握程序語言

    學習程序語言是每個程序員的必經之路。可是這個世界上有太多的程序語言,每種都號稱具有最新的“特性”。所以程序員的苦惱就在于總是需要學習各種稀奇古怪的語言,而且必須緊跟“潮流”,否則就怕被時代所淘汰。
    發表于 08-15 23:47

    zz:通過烤火來給iphone充電的小設備

    `iphone總是如此的火爆,連外設都是如此的火爆,也總是能有如此稀奇古怪設備涌現出來,娛樂大眾!這個叫做campstove的小設備可以為任何u***充電設備充電,如智能手機、led
    發表于 11-12 10:23

    AD 軟件 圖紙轉碼到Cadence

    請問各位道友,AD Summer 09 格式下的圖紙 如何操作才能轉碼到Cadence 下 ,且能夠被正確識別,因為我在轉碼過程中 碰到稀奇古怪的問題,e.gAD 導不出,提示錯誤;或者 Cadence 導入不了,軟件卡在那里過不去。看看有沒有人 能解決下,謝謝!
    發表于 06-22 17:22

    為什么說射頻前端體化設計決定下移動設備

    隨著移動行業向下代網絡邁進,整個行業將面臨射頻組件匹配,模塊架構和電路設計的挑戰。射頻前端體化設計對下
    發表于 08-01 07:23

    關于單片機的些容易被忽視問題相關資料分享

    “最近直在單片機項目打轉,也碰到了很多稀奇古怪的問題,在這里做個記錄。”01—變量很多剛接觸單片機嵌入式編程沒有太多程序風格可言的程序員來說,變量的濫用以及命名的隨意,導致在后期代碼...
    發表于 01-24 06:05

    申請開發板

    我是個喜歡自己倒騰稀奇古怪的玩意兒的,我很希望用全志的開發板開發種可以用作測量的工具,就像萬用表或者示波器亦或是信號源之類的測試儀器。
    發表于 07-02 13:12

    求助,CH573的SPI使用DMA發送有例程嗎?

    官方的CH573EVT演示包里面只有最普通的SPI直接發送接收,我自己不用DMA發送接收也調通了但是DMA發送搞了兩三天也沒弄明白,經常出稀奇古怪的問題請問官方有SPI的DMA發送例程嗎?或者其他筒子們誰用過,是否方便發來看看
    發表于 09-01 06:40

    稀奇古怪動作的“ Disney USB”產品

    稀奇古怪動作的“ Disney USB”產品 Disney USB產品  市場上有很多 USB 產品,廠商要出奇制勝,除了價格外,產品有沒有特色也很重要。這次在香港推出的
    發表于 01-22 09:32 ?1105次閱讀

    可穿戴機器人聽說過嗎?

    現在機器人對于我們來說早已不是稀奇古怪之物了,機器人還有哪些無限的可能呢?歪果仁也是在這上面下了不少功夫,像什么機器機甲啦。
    發表于 01-09 15:43 ?2946次閱讀

    LG高管:為加強智能家居,所有家電都將內置WiFi

    過去的幾年中,CES展示的產品越來越專注互聯網,不管產品本身多么“其貌不揚”,于是我們有了智能牙刷、智能電扇、智能空氣清新劑等稀奇古怪的東西,而其中最匪夷所思的要數100美元只的寵物食盆,它竟然可以自己從Amazon買東西。
    發表于 01-09 16:05 ?1311次閱讀

    不走尋常路 帶你見識下這些造型稀奇古怪的電腦!

    現在為大家總結了份真正稀奇古怪,個性十足的電腦清單展示,看看你見過幾個?
    發表于 06-02 11:22 ?931次閱讀

    藝術機器人簡史!各種稀奇古怪的機械化設備

    當然,把自動機器人稱為雕塑完全提高了其地位。由此說來,布谷鳥自鳴鐘或許也算得上是雕塑。不過事實,動力雕塑——比如讓·丁格利用其他機械組合出來的極其瘋狂丑陋的機械,發出呼哧呼哧、哐當哐當的聲音,噴吐
    的頭像 發表于 08-14 14:16 ?4542次閱讀

    谷歌推出款新的AR應用,任何支持AR Core的設備均可用

    谷歌經常用新技術做稀奇古怪的實驗應用。“Just a Line” 是款新推出的 AR 應用,建立在谷歌的 ARCore 技術之上。這個應用的設計想法非常簡單,但它的成效實際非常
    發表于 09-04 15:04 ?5790次閱讀

    關于單片機的些容易被忽視問題

    “最近直在單片機項目打轉,也碰到了很多稀奇古怪的問題,在這里做個記錄。”01—變量很多剛接觸單片機嵌入式編程沒有太多程序風格可言的程序員來說,變量的濫用以及命名的隨意,導致在后期代碼...
    發表于 11-29 13:06 ?18次下載
    關于單片機的<b class='flag-5'>一</b>些容易被忽視問題
    主站蜘蛛池模板: 成 黄 色 激 情视频网站 | 四虎影院在线观看免费 | 免费观看四虎精品成人 | 久久天堂网 | 欧美性狂猛xxxxxbbbbb | 免费h视频 | 乱欲小说又粗又大 | 丁香啪啪天堂激情婷婷 | 草草影院ccyy国产日本欧美 | 国产三级精品三级在线观看 | 午夜久久久久久亚洲国产精品 | 午夜剧场官网 | 欧美成人xxxx | 激情6月丁香婷婷色综合 | 天天躁天天爽 | 都市禁忌猎艳风流美妇 | 色婷婷六月丁香在线观看 | 天天干天天日天天射天天操毛片 | 俄罗斯美女在线观看一区 | 色播影院性播影院私人影院 | 伦理片第一页 | av大片| q2002韩国理论 | 日韩亚洲人成在线综合日本 | 日本不卡高清免费 | 国模欢欢大尺度 | 宅男午夜视频在线观看 | 经典三级第一页 | 97影院理论午夜论不卡 | 狠狠色噜噜狠狠狠狠2018 | 欧美午夜性刺激在线观看免费 | 美女自熨出白浆视频在线播放 | 色香欲综合成人免费视频 | 狠狠躁夜夜躁人人爽天天段 | 最新亚洲情黄在线网站 | 国内91视频| 农村妇女色又黄一级毛片卡 | 亚洲性天堂 | 成人夜色香网站在线观看 | 在线一区二区三区 | 婷婷六月丁香 |