vue项目强制设置h5页面字体的大小不受微信设置字体的大小影响

975 阅读1分钟

问题:用户调整微信的字体大小之后,会使mobileSelect.js的liHeight计算值变大,从而导致无法选中选项。

微信截图_20211221162539.png

微信截图_20211221163512.png

解决方案:强制设置h5页面字体的大小不受微信设置字体的大小影响

安卓和IOS都需设置,可写在app.vue中。其中ios系统只要设置css,安卓需要设置js(注意:需引入微信sdk jweixin-1.6.0.js),具体代码如下:

<template>
  <div id="app">
    <router-view />
  </div>
</template>

<script>
export default {
  name: 'App',
  mounted () {
    // 强制不让微信的字体大小调整效果在该h5页面生效
    this.$nextTick(() => {
      setTimeout(() => {
        this.init()
      }, 300)
    })
  },
  methods: {
    init () {       
      if (typeof WeixinJSBridge === 'object' && typeof WeixinJSBridge.invoke === 'function') {
        this.handleFontsize()
      } else {
        if (document.addEventListener) {
          document.addEventListener('WeixinJSBridgeReady', this.handleFontsize, false)
        } else if (document.attachEvent) {
          document.attachEvent('WeixinjsBridgeReady', this.handleFontsize)
          document.attachEvent('onWeixinJSBridgeReady', this.handleFontsize)
        }
      }
    },
    handleFontsize () {
      // 设置网页字体为默认大小
      WeixinJSBridge.invoke('setFontSizeCallback', {
        'fontSize': 0
      })
      // 重写设置网页字体大小的事件
      WeixinJSBridge.on('menu: setfont', () => {
        WeixinJSBridge.invoke('setFontSizeCallback', {
          'fontsize': 0
        })
      })
    }
  }
}
</script>
<style>
  html {
    -webkit-text-size-adjust: 100% !important;
    text-size-adjust: 100% !important;
    -moz-text-size-adjust: 100% !important;
  }
</style>

参考文章:h5页面字体的大小不受微信设置字体的大小影响(vue项目)