我正在阅读有关MediaDevices.getUserMedia()
的MDN文章,他们有一些针对有点特殊的浏览器的polyfill示例。你可以找到它here。
我使用的是Typescript,我得到了一些奇怪的错误。我是新手稿的新手,所以我可能会遗漏一些东西。这部分:
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
TS告诉我,mediaDevices
属性的重新分配是一个错误,因为它是一个只读属性或常量。但如果它未定义,它怎么可以只读?我很困惑。
我使用的是Typescript 2.3.4和awesome-typescript-loader
用于Webpack。
答案 0 :(得分:1)
问题是navigator.mediaDevices
在实现它的浏览器中实际上是只读的。所以TypeScript是正确的,表明你可以分配给它。
但是,由于您将填充程序用于navigator.mediaDevices
undefined
可能navigator
并且TypeScript似乎不理解的旧浏览器,您只需创建let navigatorCopy = navigator as any;
if (navigatorCopy.mediaDevices === undefined) {
navigatorCopy.mediaDevices = {};
}
的无类型副本即可添加polyfill:
checkServerTrusted