3
我试图为youtube播放器创建自己的“字幕”系统。目前我坚持js滚动,只是无法正常工作。Div滚动与jQuery动画
代码:
<script type="text/javascript" language="javascript">
var player;
var scrollToTimePosition;
// document.onReady
$(document).ready(function() {
var id = "QH2-TGUlwu4";
var params = { allowScriptAccess: "always" };
swfobject.embedSWF("http://www.youtube.com/v/" + id + "?enablejsapi=1", "video-container", "500", "375", "8", null, null, params, null);
});
// YouTube API Required function
function onYouTubePlayerReady() {
player = document.getElementById("video-container");
//player.playVideo();
setInterval(function() {
if(player.getPlayerState() == 1) {
var time = Math.round(player.getCurrentTime());
if(time > 1 && scrollToTimePosition != time) {
var anchor = $("#text-container > a[href=#"+time+"]");
if(anchor.length) {
scrollToTimePosition = time;
$('#text-container').animate({
scrollTop: anchor.offset().top - $("#text-container").offset().top
}, 1000);
}
}
}
}, 500);
}
</script>
你可以看到它在线here(抱歉页俄语)。在Google Chrome浏览器中,它有时会上下跳动,并停在错误的位置。它发生在滚动条已经滚动到某个位置并且下一个也是部分可见的时候。
UDP:我已经添加控制台日志,便于调试,日志是这样的:
Move to #33 with shift 204px
Move to #43 with shift 219px
Move to #46 with shift 261px
Move to #53 with shift 438px
Move to #60 with shift 480px
Move to #63 with shift 657px
Move to #65 with shift 915px
类型与您的问题无关,但当用户在视频中跳过时会发生什么情况? –
由于间隔每500毫秒检查一次当前视频时间位置,所以该脚本在向前跳过时工作正常,我还想指出至今为止的好脚本。以前没有真正见过类似的东西。 –
@MeisamMulla,它运作良好。当您跳过视频时,它会继续播放到下一个滚动点,然后将字幕滚动到正确的位置。我想通过自动滚动到最近的位置来立即改善这一点。 –