在iOS 5 HTML5应用中通过JavaScript事件播放声音

5

在新版iPad的移动Safari iOS 5上开发HTML 5应用程序,当收到“dispatch”时显示用户提示。为了引起用户的注意,当调用alert函数时会播放以下声音:

snd.src = snd.src;
snd.play();

很不幸,苹果改变了播放声音的方法。有人知道iOS 5中是否有更新来修复这个问题吗?
我已经进行了大量的研究,并且已经意识到在iOS 3中的旧的“hack”不再适用。
1个回答

15

在iOS5中,声音需要用户输入。您可以使用“不可见”按钮初始化声音,在应用程序的初始化后按一次后按钮即消失。一旦触发,您就可以通过编程方式调用snd.play()。这有点像欺骗,但希望能有所帮助!

Javascript:

if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {

    document.write('<a id="init" ontouchstart="javascript:sndInit();"></a>');

    function sndInit(){
    snd.play();
    snd.pause();
    document.getElementById('init').style.display = 'none';
    }
}

CSS:

<style>
    #init {
        position: absolute;
        margin-right: 0px;
        margin-left: 0px;
        margin-top: 0px;
        margin-bottom: 0px;
        z-index: 1000;
    }
</style>

此外,Remy Sharp提供了一些关于使用音频精灵的技巧,在这里可以找到。


我已经在jsfiddle上发布了一个演示 - 它还没有工作,因为snd.src尚未定义。有没有办法使这个例子正常工作?http://jsfiddle.net/esn8C/ - Anderson Green
这个例子只是为了解决iOS的用户输入要求而设计的。我建议查看http://www.position-absolute.com/articles/introduction-to-the-html5-audio-tag-javascript-manipulation/,以了解如何使用javascript控制HTML5音频的详细介绍。 - Josiah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接