navigator.mediaDevices не определен только в AngularJs Contraller - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь получить доступ к javasctipt mediaDevices внутри AngularJs контроллера, это код моего контроллера:

(function () {
    'use strict';

    angular.module('app')
        .controller('AssistenzaCtrl', ['$scope', 'largeTabController', 'readSelect', '$mdDialog', '$interval', '$http', '$window', AssistenzaCtrl])

    function AssistenzaCtrl($scope, largeTabController, readSelect, $mdDialog, $interval, $http, $window ) {

        $scope.init = function () {
            if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
              console.log("enumerateDevices() not supported.");
            } 
            navigator.mediaDevices.enumerateDevices()
            .then(function(devices) {
              devices.forEach(function(device) {
                console.log(device.kind + ": " + device.label +
                            " id = " + device.deviceId);
              });
            })
            .catch(function(err) {
              console.log(err.name + ": " + err.message);
            });             
        }   
    }
})();   

Если я проверяю Мой контроллер с помощью инструментов F12, navigator.mediaDevices не определен, но мой Браузер поддерживает mediaDevices, потому что, если я запускаю тот же код на отдельной странице без AngularJs, я могу успешно перечислить свои устройства.

Есть ли проблемы совместимости между AngularJs и getUserMedia ()?

1 Ответ

1 голос
/ 27 апреля 2020

Проблема была связана с использованием протокола http вместо od https. Браузер включает getUserMedia только для https или соединений с localhost.

Я надеюсь, что этот ответ может кому-нибудь помочь.

...