我调整了一个库,通过用户的麦克风录制MP3音频。如果用户允许或拒绝对麦克风的访问请求,我很好,但我注意到,这MDN says:getUserMedia - 如果用户别无选择,该怎么办?
注意,有可能返回的承诺没有解决 也没有拒绝,因为用户不需要做出选择。
但似乎没有说什么,如果有的话,我可以做到“无选择”行动。如果用户只是退出对话框,或者在没有做出选择的情况下模糊了对话框,我可以捕捉并调整我的UI吗?
这里是我当前的代码:
navigator.mediaDevices.getUserMedia({audio: true}).then(function(stream) {
build_ui();
startUserMedia(stream);
}).catch(function(e) { //<-- doesn't fire if no choice made
cfg.no_device_callback && cfg.no_device_callback(e);
});
我想你可以使用承诺的“拒绝”方法来捕捉,如果错误不被抛出。 –
但是,这只是它 - 如果用户别无选择,承诺是*不*被拒绝。 – Utkanos
我无法想象用户的情况在5分钟内没有选择,所以如果用户在X分钟内没有选择,您可以开始超时手动拒绝。 –