我创建了一个音频对象,并希望在用户离开窗口时播放它。因此,我的代码如下:
$('body').on('mouseleave', function(){
var audio = new Audio( 'quite-impressed.mp3' )
audio.play()
})
它在Firefox中运行得很好。如果我点击页面,然后将鼠标放在主体之外,它在Chrome中也运行得很好。但是,当我离开鼠标而没有点击页面时,控制台中会显示一个错误,音频也不会播放
未捕获(在承诺中)DOMException:play()失败,因为使用者未先与文件互动。https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
但是,在这个example site中,它在不与页面交互的情况下工作得很好。我如何才能让它成为可能呢?提前感谢。
4条答案
按热度按时间0x6upsns1#
似乎他们使用音频上下文来播放声音。
Chrome几个月前确实回来阻止了AudioContext API,因为很多合理使用没有为这样的限制做好准备,因此被它打破了。
但将于2018年12月发布的M71将重新启用这一限制,您可以在这里阅读相关信息:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio
外包的实时示例,因为Stacksnippets始终被授予用户手势:https://jsfiddle.net/zy3ev8ka/
smtd7mpg2#
试试这个:
window.audio = new Audio( 'quite-impressed.mp3' ) $('body').on('mouseleave', function(){ audio.play() })
rbl8hiat3#
这对我在Chrome 77上很有效:
8e2ybdfx4#
如果您js播放器函数没有运行,且您的代码是正确的,那么这可能会有帮助,您必须允许您的浏览器获取声音文件
只要后藤设置=〉隐私和安全=〉站点设置=〉声音.然后在添加到播放器部分添加您本地url。