Javascript 如何跨浏览器正确处理media.play()承诺
我正在尝试使用videojs播放一些音频。由于autoplay在不同浏览器中不可靠,因此有一个建议:Javascript 如何跨浏览器正确处理media.play()承诺,javascript,firefox,promise,media-player,video.js,Javascript,Firefox,Promise,Media Player,Video.js,我正在尝试使用videojs播放一些音频。由于autoplay在不同浏览器中不可靠,因此有一个建议: let audioPlayer = videojs('audio-element'); audioPlayer.ready(function() { var promise = audioPlayer.play(); if (promise !== undefined) { promise.then(function() {
let audioPlayer = videojs('audio-element');
audioPlayer.ready(function() {
var promise = audioPlayer.play();
if (promise !== undefined) {
promise.then(function() {
console.log('AUDIO: Autoplay started!');
}).catch(function(error) {
console.log('AUDIO: Autoplay was prevented.');
// do something to let people start audio manually
});
}
});
这在Chrome和Edge中非常有效,但Firefox似乎永远无法实现这一承诺。使用调试器,我可以看到它的挂起状态,但没有执行任何console.log
如何在Firefox中实现这一点?我会:
promise.then(function() {
// Autoplay started!
}, function(error) {
// Autoplay was prevented.
});