为什么这适用于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;
答案 0 :(得分:1)
Safari 11包含了一项新功能,需要用户互动才能播放任何媒体。这意味着,如果您按照以下声明执行播放,音频将播放:
const handleClick = play;
点击和播放之间的任何事件都不会播放音频。就像你的情况中的setInterval一样。
Google Chrome 64中也引入了此功能。