0

我的目标是使用 Script Lab 开发一个 Outlook 插件,允许用户通过电子邮件录制视频。我目前的目标是让用户单击一个按钮,该按钮将打开他们的相机并显示其输出。在浏览器(即 Chrome)上访问摄像头时,我可以通过以下代码访问用户的系统摄像头:

索引.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>video app</title>
  </head>



  <body>
    <!-- HTML DISPLAY CODE -->
    <video id="video" src=""></video>
    <button onclick="openCamera()">start recording</button>

    <!-- JS LOGIC -->
    <script src="index.js"></script>
  </body>
</html>

index.js

 function openCamera() {
    const constraints = {
        video: true,
        audio: false
      }
    navigator.mediaDevices.getUserMedia(constraints)
      .then(mediaStream => {
        var video = document.querySelector("video");
        video.srcObject = mediaStream;
        video.onloadedmetadata = function(e) {
          video.play();
        };
      })
      .catch(error => {
        console.log(error.name + ":" + error.message);
      })
  
  }

当将相同的脚本作为 Outlook 插件运行时(在 Script Lab 上以及运行本地 npm 开发服务器),对摄像头的请求会直接进入 catch 块,甚至无需提示用户许可。这是输出:

PermissionDeniedError: null

我的问题是:如何更改上述代码以通过 Outlook-Addin 启用相机功能

JSFiddle 说明了我的预期结果:

4

1 回答 1

1

此错误是由于用于运行加载项的基础浏览器控件的限制。我相信 Outlook 使用的是 Internet Explorer 或 Microsoft Edge(不基于 Chromium)。当您的配置中 Outlook 使用新的基于 Chromium 的 Edge 浏览器运行您的加载项时,您不应收到此错误。可以在此处找到有关 Outlook 加载项的配置/浏览器的文档。

于 2020-12-05T01:16:47.903 回答