我正在编写一个嵌入了jPlayer的网页。播放器具有timeupdate属性,允许您在时间更新时调用函数(大约4 Hz)。我让它调用一个函数来更新页面上的交互式脚本,突出显示当前使用的json数据,其中包含与脚本的各个部分相关的时间码。该函数还返回json数据,以便在下次运行时使用,因此它可以跟踪它的位置,而无需每次都搜索整个json文件。
一切都很有效,除了一个永远不会触发的条件,它似乎应该在哪里。如果当前时间与上次不同的时间超过0.75秒,那么我应该假设用户单击后退或前进并相应地更新脚本。但我可以停止并重新启动音频文件10秒钟,或者点击遥远,并且永远不会触发if语句。这个问题非常简单,但我感到困惑的是导致它的原因。我在这里错过了什么?这是代码:
function updateTranscript(event, transcriptAsJson, divIdRoot, lastStepJson) {
var currentTime = event.jPlayer.status.currentTime;
var currentStepJson = lastStepJson;
currentStepJson.lastTime = currentTime;
/*
* If the user navigated the time forward or back
*/
if(currentTime >= (lastStepJson.lastTime + 0.75) || currentTime <= (lastStepJson.lastTime - 0.75)) {
//unhighlight lastStepJson.lastHighlightedId and
//any lastStepJson.additionalHighlightedIds
alert('user skip');
//...
//...
//...
&#13;
顺便说一句,
lastStepJson
的架构看起来像这样。
{
'lastTime': 0.0,
'lastUpdate': 0.0,
'lastHighlightedId': 0
}