我正在使用 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/