疑难杂症之-----h5 页面webview 进小程序内,调用摄像机拍照问题

描述:h5页是用 vue3+vite+vant 写的,拍照上传用的是 vant 的 # Uploader 文件上传 组件,内嵌进小程序的 webview 里 提测打回,测试描述:安卓手机拍照后点击确定会闪退,并且会刷新到首页 第一反应是兼容性问题,然后开始一顿查询,结果在微信开放平台果然发现有同样的问题,时间是 2022 年,但是结果,你们懂的。。。此处省略内心一万句话。 1.解决闪退问题,查询无用,开始自己找方法,突然想起,有没有可能是拍照的图片太大导致,然后查 vant 的文档,推荐使用compressorjs 做图片压缩

js 复制代码
/**
 * 图片压缩
 * @param {File} image 图片
 * @param {String} backType 需要返回的类型blob、file、base64
 * @param {Number} quality 图片压缩比,数字越小,图片压缩越小
 * @return
 */
export const compressorImage = (image: File, backType: string, quality: number) => {
  return new Promise((resolve, reject) => {
    new Compressor(image, {
      quality: quality || 0.8,
      success(result) {
        if (!backType || backType === 'blob') {
          resolve(result);
        } else if (backType === 'file') {
          const file = new File([result], image.name, { type: image.type });
          resolve(file);
        } else if (backType === 'base64') {
          const reader = new FileReader();
          reader.readAsDataURL(result);
          reader.onload = () => resolve(reader.result);
          reader.onerror = (error) => reject(error);
        }
      },
      error(err) {
        reject(err);
      },
    });
  });
};

经测试后,有效,闪退解决,

/查询解决办法的时候,看到说有的机型内存不足,或者太旧也会造成闪退,某官方回答,!暂无解决办法!,只能说一句牛批,目前没碰到,所以不知道适不适用/

**解决完之后,才通知我要求限制图片大小 100M。。。

2.刷新问题,因为 webview 内嵌样式,而且需求要求扫描二维码,没用 wx 的 jssdk,原因:时间太短,后台不予支持,而且公众号管理员找不到人。。。真是槽点。所以想了个曲线救国的办法,用 uniapp 的 webviewjs 跳转小程序扫一扫,扫完后返回,不推荐,但是没办法, 因为吊起扫一扫返回需要在 onshow 里接参数,而且要刷新webview,就在 onshow 内更改了下 webview 的 src,需要先清除再重新赋值才可以刷新,发现直接清除重新加参数不好用,所以加了个延时器 拍照后发现 webview 页重新执行了 onshow,所以造成了刷新问题, 解决:把初始化webview 的 src 赋值放在 onLoad 里,并且需要把webview v-if 去掉,否则安卓某些手机机型会报错 webview 一个页面只能插入一个

至此,问题全部解决

注:此文章为自己解决问题记录所写,可能不适合所有人,不喜勿喷,解决办法可能会参考某些文章,但是时间长了,找不到出处,如有侵权,联系本人,谢谢

相关推荐
lpfasd1235 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
Data analyse4568 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai8 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记9 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁9 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu9 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!9 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
史瓦辛格10 小时前
给 DeepSeek Harness 写费用插件:把「这次会话花了多少钱」算准
前端·deepseek
星光不问赶路人10 小时前
Vue 3 + TypeScript 中 enum 的使用实践
前端·vue.js
鸥梨菌Honevid10 小时前
UVM 中 REQ 和 RSP 类型详解:从通信模型到 item_done 与 put_response
java·前端·servlet