JW Player 7 在精确时间暂停
JW Player 7 pause on precise time
我正在玩弄 YouTube 嵌入视频。我希望播放器在第三秒暂停。代码如下:
playerInstance.on('time', function(x) {
if (x.position === 3){
playerInstance.pause();
}
});
但并不是每次都有效。有时有效,有时无效。这完全是随机的。为什么?
在将我的 jwplayer 对象放入变量之前,我 运行 遇到过问题。我没有解释,但我敢打赌,如果您继续使用 jwplayer(); ,您可能会有更好的运气;显式调用。希望这能给你带来更一致的结果。也可以尝试使用“==”而不是“===”。你能告诉我们你是如何声明 playerInstance 的吗?
我使用了推荐的声明 - JW Player website Api
"We encourage developers to stop using the jwplayer() syntax, and instead keep a reference to the player instance. Based on how JW Player 7 is engineered, this will actually save a few ms of time during player setup."
var playerInstance = jwplayer('container');
//jwplayer('container').pause(); // BAD! :(
playerInstance.pause(); // Good :)
我刚刚使用 jwplayer() 声明以及“==”和“===”测试了您的解决方案。但它仍然不起作用。
我用我们的 2 声明为您准备了 fiddle。
http://jsfiddle.net/slk500/rftbtzpr/
感谢您的帮助!
根据正在播放的媒体类型和挂接到 JW 播放器实例的其他事件,"onTime" 事件每秒触发多次,并报告到小数点后的许多位。
因此,"position" 不太可能恰好为 3(这就是您用以下内容有效表达的意思:'==' & '===')。
使用'>='会更稳健:
playerInstance.on('time', function(x) {
if (x.position >= 3){
playerInstance.pause();
}
});
然而,这意味着玩家将无法玩超过 3 秒,因此根据您的要求,您可能还需要包含额外的逻辑来满足以下需求:
- 暂停点后继续播放
- 如果用户搜索超过 3 秒怎么办
- 向后搜索然后第二次到达暂停点
- 等...
可能更好的解决方案是将 "position" 转换为整数值并进行直接比较。这意味着您不需要逻辑来处理超过暂停点的进展。但是,您需要逻辑来确保它只在暂停点暂停一次。以下内容适用于此:
playerInstance.on('time', function(x){
if(parseInt(x.position,10)===3){
if(!playerInstance["pauseOnce"]){
playerInstance["pauseOnce"]=true;
playerInstance.pause();
}
}else{
playerInstance["pauseOnce"]=false;
}
});
我正在玩弄 YouTube 嵌入视频。我希望播放器在第三秒暂停。代码如下:
playerInstance.on('time', function(x) {
if (x.position === 3){
playerInstance.pause();
}
});
但并不是每次都有效。有时有效,有时无效。这完全是随机的。为什么?
在将我的 jwplayer 对象放入变量之前,我 运行 遇到过问题。我没有解释,但我敢打赌,如果您继续使用 jwplayer(); ,您可能会有更好的运气;显式调用。希望这能给你带来更一致的结果。也可以尝试使用“==”而不是“===”。你能告诉我们你是如何声明 playerInstance 的吗?
我使用了推荐的声明 - JW Player website Api
"We encourage developers to stop using the jwplayer() syntax, and instead keep a reference to the player instance. Based on how JW Player 7 is engineered, this will actually save a few ms of time during player setup."
var playerInstance = jwplayer('container');
//jwplayer('container').pause(); // BAD! :(
playerInstance.pause(); // Good :)
我刚刚使用 jwplayer() 声明以及“==”和“===”测试了您的解决方案。但它仍然不起作用。
我用我们的 2 声明为您准备了 fiddle。
http://jsfiddle.net/slk500/rftbtzpr/
感谢您的帮助!
根据正在播放的媒体类型和挂接到 JW 播放器实例的其他事件,"onTime" 事件每秒触发多次,并报告到小数点后的许多位。
因此,"position" 不太可能恰好为 3(这就是您用以下内容有效表达的意思:'==' & '===')。
使用'>='会更稳健:
playerInstance.on('time', function(x) {
if (x.position >= 3){
playerInstance.pause();
}
});
然而,这意味着玩家将无法玩超过 3 秒,因此根据您的要求,您可能还需要包含额外的逻辑来满足以下需求:
- 暂停点后继续播放
- 如果用户搜索超过 3 秒怎么办
- 向后搜索然后第二次到达暂停点
- 等...
可能更好的解决方案是将 "position" 转换为整数值并进行直接比较。这意味着您不需要逻辑来处理超过暂停点的进展。但是,您需要逻辑来确保它只在暂停点暂停一次。以下内容适用于此:
playerInstance.on('time', function(x){
if(parseInt(x.position,10)===3){
if(!playerInstance["pauseOnce"]){
playerInstance["pauseOnce"]=true;
playerInstance.pause();
}
}else{
playerInstance["pauseOnce"]=false;
}
});