Как обойти эту ошибку script5007, неспособную получить свойство getDisplayMedia неопределенной или нулевой ссылки в IE?

Я делаю скрипт, чтобы узнать, поддерживает ли мой браузер совместное использование экрана. Мой скрипт работает во всех браузерах (Chrome, Opera, Firefox, Edge, Safari), кроме Internet Explorer, и я не знаю, в чем проблема.

Можете ли вы дать мне ответ, пожалуйста

var getDisplayMedia;
    // Screen sharing is supported by the browser 
    if (navigator.mediaDevices.getDisplayMedia || navigator.getDisplayMedia){
        getDisplayMedia = "O";
    }else {
        getDisplayMedia = "N";
    }
    console.log(getDisplayMedia);

В Chrome, Opera, Firefox, Edge, Safari он возвращает O или N. но в IE получил эту ошибку: script5007 не удалось получить свойство getDisplayMedia неопределенной или нулевой ссылки

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
0
1 053
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно разделу совместимость с браузером документации MediaDevices, он не поддерживается в IE.

Я предлагаю проверить navigator.userAgent на indexOf("MSIE") перед проверкой свойств mediaDevices.

Да, тогда он должен установить для getDisplayMedia значение «N». но есть script5007, который не может получить свойство getDisplayMedia неопределенной или нулевой ссылки. Значит мой скрипт не работает

Be Weria 22.05.2019 12:42

@BeWeria Я обновил ответ, указав потенциальное обходное решение.

Ezra 22.05.2019 12:43

В IE есть мой пользовательский агент: «Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) как Gecko». indexof("MSIE") вернет false

Be Weria 22.05.2019 12:45

@BeWeria Для IE 11 вам нужно использовать регулярное выражение для соответствия /Trident.*rv\:11\./. Извините, это немного многословно, но я не сижу за компьютером, чтобы попробовать что-нибудь еще. Реквизиты для этот ответ для сопоставителя

Ezra 22.05.2019 12:49

@BeWeria Да, всегда применяйте более простое решение!

Ezra 22.05.2019 12:51
Ответ принят как подходящий

Вам нужно проверить, что navigator.mediaDevices существует, прежде чем проверять одно из его свойств.

var getDisplayMedia;
// Screen sharing is supported by the browser 
if (navigator.mediaDevices && navigator.mediaDevices.getDisplayMedia || 
    navigator.getDisplayMedia
){
    getDisplayMedia = "O";
}else {
    getDisplayMedia = "N";
}

console.log(getDisplayMedia);

Другие вопросы по теме