我正在玩 YouTube 嵌入视频。我希望播放器在第三秒暂停。下面的代码:
playerInstance.on('time', function(x) {
if (x.position === 3){
playerInstance.pause();
}
});
但它并不每次都有效。有时它有效,有时则无效。这完全是随机的。为什么?
根据正在播放的媒体类型和挂钩到 JW 播放器实例的其他事件,“onTime”事件每秒会触发多次,并报告到许多小数位。
因此,“位置”不太可能恰好是 3(这就是您用以下内容有效地表达的意思:'==' & '===')。
使用 '>=' 会更健壮:
playerInstance.on('time', function(x) {
if (x.position >= 3){
playerInstance.pause();
}
});
然而,这意味着玩家将无法玩超过 3 秒,因此根据您的要求,您可能还需要包含额外的逻辑来满足以下需求:
可能更好的解决方案是将“位置”转换为整数值并进行直接比较。这意味着您不需要逻辑来处理超过暂停点的进度。但是,您需要逻辑来确保它仅在暂停点暂停一次。以下是针对此的:
playerInstance.on('time', function(x){
if(parseInt(x.position,10)===3){
if(!playerInstance["pauseOnce"]){
playerInstance["pauseOnce"]=true;
playerInstance.pause();
}
}else{
playerInstance["pauseOnce"]=false;
}
});
在将我的 jwplayer 对象放入变量之前,我遇到了问题。我没有解释,但我敢说,如果你继续使用 jwplayer(); 你可能会有更好的运气。显式调用。希望这会给您带来更一致的结果。也可以尝试使用“==”而不是“===”。你能告诉我们你是如何声明 playerInstance 的吗?
我使用了推荐的声明 - JW Player website Api
“我们鼓励开发人员停止使用 jwplayer() 语法,而是保留对播放器实例的引用。根据 JW Player 7 的设计方式,这实际上会在播放器设置过程中节省几毫秒的时间。”
var playerInstance = jwplayer('container');
//jwplayer('container').pause(); // BAD! :(
playerInstance.pause(); // Good :)
我刚刚用 jwplayer() 声明也用 '==' & '===' 测试了你的解决方案。但它仍然不起作用。
我用我们的 2 声明为你准备了一个小提琴。
http://jsfiddle.net/slk500/rftbtzpr/
谢谢你的帮助!