我知道Apple的文档说<audio
&gt;内的mp3没有用户干预,iPhone OS上的标签无法播放(它们引用带宽问题,完全合理)。但是,是否有人成功伪造用户动作来播放音频?也许使用JavaScript将事件伪装成屏幕外的原生音频控件?我现在正在使用jPlayer,它在桌面Safari上运行良好,但在我的iPad上保持沉默。
我正在使用iPad上的WebKit对触摸界面进行原型设计,音频是体验中不可或缺的一部分,所以是,我确实有理由想要覆盖这个惯例。< / p>
我很感激任何帮助。感谢。
答案 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集成。