如何从JWPlayer实例中删除事件处理程序
How to remove a event handler from JWPlayer instance?
我正在使用JWPlayer。设置播放器后,我需要添加监听器到一些事件,给一个例子,我听events.JWPLAYER_MEDIA_TIME
这样:
jwplayer('video-container').onTime(this.onTimeHandler);
过了一会儿,我需要删除这个事件监听器,阅读文档我找不到任何解决方案。
查看代码,似乎不可能删除事件侦听器:当您调用onTime
(或任何其他设置事件处理程序的方法)时,回调将被推入数组,因此第二次调用它不会覆盖以前的侦听器,而只是向数组添加一个新的侦听器。
当监听器不再需要执行任务时,可以设置一个标志:
onTimeHandler : function() {
if (! this.handleOnTimeEvents)
return;
...
}
我是这样处理的。创建一个伪函数,其唯一目的是作为一个指针。我关心的是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);
如果有人看到这个问题,请告诉我,它似乎在开发环境中按需工作
相关文章:
- jQuery使用.of()删除事件处理程序时出现的问题
- 如何删除DOM事件处理程序的重复JavaScript代码
- AngularJS:如何从指令添加的元素中删除事件处理程序
- 删除节点的内联事件处理程序/属性
- 从 html5 画布中删除所有事件处理程序
- 删除节点后的 JavaScript 事件处理程序
- PhotoSwipe JS库,删除特定的事件处理程序
- 跨浏览器事件处理程序(添加、删除、触发器)
- Javascript:在删除相关HTML时,我应该删除一个事件处理程序吗
- 使用jQuery.off或.unbind删除和添加滚动事件处理程序
- 正确删除匿名函数事件处理程序
- 如何在不引用处理程序函数的情况下删除事件处理程序
- 如果我不删除事件处理程序'我不知道用于创建此处理程序的原始选择器
- 如何删除事件处理程序文档.打开
- 更改DIV内的文本将删除事件处理程序
- 从Greasemonkey删除事件处理程序
- 如何从JWPlayer实例中删除事件处理程序
- 如何从视图中删除事件处理程序
- 是否需要手动删除事件处理程序
- 我应该在removeChild之前从元素中删除事件处理程序吗?