Как обойти эту ошибку 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.info(getDisplayMedia);

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
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.info(getDisplayMedia);

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