以下代码在我的桌面浏览器中有效但在我的iPhone上的Safari中无效,它确实显示alert()但不播放音频。我做错了什么?
soundManager.url = '/assets/backend/swf/';
soundManager.preferFlash = false;
soundManager.useHTML5Audio = true;
soundManager.onready(function(){
function playSong(){
soundManager.createSound({
id: 'song_<?=$song->ID?>',
url: '/backend/song/play/<?=$song->ID?>',
type: 'audio/mp3'
}).play();
}
$('#play').click(function(){
alert('playSong()');
playSong();
});
});
答案 0 :(得分:1)
从我所看到的情况来看,iPhone不喜欢“自动播放”的声音,而且它们需要通过用户互动来播放声音。
在你的情况下,iOS浏览器一定不喜欢你正在创建声音然后立即播放它。
尝试使用此变体,看看它是否适合您:
soundManager.url = '/assets/backend/swf/';
soundManager.preferFlash = false;
soundManager.useHTML5Audio = true;
soundManager.onready(function(){
// Create the sounds here (don't call play)
soundManager.createSound({
id: 'song_<?=$song->ID?>', // It is not cool to put PHP here, read below!
url: '/backend/song/play/<?=$song->ID?>',
type: 'audio/mp3'
});
$('#play').click(function(){
var soundId = 'song_<?= $song->ID ?>';
soundManager.play(soundId);
});
});
作为旁注:我建议你以这种方式混合使用JS和PHP。检查这个SoundManager2示例,了解如何“扩充”常规MP3链接,如下所示:
<a href="blabla.mp3">Click here to play blabla</a>
进入播放MP3 onclick的东西: SoundManager2 documentation
问候并祝你好运!