ZaiZai 2 vuotta sitten
vanhempi
commit
f258ccfa34
2 muutettua tiedostoa jossa 29 lisäystä ja 0 poistoa
  1. 7 0
      src/styles/app/theme.scss
  2. 22 0
      src/views/using/query.vue

+ 7 - 0
src/styles/app/theme.scss

@@ -352,4 +352,11 @@ html.dark {
             border-color: var(--el-color-primary);
         }
     }
+    //通知
+    .el-notification {
+        background: #030C3B;
+        border-color: var(--el-color-primary);
+        --el-notification-title-color: white;
+        --el-notification-content-color: white;
+    }
 }

+ 22 - 0
src/views/using/query.vue

@@ -1530,12 +1530,34 @@ const transcribeApi = async (file) => {
 //获取录音权限
 const getUserMedia = () => {
     return new Promise((resolve) => {
+        // 老的浏览器可能根本没有实现 mediaDevices,所以我们可以先设置一个空的对象
+        if (navigator.mediaDevices === undefined) {
+            navigator.mediaDevices = {};
+        }
+        // 一些浏览器部分支持 mediaDevices。我们不能直接给对象设置 getUserMedia
+        // 因为这样可能会覆盖已有的属性。这里我们只会在没有 getUserMedia 属性的时候添加它。
+        if (navigator.mediaDevices.getUserMedia === undefined) {
+            navigator.mediaDevices.getUserMedia = function(constraints) {
+                // 首先,如果有 getUserMedia 的话,就获得它
+                let getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
+                // 一些浏览器根本没实现它 - 那么就返回一个 error 到 promise 的 reject 来保持一个统一的接口
+                if (!getUserMedia) {
+                    window?.$message.error('当前浏览器不支持语音功能')
+                    resolve(false)
+                }
+                // 否则,为老的 navigator.getUserMedia 方法包裹一个 Promise
+                return new Promise(function(resolve, reject) {
+                    getUserMedia.call(navigator, constraints, resolve, reject);
+                });
+            }
+        }
         navigator.mediaDevices.getUserMedia({
             audio: true
         }).then(stream => {
             resolve(stream)
         }).catch(err => {
             console.log(err)
+            window?.$message.error('获取麦克风权限失败了')
             resolve(false)
         });
     })