移动端微信里打开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初始化后才可以调用其的方法设置字体到默认大小。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值