在iPad上伪造"用户启动"<audio>标签

Ale*_*ord 3 tags iphone audio html5 ipad

我知道Apple的文档说<audioiPhone OS上的>标签内的mp3 无法在没有用户干预的情况下播放(他们引用带宽问题,完全合理).但是,是否有人成功伪造用户动作来播放音频?也许使用JavaScript将事件伪装成屏幕外的原生音频控件?我现在正在使用jPlayer,它在桌面Safari上运行良好,但在我的iPad上保持沉默.

我正在iPad上使用WebKit对触摸界面进行原型设计,音频是体验中不可或缺的一部分,所以是的,我确实有理由想要覆盖这个惯例.

我很感激任何帮助.谢谢.

小智 5

我有同样的问题...想要控制从"走开"的声音回放.

我的解决方案是将音频标签放在这样的隐藏DIV中.

<div id="junk" style="display: none">
  <audio id="effect1" src="..." autobuffer="autobuffer" controls="" ></audio>
  <audio id="effect2" src="..." autobuffer="autobuffer" controls="" ></audio>
  <audio id="effect3" src="..." autobuffer="autobuffer" controls="" ></audio>
</div>
Run Code Online (Sandbox Code Playgroud)

然后在我的javascript中,我在播放例程中有这样的代码.

function playEffect(x) {
  var a = document.getElementById('effect' + x);
  if (a && a instanceof Audio) {
    if (a.currentTime) { a.currentTime = 0; }
    a.play();
  }
}
Run Code Online (Sandbox Code Playgroud)

所以...你遵守规则,因为"必需的"UI控件就在那里,但当然它不会干扰网页.在playEffect函数中检查currentTime会"倒退"声音......如果你不这样做,它将不会再次播放.

这适用于iPad和iPhone以及Mac上的Safari.我没有测试IE的合规性.我的页面已与Google Maps API v3集成.