我是使用JWPlayer。安装后的球员,我需要侦听器添加到一些事件,给我听events.JWPLAYER_MEDIA_TIME
,像这样的例子:如何从JWPlayer实例中删除事件处理程序?
jwplayer('video-container').onTime(this.onTimeHandler);
一段时间,我需要删除此事件监听器后,读documentation我不能”找到任何解决方案。
我是使用JWPlayer。安装后的球员,我需要侦听器添加到一些事件,给我听events.JWPLAYER_MEDIA_TIME
,像这样的例子:如何从JWPlayer实例中删除事件处理程序?
jwplayer('video-container').onTime(this.onTimeHandler);
一段时间,我需要删除此事件监听器后,读documentation我不能”找到任何解决方案。
Looking at the code,看起来似乎不可能删除一个事件监听器:当您调用onTime
(或任何其他方法来设置事件处理函数)时将回调压入一个数组,所以再次调用它不会' t覆盖先前的侦听器,但只是将新的侦听器添加到数组中。
也许另一种可能是设置一个标志,一旦你的听众不必再执行它的任务:
onTimeHandler : function() {
if (! this.handleOnTimeEvents)
return;
...
}
谢谢@robertklep,这就是我在做atm,但我需要找到一个完全删除监听器的方法,如果向onTime添加多个监听器(每秒调用大约10次)并且不断添加将阻止代码执行的全局标志,它看起来并不漂亮。正如所说的'it_works!= is_pretty';)(投票赞成enfort给出一个工作解决方案) – 2013-05-02 11:20:38
这里是我如何处理它。 创建一个伪函数,其唯一目的是成为一个指针。我是用的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);
,请告诉我,似乎需要在开发环境中工作
你试过'jwplayer('video-container')。onTime(null);'? – yogi 2013-05-02 09:49:08
hi @yogi,它不起作用。 'jwplayer.onTime()'绑定一个函数到一个事件,我找不到一个方法来删除这个绑定... – 2013-05-02 10:00:30