微信小程序web-view组件嵌入h5页面导致双导航栏,如何只保留其中一个?

Posted 铁锤妹妹@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序web-view组件嵌入h5页面导致双导航栏,如何只保留其中一个?相关的知识,希望对你有一定的参考价值。

一. 前提

  1. 已知存在一个微信小程序,该小程序的某个页面通过web-view组件嵌套了我们app的一个h5页面,h5页面本身有自己的导航栏,就导致了双导航栏。
  2. 由于uniapp的 web-view 组件一定有原生导航栏,pages.js中设置navigationStyle: custom 对 web-view 组件无效;所以只能去掉h5里的导航。

二. 问题分析

web-view 组件不了解的小伙伴们,直接查看官方文档介绍即可。入口地址: 小程序 web-view
介绍web-view 组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。

三. 解决方案

h5页面现在有两个地方在使用,一个是app里需要保留导航栏,另一个小程序中需要去掉h5的导航栏,所以需要条件判断,在使用web-view 组件项目中的页面src指向的链接多加一个navigatorType = miniprogram 参数;在h5页面,mounted()生命周期中取传来的参数this.$route.query.navigatorType,如果等于"miniprogram",隐藏h5导航栏,否则按原样显示导航栏。

<template>
  <view>
    <web-view
      :webview-styles="webviewStyles"
      :src="h5Url"
      @message="handleMessage"
    ></web-view>
  </view>
</template>

<script>
import config from '@/utils/config'
import  getToken  from '@/utils/token.js'
export default 
  data() 
    return 
      h5PageName: 'ceshiName',
      h5Url: '',
      webviewStyles: 
        progress: 
          color: '#FF3333',
        ,
      ,
    
  ,
  onLoad() 
    this.h5Url = `$
      config.h5PageBaseHttp + this.h5PageName
    ?navigatorType=miniprogram&token=$getToken()`
  ,

</script>

<style></style>

h5页面

  mounted() 
     let navigatorType = this.$route.query.navigatorType;
      if (navigatorType === "miniprogram") 
        this.isNavBar = false;
      
  ,

app中跳转到h5页面就不需要加 navigatorType = miniprogram 参数了

以上是关于微信小程序web-view组件嵌入h5页面导致双导航栏,如何只保留其中一个?的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序web-view嵌入H5页面, H5页面向小程序页面传值

微信小程序web-view , 嵌入H5页面

微信小程序web-view , 嵌入H5页面

微信小程序web-view环境下H5跳转小程序页面方法

微信小程序内联h5页面,实现分享

小程序和H5页面的相互跳转