我坚持使用一段在Youtube API上应用事件的JavaScript代码。目标是当您单击相应的按钮时,视频向后移动5秒,10秒或30秒或向前移动5秒,10秒或30秒。
我的问题是我有六个相似的功能,但没有相同的时间值。 (在这个例子中,我只放了两个函数:rewind5()
备份5秒,rewind10()
备份10秒。)
我正在寻找一个可以帮助我将这两个函数(rewind5()
和rewind10()
)组合成一个函数的慈善灵魂。一旦我有了正确的结构,我就可以使用单个函数创建其他四个函数。
我的JS档案:
// Rewind 5s
function onPlayerReady(event){
if(player.getPlayerState()===1 || player.getPlayerState()===2){
$('#s5back').prop('disabled', false);
$( '#s5back' ).click(function() {
rewind5();
});
} else {
$('#s5back').prop('disabled', true);
}
}
function rewind5() {
var currentTime = player.getCurrentTime();
player.seekTo(currentTime - 5, true);
player.playVideo();
};
// Rewind 10s
function onPlayerReady(event){
if(player.getPlayerState()===1 || player.getPlayerState()===2){
$('#s10back').prop('disabled', false);
$( '#s10back' ).click(function() {
rewind10();
});
} else {
$('#s10back').prop('disabled', true);
}
}
function rewind10(){
var currentTime = player.getCurrentTime();
player.seekTo(currentTime - 10, true);
player.playVideo();
};
我的HTML文件:
<div id="video-placeholder"></div>
<script type="text/javascript">
var player,
time_update_interval = 0;
function onYouTubeIframeAPIReady() {
player = new YT.Player('video-placeholder', {
width: '100%',
height: '625px',
videoId: 'ID URL YOUTUBE',
playerVars: {
color: 'white',
controls: 0,
rel: 0,
showinfo: 0
},
events: {
onReady: initialize,
onStateChange: onPlayerReady
}
});
}
</script>
答案 0 :(得分:3)
为什么不只有一个seekBy
函数,并将其传递所需的秒数以进行倒带?
function seekBy(secs){
var currentTime = player.getCurrentTime();
player.seekTo(currentTime + secs, true);
player.playVideo();
}
并使用例如
实现它$('#s10back').click(function() {
seekBy(-10);
});
或5秒,或30或60.要继续,请传递正数:
$('#s10forward').click(function() {
seekBy(10);
});