在iPad上伪造“用户启动”<audio>标签</audio>

时间:2010-05-24 01:04:24

标签: iphone audio ipad html5 tags

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

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

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

1 个答案:

答案 0 :(得分:5)

我遇到了同样的问题......希望能够控制“get go”中的声音播放效果。

我的解决方案是将音频标签放在隐藏的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>

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

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

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

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