我正在玩YouTube嵌入视频。我希望玩家暂停第三秒。代码如下:
playerInstance.on('time', function(x) {
if (x.position === 3){
playerInstance.pause();
}
});
但它每次都在工作。有时它有效,有时它不起作用。它完全是随机的。为什么?
答案 0 :(得分:1)
根据正在播放的媒体类型和连接到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;
}
});
答案 1 :(得分:0)
在将jwplayer对象放入变量之前,我遇到了问题。我没有解释,但如果你继续使用jwplayer(),我会冒险你可能会有更好的运气;明确打电话。希望这能为您提供更一致的结果。也许可以尝试'=='而不是'==='。你能告诉我们你是如何宣布玩家实例的吗?
答案 2 :(得分:0)
我使用了推荐声明 - JW Player website Api
“我们鼓励开发人员停止使用jwplayer()语法,而是保留对播放器实例的引用。根据JW Player 7的设计方式,这实际上可以在播放器设置期间节省几毫秒的时间。”< / p>
var playerInstance = jwplayer('container');
//jwplayer('container').pause(); // BAD! :(
playerInstance.pause(); // Good :)
我刚用jwplayer()声明测试了你的解决方案'=='&amp; '==='。但它仍然不起作用。
我用我们的2声明为你准备了一个小提琴。
http://jsfiddle.net/slk500/rftbtzpr/
感谢您的帮助!