我正在使用JWPlayer。设置播放器之后,我需要为某些事件添加侦听器,举个例子我听events.JWPLAYER_MEDIA_TIME
如下:
jwplayer('video-container').onTime(this.onTimeHandler);
过了一段时间我需要删除此事件监听器,阅读documentation我找不到任何解决方案。
答案 0 :(得分:8)
Looking at the code,似乎无法删除事件侦听器:当您调用onTime
(或任何其他设置事件处理程序的方法)时,会将回调推送到数组上,因此第二次调用它不会覆盖以前的侦听器,只是向数组添加一个新的侦听器。
一旦你的监听器不再需要执行任务,也许可以设置一个标志:
onTimeHandler : function() {
if (! this.handleOnTimeEvents)
return;
...
}
答案 1 :(得分:0)
以下是我处理它的方式。 创建一个伪函数,其唯一目的是成为一个指针。我关注onComplete事件,所以我编写了如下代码:
function createJWPlayer(surl, stitle, autos, pw, ph) {
jwplayer("videocontainer").setup({
file: surl,
title: stitle,
width: pw,
height: ph,
autostart: autos,
stretching: "uniform",
skin: "/Scripts/JWPlayer/six.xml"
});
jwplayer().onComplete(function (e) {
jwcompleteevent(e);
});
}
function jwcompleteevent(e) {
// method to remain empty, sole purpose is to provide a pointer for the handler
}
然后在我创建它的函数中,我写了这个:
var mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA;
createJWPlayer(selobj.Upath, ti.TestTitle, true, "100%", "100%");
jwcompleteevent = mcomplete;
如果我需要加载其他视频,我会这样做
mcomplete = (selobj.HasQ == false) ? InterActNoTimeAutoS : jwpCompleteInterA;
jwcompleteevent = mcomplete;
loadJwPlayerUrl(selobj.Upath, true);
如果有人发现此问题,请告诉我,它似乎在开发环境中按需工作