今天遇到一个怪异的问题,有个Audio元素,在执行play函数时,声音并没有正常播放,打开控制台后有报错:
Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first.
但开启控制台之后,刷新页面,音频播放正常。根据控制台的报错,似乎是浏览器限制了音频的自动播放动作,而音频恰恰就是在页面加载完毕后,由js脚本控制播放的。
试探性的使用timeout尝试了一下,果然,如果延迟500ms执行播放音频的动作,就不会再有报错,但如果延迟时间间隔太短,仍然会报错。
这应该是Chrome限制自动播放的策略导致的。