webview設置致使app內嵌網頁佈局亂掉的其中一種問題解決

對app內嵌網頁接觸很少,這裏描述的是一種內嵌網頁佈局亂掉的可能緣由:java

關鍵字:「webview控件」、「setUseWideViewPort屬性」、「meta標籤」

參考文章: Android開發填坑之setUseWideViewPortweb

情景

  1. 近期接到一個bug反饋,說一份網頁代碼放在一個第三方提供的app內顯示佈局亂掉了,可是這份代碼在手機端瀏覽器是能夠正常顯示的;

簡單的處理過程

  1. 簡單review代碼,發現是經過動態修改meta標籤實現的自適應,在手機端瀏覽器或者公司的app內打開這個網頁都是ok的,看一下有bug的app內頁面效果,感受貌似是縮放的問題;瀏覽器

  2. 查了下這個app內webview的UA,發現是很常規的webkit內核,不是瀏覽器內核的問題,而後我回過頭修改代碼,換些寫法,更改自適應meta標籤的實現,或者改用rem單位,或者採用scale縮放,都不能達到我想要的效果,換種思路;app

  3. 整體來講,這份代碼應該問題不大,由於在公司開發的app內,手機端瀏覽器都是正常顯示的,那同一個手機,爲何在第三方開發的那個app內打開這個網頁就不行了呢?懷疑比較大機率是他們的安卓的設置不搭,詢問安卓同事,說安卓能夠對webview控件作一些參數的設置,包括縮放等一堆設置;ide

  4. 聯繫第三方app的安卓,總的一句話就是,爲何一樣一份網頁代碼在咱們APP內能夠,在大家APP內就不行了,懷疑大家的webview參數設置不一樣,比照下咱們的參數應該就能找到問題;佈局

  5. 經過比較發現是這樣子一個參數沒作設置,這個參數文檔上說是關於webview控件是否支持<meta>標籤的viewport屬性,最後安卓開發添加該參數後,佈局錯亂問題解決;測試

webSettings.setUseWideViewPort(true);
複製代碼

至此問題解決spa

關於調試app內嵌網頁的簡單拓展思路

  1. 由於第三方app很差改安卓的代碼,或者說讓他們打一個測試的包,因此須要調試內嵌web頁面能夠考慮經過更改Host域名指向的方法實現,將跳轉的路徑指向本身的測試地址;
相關文章
相關標籤/搜索