uniapp的webview与vue项目通信

需求:vue的h5项目,向uniapp嵌入的webview里面传值,调uniapp的页面切换路由方法,uni.navigateTo
(注:uniapp的webview组件地址,https://uniapp.dcloud.net.cn/component/web-view.html#web-view)
思路:
1、在vue项目的index.html中引入,必须引,才能使用uniapp的内部方法
2、通过注册UniAppJSBridgeReady事件,在里面调用uniapp提供的相关方法,实现数据通信(注:也是在index.html中)

  注:支持的uniapp方法有如下:
  uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab,uni.navigateBack,uni.postMessage(h5端向app端发送消息),uni.getEnv(获取当前环境)
  
3、当前的问题是如何实现index.html与操作的vue页面之间进行通信,解决方法如下:
    1>在main.js为window绑定一个全局变量,eventBus,通过vue兄弟组件传值的形式($emit,$on)
    window.eventBus=new Vue();
    window.isShowMap=false;
    2>在vue页面发出一个事件,传递相应参数(Home.vue)
    goMap() {
      window.eventBus.$emit("goMapExtend",true);
    },
    3>在index.html接收这个发出的变量,然后注册UniAppJSBridgeReady事件,在里面监听dom事件,因为UniAppJSBridgeReady在$on里面无法触发,所以必须给它一个触发的条件,
    所以创建了一个span标签,在$on里面触发标签的点击事件,在UniAppJSBridgeReady中监听标签的点击事件,在里面执行相应的操作
    
    

你可能感兴趣的:(vue.js,uni-app,javascript,webview)