Bar*_*art 6 html javascript iphone jquery ios
在iOS浏览器(safari)中,事件触发的声音被阻止(点击 - 一切正常)有没有人知道一个可行的解决方案 - 如何避免它?
示例:ajax聊天消息到达,iphone\ipad发出声音(此时浏览器处于打开状态且活动应用程序)
谢谢您的回答
这些事件被阻止的原因是为了避免任何非用户启动的数据加载(请阅读Apple的解释).这意味着你需要找到一种方法让用户触发加载音频数据.在应用程序运行之前,让用户与页面进行交互.初始化可以通过简单的"touchstart"触发document.body或用户单击以启动应用程序的按钮触发(例如:让用户单击"开始聊天"按钮).在该事件的处理程序中,将音频文件加载到变量并使其可用于应用程序的其余部分.然后在你的ajax成功处理程序中,播放声音:
HTML
<a id="initbutton">Initialize</a>
Run Code Online (Sandbox Code Playgroud)
JS
var sound;
$('#initbutton').one('click',function(ev){
sound = new Audio("http://soundjax.com/reddo/61767^ding.mp3");
sound.load(); // load the audio data
sound.volume=1; // make sure the volume is all the way up, though this doesn't work on iOS
});
$.ajax(...,function(data,status,jqxhr){ //presumably this will be triggered by some other code
if(sound){
sound.play()
}
});
Run Code Online (Sandbox Code Playgroud)
请参阅此处的示例.首先尝试初始化音频,然后启动ajax循环,反之亦然.在音频加载之前它将保持静音.
这已经在iPad 2和iPad 4S上的iOS 5.1中进行了测试.我不知道它是否适用于其他设备或旧版iOS.
我不知道有任何其他方法可以使它发挥作用.
rgv*_*ley -2
最好的选择是使用具有 JavaScript API 的媒体播放器。就像是:-
http://www.schillmania.com/projects/soundmanager2/
这允许您通过 javascript 播放文件,并且它使用 html5 或 flash,因此 Safari 无法阻止触发它的事件。
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |