Обновленный ответ: getDisplayMedia
теперь правильный API для совместного использования экрана, поддерживаемый всеми основными браузерами уже пару лет (в Firefox с 66+). Итак, правильный API:
await navigator.mediaDevices.getUserMedia({video: true});
И правильный способ определения функции:
console.log(navigator.mediaDevices &&
"getDisplayMedia" in navigator.mediaDevices);
Это false
на мобильных устройствах, где отсутствует поддержка (Firefox для Android и Chrome для Android).
Это также false
по небезопасным http
(не https) соединениям, где navigator.mediaDevices
сам по себе undefined
, объект, который считается мощной функцией.
Ответ для действительно старого Firefox ‹66:
⚠️ Не полагайтесь на этот ответ в новых браузерах, поскольку это ограничение исчезнет!
способ определить, поддерживает ли браузер {mediaSource: 'screen'}?
Педантичный ответ таков: поддерживается ли ограничение mediaSource
:
console.log(!!navigator.mediaDevices.getSupportedConstraints().mediaSource);
К сожалению, mediaSource
нестандартен, и реализовано только в Firefox. На момент написания этой статьи Firefox является единственным браузером, который поддерживает совместное использование экрана без подключаемого модуля.
В Chrome есть другой нестандартный API, использующий chromeMediaSource
, доступный в качестве подключаемого модуля, с использованием старого синтаксиса ограничений, но он (справедливо) не отображается в новом getSupportedConstraints
.
Это все еще немного беспорядок. Долгосрочные браузеры могут в конечном итоге реализовать _ 14_.
person
jib
schedule
07.09.2017
mediaSource
и делает проверку со стороны jib бесполезной? (Если вы не находитесь в старом белом списке ...) - person philnash   schedule 07.09.2017