js实现移动端微信禁止字体被放大或缩小,防止排版错乱教程视频_移动端使用指南

由于微信webvie内置了调整字体大小的功能,如果用户调整了这一设置,就会导致了网页中的字体比原本的尺寸偏大或偏小,使得网页可能出现排版错乱,或者字体太小看不清的情况发生。那么如何来防止页面布局出错呢?这篇文章就以js来实现移动端微信禁止字体被放大或缩小。解决方案微信的 iOS 版的调整字体大小使用的是通过给 body 设置 -webkit-text-siz

js实现移动端微信禁止字体被放大或缩小,防止排版错乱教程视频

由于微信webvie内置了调整字体大小的功能,如果用户调整了这一设置,就会导致了网页中的字体比原本的尺寸偏大或偏小,使得网页可能出现排版错乱,或者字体太小看不清的情况发生。那么如何来防止页面布局出错呢?这篇文章就以js来实现移动端微信禁止字体被放大或缩小。

js实现移动端微信禁止字体被放大或缩小,防止排版错乱教程视频_移动端使用指南

解决方案

微信的 iOS 版的调整字体大小使用的是通过给 body 设置 -webkit-text-size-adjust:120% 属性实现的,Android 则是用过 Java 调用 webview 的 API 设置字体大小。

因为这两个系统实现调整字体大小的原理不同,所以需要两种方法来限制微信对网页字体大小的调整。

iOS

在 iOS 下,对网页的 body 元素设置 -webkit-text-size-adjust: 100% !important;可以覆盖掉微信的样式。

body {
    -webkit-text-size-adjust: 100% ;
}

Android

在 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) {
            document.attachEvent("WeixinJSBridgeReady", handleFontSize);
            document.attachEvent("onWeixinJSBridgeReady", handleFontSize);
        }
    }
    function handleFontSize() {
        WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
        WeixinJSBridge.on('menu:setfont', function() {
            WeixinJSBridge.invoke('setFontSizeCallback', { 'fontSize' : 0 });
        });
    }
    })();

注意:如果用户之前已经设置过了字体大小,访问网页时会先看到字体被放大后的效果再恢复正常,因为在WeixinJSBridge 对象初始化完成之后才能通过 WeixinJSBridge 对象的方法设置为默认大小。

总结

由于实现原理的不同,目前的解决方案只在 iOS 上表现完美,Android 下仍然有延迟生效问题。  来源:https://juejin.im/entry/578133ad8ac2470061eb5e94

海计划公众号
(0)
上一篇 2020/04/05 01:45
下一篇 2020/04/05 01:45

您可能感兴趣的内容