В зависимости от типа воспроизводимого медиа и других событий, подключенных к экземпляру JW-плеера, событие onTime запускается несколько раз в секунду и сообщается многочисленным десятичным знакам.
Поэтому очень маловероятно, что «позиция» всегда будет ровно 3 (это то, что вы эффективно говорите со следующим: «== & '===').
Было бы более надежным использовать «> =»:
playerInstance.on('time', function(x) {
if (x.position >= 3){
playerInstance.pause();
}
});
Однако, это как-это будет означать, что игрок не сможет играть за 3 секунды, поэтому в зависимости от ваших потребностей, вы также может потребоваться включить дополнительную логику, чтобы удовлетворить следующие:
- продолжает играть после точки паузы
- что делать, если пользователь ищет за 3 секунды
- ищет назад и затем достигает точки паузы во второй раз
- и т.д ...
Вероятно, лучшим решением было бы преобразовать «позицию» до целого значения и сделать прямое сравнение. Это означает, что вам не понадобится логика для обработки прогресса после точки паузы. Однако вам понадобится логика, чтобы убедиться, что она была приостановлена только один раз в точке паузы. Для этого:
playerInstance.on('time', function(x){
if(parseInt(x.position,10)===3){
if(!playerInstance["pauseOnce"]){
playerInstance["pauseOnce"]=true;
playerInstance.pause();
}
}else{
playerInstance["pauseOnce"]=false;
}
});
Я думаю, это было бы хорошим решением. Я пытался с> =, но не думал о включении дополнительной логики.Я думал, что точное положение сделает трюк. Но его работы случайны. – slk500
Думая об этом дальше, я представил обновление с лучшим решением. – jherrieven