1

以下代码适用于我的桌面浏览器,但不适用于我 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();
    });
});
4

1 回答 1

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 文档

问候和祝你好运!

于 2013-06-03T13:12:47.133 回答