H5页面与vue的客户端交互

工作中经常遇到一些奇怪的东西,我有个这样的需求,就是我写的vue项目被嵌套在别的h5项目页面下,so进入我的页面前需要判断他的h5页面有没有登录,这时候就需要我的客户端页面调用h5页面的登录方法。客户端页面(ios、安卓)两种都得交互h5页面,,,借助JavascriptBridge工具,前端对应的js代码
 因为我的项目是vue的,我一般把函数都转为箭头函数了。
<template>
 <div class="tel">
  <p>{{message}}aaasss</p>
  <button @click="callBackH5">与h5页面交互</button>
 </div>
</template>
<script>
/*判断客户端手机为ios还是安卓,放在Script中*/
let u = navigator.userAgent, app = navigator.appVersion;
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //安卓
let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
export default {
    data(){
      return{
        message:'',
        dataCall:''
      }
    },
    mounted(){
      //$on给当前事件绑定一些事件监听
      this.$bus.$on('on-click',mes=>{
        this.message=mes
      })
    },
    created(){

    },
    methods:{
      /*这段代码是固定的,必须要放到js中,vue的就放在method */
      setupWebViewJavascriptBridge(callback) {
        if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
        if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
        window.WVJBCallbacks = [callback];
        var WVJBIframe = document.createElement('iframe');
        WVJBIframe.style.display = 'none';
        WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
        document.documentElement.appendChild(WVJBIframe);
        setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
      },
      callBackH5(){
        if(isIOS){
           this.setupWebViewJavascriptBridge((bridge) =>{
              //注册一个方法(方法名是“toLogin”),客户端进行调用(方法名也是“JS Echo”),responseCallback是回调函数
              // bridge.registerHandler('toLogin', function(data, responseCallback) {
              //     console.log("JS Echo called with:", data)
              //     responseCallback(data)
              // })
              //调用原生的方法toLogin
              bridge.callHandler('toLogin', this.dataCall,  (response)=> {
                  console.log("response:", response)
              })
          })
        }else if(isAndroid){
          window.WebViewJavascriptBridge.callHandler('toLogin', this.dataCall,  (response)=> {
                  console.log("response:", response)
              })

        }
      }

    }


}
</script>
<style scoped>
.tel{
  border: 1px solid rebeccapurple
}
</style>

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值