我想要的是什么:
我的代码:
jwplayer().onTime(function(evt) {
if (evt.position > ([evt.duration] * (85/100)) && x!=1) {
loadXMLDoc();
var x = 1;
}
});
由于
答案 0 :(得分:2)
问题是每次都会重置x
jwplayer().onTime(
(function () {
var check=true;
return function(evt) {
if (check && evt.position > ([evt.duration] * (85/100))) {
loadXMLDoc();
check=false;
}
}
})()
);
答案 1 :(得分:0)
如果你希望每个页面加载时该函数只运行一次,另一种方法是创建一个自杀的函数。
(function (player) {
var checkAndLoad = function(evt) {
if (evt.position > (evt.duration * (85/100))) {
loadXMLDoc();
checkAndLoad=function(evt){};
}
};
player.onTime(function(evt) {checkAndLoad(evt);});
})(jwplayer());
您需要匿名包装器提供的额外间接,因为onTime
获取自己的事件侦听器副本,因此覆盖checkAndLoad
不会直接影响已注册的侦听器。
如果您希望侦听器多次运行,请注册在适当的事件中恢复checkAndLoad
的其他侦听器(例如,用户寻求回到开头附近)。
(function (player) {
var timeListener;
function checkAndLoad(evt) {
if (evt.position > (evt.duration * (85/100))) {
loadXMLDoc();
timeListener=function(evt){};
}
}
timeListener = checkAndLoad;
player.onTime(function(evt) {timeListener(evt);});
player.onSeek(function(evt) {
if (evt.position < (evt.duration * (15/100))) {
timeListener=checkAndLoad;
}
});
player.onComplete(function (evt) {timeListener=checkAndLoad;});
})(jwplayer());
最好取消注册侦听器,但JW Player API当前不公开removeEventListener方法。