iframe 中的 AudioContext 跨域阻塞

AudioContext cross domain blocking in iframe

虽然我只响应点击播放音频,但我会在脚本加载时初始化 AudioContext 和缓冲区等。

在移动 Chrome 57.0.2987.132 中,控制台在从 iframe 加载时显示以下警告:

An AudioContext in a cross origin iframe must be created or resumed from a user gesture to enable audio output.

为了让音频正常工作,我在第一次点击时重新创建了 AudioContext。有没有办法在第一次点击时简单地激活现有的 AudioContext?也可以检测当前音频是否被屏蔽吗?

参考文献:

AudioContext.state 会告诉您它是 "running" 还是 "suspended"。如果它是 "suspended",请从用户手势内部调用 AudioContext.resume(),它应该会为您启动它(无需重新创建状态)。