原本我是用

window.open(url, '_blank')

发现这种返回方式直接就把app关掉了
又改成

 if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
              alert("我是app")
              void plus.runtime.openWeb(url);
            } else {
              window.open(url, '_blank')
            }

一般到这里就可以了
可是我这个url不是只跳转了一个页面,是先跳转到后台页面,让后台把登录信息加入session storage中,前端判断是否登录
反正一般的返回是无法做到的,只能是关闭这个页面
第一步引入mui
首先去官网链接: https://github.com/dcloudio/mui下载mui
在这里插入图片描述
这三个文件复制到assets下

  import * as mui from  "../../assets/js/mui.min.js"

会报这个错
在这里插入图片描述
vue3在babel.config.js 忽略mui.min.js文件

module.exports = {
  presets: [
    '@vue/app'
  ],
  ignore: [
    './src/assets/js/mui.min.js'
  ]
}

vue2 在.baberlrc中忽略mui.min.js
在这里插入图片描述

若是有Eslint,则在.eslintignre中忽略mui.min.js,写法同上(没试过)

使用

if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
              mui.init();
              mui.plusReady(function() {
                var self = plus.webview.currentWebview();
                var url = res.result.url
                var dlmnWV = plus.webview.create(url);
                self.append(dlmnWV);
                // mui.openWindow(dlmnWV);
                var old_back = mui.back;
                mui.back = function() {
                  if(plus.webview.all()[plus.webview.all().length-1].id==url){
                    var btn = ["确定", "取消"];
                    mui.confirm('确认关闭当前窗口?', '系统提示', btn, function(e) {
                      if (e.index == 0) {
                        //执行mui封装好的窗口关闭逻辑;
                        dlmnWV.close()
                      }
                    });
                  }else{
                    old_back()
                  }
                }
              })
                  //单页面可以多页面不行(多页面指连着跳转)
              // void plus.runtime.openWeb(res.result.url);
            } else {
              window.open(res.result.url, '_blank')
            }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐