【发布时间】:2023-04-01 14:48:01
【问题描述】:
我们正在使用外部清理器(不是默认搜索栏的 UI 元素)进行搜索(通过 jquery ui draggable),并且它没有在应该更新 jwplayer 时更新。
我们的代码概要:
$('#scrubber').draggable({
// ...
stop: function (event, ui) {
$('#scrubber').draggable('enable');
var intSecFromEnd,
intSeek,
intTotalTime = 0,
intScrubPosition = ui.position.left,
intScrubTime = intScrubPosition;
// Find which video in the playlist to use
$.each(playlist, function (i, obj) {
intTotalTime += parseInt(obj.duration);
if (intTotalTime > (intScrubTime)) {
intSecFromEnd = intTotalTime - parseInt(intScrubTime);
intSeek = Math.floor((parseInt(obj.duration) - intSecFromEnd));
jwplayer('videoPlayer').load(playlist);
jwplayer('videoPlayer').playlistItem(i);
jwplayer('videoPlayer').seek(intSeek);
jwplayer('videoPlayer').pause();
/*
Play the video for 1 second to refresh the video player, so it is correctly displaying the current point in the video
Does not work either
*/
// setTimeout(function () {
// jwplayer('videoPlayer').pause();
// }, 1000);
return false;
}
});
}
});
你会注意到关键位:
jwplayer('videoPlayer').load(playlist);
jwplayer('videoPlayer').playlistItem(i);
jwplayer('videoPlayer').seek(intSeek);
jwplayer('videoPlayer').pause();
当我用整数值将它直接放入控制台时,intSeek 是它应该完全正常工作,所以我很困惑可能断开连接的位置。
变体(仅适用于播放列表中的一项)
这仅适用于播放列表的第一个成员,因为 seek() 函数默认为播放列表中的元素 0。
jwplayer('videoPlayer').load(playlist);
jwplayer('videoPlayer').seek(intSeek);
jwplayer('videoPlayer').pause();
当然,jwplayer('videoPlayer').playlistItem(i) 会在我们想要的索引处检索项目,并且根据文档,应该:
在指定索引处开始播放播放列表项。
但是,因为这实际上是第一个示例中的内容,所以它不起作用。
注意事项
当从播放器外部触发
.seek()方法时,jwplayer 永远不会触发onSeek()方法。如下所示,jwplayer
onReady事件永远不会被触发。jwplayer(strVideo).playlistItem(i).onReady({ console.log('ready'); });
【问题讨论】:
-
.. 我什至迷失了它是如何工作的;据我所知,这是访问方法的无效语法。
-
你指的是哪几行?
-
每次访问都没有点。这不是有效的 js 语法。
-
啊,好吧,哈哈
-
你能把测试页面放到你运行它的地方吗?
标签: javascript jwplayer jwplayer6