混合开发之-vue和JsBridge跳转返回

这两天领导一直想说要做个混合开发,然后让我用vue和原生app联调,vue中几乎没什么难点,主要的是和原生app嵌套的跳转返回(目前就先遇到这个问题,我相信还有很多难题。。。),看了一天的文档也调试过都没成功,今天此刻终于成功了,很开心的分享下~

问题:原生app点击按钮可以跳到vue项目,但是返回不回去。。。复制代码

方法:

vue端:

  //在methods中加入这两个方法,其中closeWebview是和ios和android约定好的方法名
  methods:{
        backPage(e){//按钮的点击事件,实现关闭vue项目返回到原生页面中
            this.setupWebViewJavascriptBridge(function(bridge) {
                bridge.registerHandler("closeWebview",function(data,responseCallback){
                    responseCallback("button js callback");
                });
                var data = "hello";
                //下面这个是安卓调用的时候必须加,ios调用的时候没有也可以跳转和返回
                bridge.callHandler('closeWebview',data,function(resp){
                    //document.getElementById("show").innerHTML = "payInterface" + resp;
                });
            })
        },
        setupWebViewJavascriptBridge(callback) {
            if (window.WebViewJavascriptBridge) {
                callback(WebViewJavascriptBridge)
            } else {
                document.addEventListener('WebViewJavascriptBridgeReady', function() {
                    callback(WebViewJavascriptBridge)
                },false);
            }
            //iOS使用
            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)
        }
    }
复制代码

具体可以参考:https://www.jianshu.com/p/e37ccf32cb5b



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue 3中使用Agent Vue和TypeScript(TS)进行跳转到详情页,你可以按照以下步骤操作: 1. 首先,确保你已经安装了Vue 3和Agent Vue。你可以使用npm或yarn进行安装: ``` npm install vue@next agent-vue ``` 或者 ``` yarn add vue@next agent-vue ``` 2. 在你的Vue组件中,首先导入Agent Vue的`useRouter`函数和相关的类型定义: ```typescript import { useRouter } from 'agent-vue'; import { RouteLocationNormalized } from 'vue-router'; ``` 3. 在组件中定义一个函数来处理跳转到详情页的逻辑。你可以使用`useRouter`函数获取路由实例,然后使用`push`方法进行跳转: ```typescript export default { // ... methods: { goToDetailPage() { const router = useRouter(); const detailRoute: RouteLocationNormalized = { name: 'detail', // 替换为你的详情页路由名称 params: { // 传递的参数 }, }; router.push(detailRoute); }, }, // ... }; ``` 4. 在模板中使用`goToDetailPage`方法来触发跳转事件。你可以在按钮点击事件或者其他需要跳转的地方调用该方法: ```html <template> <button @click="goToDetailPage">跳转详情页</button> </template> ``` 确保将`goToDetailPage`方法绑定到对应的事件上。 这样,当点击按钮时,页面将会跳转到你定义的详情页路由。 请注意,上述代码中的路由名称和参数是示例,请根据你的实际情况进行修改。另外,确保在Vue Router中配置了对应的详情页路由。 希望能帮到你!如果你还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值