3

我正在使用 jQuery 1.5 和 jPlayer 2.0.0,请忽略这将自动播放音乐的事实,我将在它开始之前提供足够的警告,用户必须按下一个大按钮来启动页面,我会提供一个大的停止按钮。

我希望音频文件开始播放,并在页面准备好并加载音频后调用一个函数。

我有以下 javascript(我已经修改了代码,以便更好地理解它)。

function FemeMusic() {

    FemeMusic.prototype.addMusic = function(actionAfterMusic) {
        $("#jp").jPlayer({
            ready: function() {
                var jPlayerElement = $(this);
                jPlayerElement.jPlayer('setMedia', {
                    mp3: 'aSongByJamesBlunt.mp3'
                });
                jPlayerElement.bind($.jPlayer.event.progress,
                function(event) {
                    if (event.jPlayer.status.seekPercent === 100) {
                        jPlayerElement.jPlayer("play");
                    }
                    if (actionAfterMusic) {
                        actionAfterMusic.call();
                    }
                });
             },
             swfPath: "/flash",
             preload: "auto"
         });
    }
} 

我有这个功能来触发上面的代码。

$(document).ready(function() {
    var femeMusic = new FemeMusic();
    femeMusic.addMusic(killMyself); 
});

我使用了相同的代码,但使用了 $.jPlayer.event.loadeddata 事件,没有 if 语句而不是 $.jPlayer.event.progress,它在某些浏览器中运行良好,但在使用 flash 时不兼容,因为它不触发事件(我在 Firefox 3.5 中也遇到了问题,但我不知道为什么)。以上似乎适用于Firefox

我读了这个

“我建议您改用进度事件并检查:event.jPlayer.status.seekPercent === 100。”

在这篇文章http://groups.google.com/group/jplayer/browse_thread/thread/9dc9736f9d6947bd?pli=1上,作者是

有人有什么建议吗?


编辑

由于没有在 chrome 和 safari 中使用它,我在 Firefox 的新版本 3.6 上进行了测试(我应该首先这样做)并且它按预期工作,尽管在文档中 event.progress id 描述为:

Flash 和 HTML5 浏览器支持的健壮 jPlayer 事件

在上面的链接中,创建者建议使用 event.progress 来解决浏览器问题,我只能假设这是浏览器特定的问题。

不过,很高兴对此有所澄清。

4

2 回答 2

3

来自 jPlayer 的创建者:

所以你的目标是在媒体缓冲后自动播放?

如果你想要简短的答案。忘了它。x-browser 缓冲是一个雷区。正如您所发现的那样,有些人只是忽略它。只需 setMedia 并播放它。

如果你真的想尝试去做。然后播放然后暂停会有所帮助,因为 amedia.play()比 a 更好的 x 浏览器,media.load()即它的操作变化较小。iOS Safari 会完全忽略这个游戏。用户需要点击开始操作的东西,即播放按钮。

最后一点适用于尝试任何形式的自动播放,因此请确保有可用的播放按钮。jPlayer 界面将通过浏览器事件的反馈(即停止)来应对 iOS 不播放的情况。

于 2011-04-19T16:08:11.917 回答
1

在大多数浏览器中,我遇到了带有 flash 和 html5 后端的进度事件的问题。据我所见, timeupdate 事件的效果要好得多。

于 2011-02-15T07:41:22.707 回答