// 点击按钮统一触发授权全浏览器共用 async handleScanClick() { const result await this.checkCameraPermission(); if (result.success) { //这里填写相机权限调用成功的逻辑 } else if (result.type DENIED) { const guide this.getGuideContent(); uni.showModal({ title: guide.title, content: guide.steps.map((s, i) ${i 1}.${s}).join(\n), confirmText: 刷新页面, cancelText: 取消, success(res) { if (res.confirm) window.location.reload() } }) } else { uni.showToast({ title: result.msg, icon: none }) } },这里判断用户是否授权浏览器相机权限未授权会一直弹出要求授权提示框// 你的原版权限检测工具 async checkCameraPermission(options {}) { const { video true, audio false } options; if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { return { success: false, type: UNSUPPORTED, msg: 您的浏览器不支持访问相机 }; } try { await navigator.mediaDevices.getUserMedia({ video, audio }); return { success: true, type: GRANTED }; } catch (err) { if (err.name NotAllowedError || err.name PermissionDeniedError) { return { success: false, type: DENIED, error: err }; } return { success: false, type: ERROR, msg: err.message }; } },浏览器权限检测工具判断浏览器当前相机权限是否开启// 浏览器指引 getGuideContent() { const ua navigator.userAgent.toLowerCase(); if (ua.includes(ucbrowser)) { return { title: UC浏览器权限未开启, steps: [ 点击地址栏左侧的【锁】图标或【菜单】按钮, 找到【网页设置】或【权限管理】, 将【摄像头】设置为“允许”后刷新页面 ] }; } if (/iphone|ipad/.test(ua)) { return { title: Safari 需要授权, steps: [ 请在弹出的系统对话框中点击“允许”, 若已拒绝请前往手机【设置】-【Safari浏览器】-【相机】中修改 ] }; } if (ua.includes(micromessenger)) { return { title: 微信无法直接使用, steps: [ 请点击右上角【...】, 选择【在浏览器打开】以使用完整相机功能 ] }; } return { title: 相机权限被拒绝, steps: [ 请点击浏览器地址栏左侧的【】图标, 在弹出的菜单中找到【相机】选项, 将其切换为“允许”后刷新页面 ] }; },这里就是未开启权限弹出的提示框uc浏览器Safari 以及微信浏览器单独处理