boxue
boxue
  • 发布:2025-01-03 14:30
  • 更新:2025-01-13 16:46
  • 阅读:112

【报Bug】5+app加载nuve项目的web版本出现意外效果

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macos

HBuilderX类型: 正式

HBuilderX版本号: 4.44

手机系统: Android

手机系统版本号: Android 8.1

手机厂商: 小米

手机机型: MI PAD 4

页面类型: nvue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

示例代码:
<!DOCTYPE html>  
<html>  
  <head>  
    <meta charset="utf-8">  
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />  
    <title></title>  
    <script type="text/javascript">  
      document.addEventListener('plusready', function() {  
        window.location.href = "http://172.17.230.47:8085/mes/eamuni/index.html";  
      });  
    </script>  
  </head>  
  <body>  
  </body>  
</html>

操作步骤:

第一步:用uvue+vue3创建的uniapp项目,打包成web版本;
第二步:放置在服务下(http://172.17.230.47:8085/mes/eamuni/index.html可访问)
第三步:创建5+app空项目,在根index.html中加载(window.location.href = "http://172.17.230.47:8085/mes/eamuni/index.html";)

预期结果:

1.这种技术路线是不是可以?还是不应该,还是有更好的实现方式?

  1. 是工程化打包的项目,不能像mui那种每个页面进行拦截,有没有替代方式?
  2. 断网或者服务器端不能访问时,该怎么给一个提示,在网络恢复时直接进入到原来的页面(是hash打包成web的方式)
  3. 用5+app打包之后有没有更好的调试方式?

实际结果:
  1. 用平板中间的手势操作后退,是整个退出应用,原nvue版本的后退无效
  2. 扫码异常(现在已修改成plus.barcode.create('barcode', [plus.barcode.QR]的方式可以扫码)
  3. 录音原有的api不可用(应该是需要修改为浏览器版本的录音功能)
  4. 自定义组件的弹窗‘<template><uni-popup ref="popup" type="bottom" background-color="#fff">’被遮挡,现在修改uni-view[name='content']这个层级和宽度已修改好
  5. 在断网情况下,直接进入到一个大大自带的error页面而不是新加载的首页

bug描述:

需求背景:内部隔离网络下使用的app,想动态更新服务端的html即可,不想让员工频繁来技术部安装app

2025-01-03 14:30 负责人:无 分享
已邀请:
boxue

boxue (作者) - boxue

第一步:起一个5+空项目,在index.html中写入

<!DOCTYPE html>  
<html>  
  <head>  
    <meta charset="utf-8">  
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />  
    <title>WebView</title>  
    <script type="text/javascript">  
      // 确保 plus 对象存在  
      if (window.plus) {  
        plusReady();  
      } else {  
        document.addEventListener('plusready', plusReady, false);  
      }  

      function plusReady() {  
        // 创建 WebView  
        var webview = plus.webview.create(  
          'http://192.168.100.102:9005/',  
          "targetWebview", // WebView ID  
          {  
            top: "0px",  
            bottom: "0px",  
            width: "100%",  
            height: "100%"  
          }  
        );  

        webview.show();  

        // 监听返回按钮事件  
        plus.key.addEventListener('backbutton', function() {  
          // 检查 WebView 是否可以返回  
          webview.canBack(function(e) {  
            if (e.canBack) {  
              webview.back(); // WebView 返回上一页  
            } else {  
              // 如果不能返回,提示用户是否退出应用  
              plus.nativeUI.confirm("确定要退出应用吗?", function(e) {  
                if (e.index == 0) {  
                  plus.runtime.quit();  
                }  
              }, "提示", ["确定", "取消"]);  
            }  
          });  
        });  
      }  
    </script>  
  </head>  
  <body>  
  </body>  
</html>

第二步:发型uniapp(nvue)项目成H5项目拿到项目地址,替换http://192.168.100.102:9005/

注意:需要替换plus环境,如果是纯h5浏览器端则需要换对应的js
扫码需要进行替换:new plus.barcode.Barcode或者plus.barcode.create
录音需要进行替换:

要回复问题请先登录注册