javascript - 如何使用 jplayer 获取进度事件

标签 javascript jquery html jplayer

我正在使用 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描述为:

A robust jPlayer event supported by Flash and HTML5 browsers

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

不过,如果能对此进行一些澄清,那就太好了。

最佳答案

来自 jPlayer 的创建者:

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

如果你想要简短的答案。忘了它。 x-browser 缓冲是一个地雷 field 。正如您发现的那样,有些人只是忽略它。只需设置媒体并播放即可。

如果你真的想尝试去做。然后播放然后暂停会有所帮助, 因为 media.play() 是比 media.load() 更好的 x 浏览器,即它的 操作变化较小。 iOS Safari 会完全忽略播放 尽管。用户需要点击一些东西来启动 操作即播放按钮。

最后一点适用于尝试任何形式的自动播放,因此请确保 是可用的播放按钮。 jPlayer 界面将应付 iOS 不 通过浏览器事件的反馈进行播放,即停滞。

关于javascript - 如何使用 jplayer 获取进度事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970207/

相关文章:

javascript - *安全地将 HTML5 应用程序连接到服务器上的数据库

javascript - 按钮单击 Document.Ready() MVC 时出错

jquery - 可调整大小的 div 内的 div 内的文本溢出 float div

javascript - 给定 "use strict"行为,是否有面向 future 的方法向 native 浏览器对象添加属性?

javascript - 创建加载外部 html 文件的自定义 Html 标记

javascript - 如果将包含 Controller 代码的 javaScript 动态添加到 HTML dom,则 Controller 不会加载

javascript - 将函数 random() 与 sass 一起使用来选择随机变量

javascript - jQuery 对话框 : how to prevent closing the dialog + an extra get request!

jquery - IE 中的可编辑性能

html - 缩放图像矩阵直到一定宽度然后将它们包裹起来