在Chrome 71台式机上强制自动播放音频元素失败

时间:2019-01-24 23:40:42

标签: google-chrome audio autoplay

我正在向网站添加音频元素,并且应该在页面加载时自动播放。在Chrome 71中,在某些情况下会存在updates which should disable autoplay音频和视频(如果用户未与该页面进行交互,或者该页面不是用户经常访问的页面并允许播放视频等)。 chrome://media-engagement/显示chrome用户在不同网站上的参与度得分(基于他们访问和观看视频的次数)。

通常,用户必须先登录才能看到我添加了该元素的页面,因此在这种情况下,它应该可以自动播放而不会出现问题。我正在尝试找出如何造成Chrome阻止自动播放的情况,因此我可以测试在阻止音频后重新启动音频的方法。

问题是,我似乎无法使用Chrome来阻止自动播放。到目前为止,我已经尝试过(除非另有说明,否则都在Mac上):

  • 登录后,直接导航至该网址(硬刷新/清除缓存后在同一窗口中,并在新窗口中)
  • 以其他chrome用户和访客用户的身份访问(两者都没有该网站的媒体参与度得分)
  • chrome:// flags#autoplay-policy 设置为需要激活文档用户。并测试以上内容(似乎已失效)
  • 在从未访问过该站点的其他人的计算机上测试以上所有内容
  • 在Windows的BrowserStack Chrome 71上测试以上所有条件

目前尚不确定该怎么做,有人知道如何最好地迫使Chrome阻止该音频自动播放,或者造成这种情况发生?

这是音频元素的html:

<div id="intro_player_wrapper">
  <audio id="intro_player" controls="controls">
    <source id="audio_intro_mp3_src" type="audio/mpeg" src="audio_source.mp3" /></source>
    <source id="audio_intro_wav_src" type="audio/wav" src="audio_source.wav" /></source>
  </audio>
</div>

以下是开始自动播放的javascript:

var autoplay_interval = window.setInterval(function() {
    var promise = $("#intro_player").get(0).play();
    if (promise !== undefined) {
        promise.then(_ => {
            intro_audio_played = true;
            clearInterval(autoplay_interval);
        }).catch(error => {
            console.log("Autoplay was prevented.");
        });
    }
}, 1000);

0 个答案:

没有答案