移動端微信里打開H5頁面,頁面字體放大


背景:移動端H5頁面,視口設置<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />

   qq、瀏覽器打開頁面字體大小正常

問題:微信打開頁面,頁面的字體被放大,感覺整體被放大

解決:

iOS: 

無論是系統自帶的調整字體大小,還是一些App自帶的調整字體大小iOS是調整WebView字體大小是通過給body添加-webkit-text-size-adjust來實現的,所以只需在body修改-webkit-text-size-adjust屬性即可,下面寫的這兩種方法都可以,選其一即可,方法如下:

/* IOS微信、UC瀏覽器阻止字體大小調整 */
body {
-webkit-text-size-adjust: none !important;
}
body {
-webkit-text-size-adjust: 100% !important;
}

Android:

Android則要分為兩種情況:

1、阻止系統自帶的字體大小調整方式對自己開發的App的WebView的影響需要添加下面的代碼到WebView組件設置字體默認縮放比例中。

WebSettings settings = webView.getSettings();
settings.setTextZoom(100);

2、對於阻止微信調整字體對頁面的影響,我們需要添加下面的代碼到頁面中:

//Android微信中,借助WeixinJSBridge對象來阻止字體大小調整
(function() {
if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
  handleFontSize();
} else {
  if (document.addEventListener) {
    document.addEventListener("WeixinJSBridgeReady", handleFontSize, false);
  } else if (document.attachEvent) {
  //IE瀏覽器,非W3C規范
    document.attachEvent("onWeixinJSBridgeReady", handleFontSize);
  }
}
function handleFontSize() {
   // 設置網頁字體為默認大小
  WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
  // 重寫設置網頁字體大小的事件
  WeixinJSBridge.on('menu:setfont', function() {
    WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
  });
}
})();

這種方式的缺陷就是,頁面先看到的是字體被放大的效果,然后閃回到正常的展示,估計1s,是因為WeixinJSBridge初始化需要一點時間,要等到WeixinJSBridge初始化后才可以調用其的方法設置字體到默認大小。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM