【发布时间】:2015-10-07 00:52:44
【问题描述】:
我使用来自 (https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia) 的以下代码:
navigator.mediaDevices = navigator.mediaDevices || ((navigator.mozGetUserMedia || navigator.webkitGetUserMedia) ? {
getUserMedia: function(c) {
return new Promise(function(y, n) {
(navigator.mozGetUserMedia || navigator.webkitGetUserMedia).call(navigator, c, y, n);
});
}
} : null);
设置麦克风以供使用。这在 Chrome (v45) 和 Firefox (v36) 中效果很好,但在 Firefox (v41) 中我在控制台中收到以下错误:
Error: setting a property that has only a getter
RecorderSvc.initAudio@http://fakewebsite.com/js/services/recorder.js:61:1
我可以通过以下方式解决问题:
if (navigator.mozGetUserMedia || navigator.webkitGetUserMedia) {
navigator.mediaDevices.getUserMedia = function(c) {
return new Promise(function(y, n) {
(navigator.mozGetUserMedia || navigator.webkitGetUserMedia).call(navigator, c, y, n);
});
}
}
但这在 Chrome 或 Firefox (v36) 中不起作用。
- 在 Chrome 中,仅定义了 navigator.webkitGetUserMedia。
- 在 Firefox (v36) 中,仅定义了 navigator.mozGetUserMedia。
- 在 Firefox (v41) 中,navigator.mozGetUserMedia 和 navigator.mediaDevices 已定义。
我不知道如何在不破坏其中一个浏览器的情况下解决此问题。有什么想法吗?
【问题讨论】:
标签: firefox getusermedia