我使用(https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)下面的代碼:與getUserMedia火狐V41問題沒有看到Chrome或Firefox V36
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
[email protected]://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都已定義。
我不知道如何解決這個問題,而不會破壞其中一個瀏覽器。有任何想法嗎?
這是一個有點hokey,但它的作品。感謝Cory! – JulieMarie
這段代碼覆蓋了擁有它的瀏覽器的原生'navigator.mediaDevices.getUserMedia'功能,這並不是很好。另外,請注意,「navigator.mediaDevices.getUserMedia」無法在Chrome中運行,正如https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia中所述。您應該使用[adapter.js](https://github.com/webrtc/adapter/blob/master/adapter.js)。 – jib