收藏
回答

公众号网页中内嵌了iframe,但在iframe中的子页面h5没有WeixinJSBridge对象?

function initWxFont() {
  const handleFontSize = () => {
    console.log('执行 handleFontSize');
    console.log('WeixinJSBridge?.invoke:', WeixinJSBridge?.invoke);
    console.log('WeixinJSBridge?.on:', WeixinJSBridge?.on);
    console.log('document.body.style.fontSize:', document.body.style.fontSize);
    // 在微信网页中字体分为7级(fontSize),2为标准
    WeixinJSBridge?.invoke?.('setFontSizeCallback', { fontSize: 2 });
    WeixinJSBridge?.on?.('menu:setfont', function () {
      WeixinJSBridge?.invoke?.('setFontSizeCallback', { fontSize: 2 });
    });
  };


  try {
    // 安卓 禁止用户自定义设置字体大小
    // @ts-ignore
    if (typeof WeixinJSBridge == 'object' && typeof WeixinJSBridge?.invoke == 'function') {
      console.log('WeixinJSBridge对象存在');
      handleFontSize();
    } else {
      if (document.addEventListener) {
        console.log('WeixinJSBridge对象不存在,使用document.addEventListener');
        document.addEventListener('WeixinJSBridgeReady', handleFontSize, false);
      } else {
        // @ts-ignore
        if (document.attachEvent) {
          console.log('WeixinJSBridge对象不存在,使用document.attachEvent');
          // @ts-ignore
          document.attachEvent('WeixinJSBridgeReady', handleFontSize);
          // @ts-ignore
          document.attachEvent('onWeixinJSBridgeReady', handleFontSize);
        }
      }
    }
  } catch (error) { }
  // 强制设置字体大小
  document.body.style.fontSize = '14px';
}


initWxFont();


环境ios,iframe子页面。使用vConsole打印WeixinJSBridge报undefined。

回答关注问题邀请回答
收藏
登录 后发表内容