使用setInterval

时间:2018-06-04 21:34:24

标签: javascript setinterval html5-audio

为什么这适用于Chrome,Firefox和Opera,但不适用于Safari(11.1)? 尝试在Safari中运行它将导致音频文件仅播放一次,没有错误。记录确认setInterval仍在运行。



const sound = new Audio('sound.mp3');
const play = () => sound.play();

const handleClick = () => window.setInterval(play, 500);

const el = document.getElementById('play');
el.addEventListener('click', handleClick);

<!DOCTYPE html>
<html>

<head>
  <script src="index.js" defer></script>
</head>

<body>
  <button id='play'>Play</button>
</body>

</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

Safari 11包含了一项新功能,需要用户互动才能播放任何媒体。这意味着,如果您按照以下声明执行播放,音频将播放:

const handleClick = play;

点击和播放之间的任何事件都不会播放音频。就像你的情况中的setInterval一样。

Google Chrome 64中也引入了此功能。

More info.