音频自动播放在Mozilla、Microsoft Edge和旧的Google Chrome中也可以使用,但在新的Google Chrome中却不能使用。
他们已经阻止了自动播放。有没有办法让它在谷歌Chrome音频自动播放?
解决方案#1
我在这里的解决方案是创建一个iframe
<iframe src="audio/source.mp3" allow="autoplay" style="display:none" id="iframeAudio">
</iframe>
对于非chrome浏览器,还有audio
标签
<audio autoplay loop id="playAudio">
<source src="audio/source.mp3">
</audio>
在我的脚本
中
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
if (!isChrome){
$('#iframeAudio').remove()
}
else {
$('#playAudio').remove() // just to make sure that it will not have 2x audio in the background
}
解决方案#2:
根据@Leonard的说法,还有另一种解决方法
创建一个不播放任何内容的iframe
,以便在第一次加载时触发自动播放。
<iframe src="silence.mp3" allow="autoplay" id="audio" style="display: none"></iframe>
mp3文件静音的好来源。mp3
然后安心播放你的真实音频文件。
<audio id="player" autoplay loop>
<source src="audio/source.mp3" type="audio/mp3">
</audio>
就我个人而言,我更喜欢解决方案2,因为它是一种更干净的方法,不太依赖JavaScript。
2019年8月更新
解决方案#3
作为替代方案,我们可以使用
对于Firefox来说,音频自动播放似乎正在工作,因此我们不需要
// index.js
let audioPlaying = true,
backgroundAudio, browser;
browser = navigator.userAgent.toLowerCase();
$('<audio class="audio1" src="audio.mp3" loop></audio>').prependTo('body');
if (!browser.indexOf('firefox') > -1) {
$('<embed id="background-audio" src="audio.mp3" autostart="1"></embed>').prependTo('body');
backgroundAudio = setInterval(function() {
$("#background-audio").remove();
$('<embed id="background-audio" src="audio.mp3"></embed>').prependTo('body');
}, 120000); // 120000 is the duration of your audio which in this case 2 mins.
}
此外,如果您有音频切换事件,请确保删除创建的
注意:切换后,它将从开始重新启动,因为
$(".toggle-audio").on('click', function(event) {
audioPlaying = !audioPlaying;
$("#background-audio").remove();
clearInterval(backgroundAudio);
if (audioPlaying){
$(".audio1").play();
// play audio
}
else {
$(".audio1").pause();
}
现在确保隐藏这些
audio, embed {
position: absolute;
z-index: -9999;
}
注意:diplay:none
和可见性:hidden
将使
在chrome中使用音频标签的自动播放功能有一个非常巧妙的技巧。
添加
<iframe src="silence.mp3" allow="autoplay" id="audio"></iframe>
而silence.mp3
只有0.5秒的沉默。
这
<audio id="player" autoplay controls><source src="0.mp3" type="audio/mp3"></audio>
之后工作。
Chrome注意到已经播放了一个声音,并允许自动播放音频标签。
截至2018年4月,Chrome的自动播放政策发生了变化:
“Chrome的自动播放策略很简单:
在以下情况下,允许自动播放声音:
而且
Chrome的开发者网站提供了更多信息,包括一些编程示例,可在此处找到:https://developers.google.com/web/updates/2017/09/autoplay-policy-changes