我试图让用户使用以下功能在YouTube视频中寻找特定时间:
function setCurrentTime(slideNum) {
var object = <?php echo json_encode($matches); ?>;
if ('seekTo' in player.trackingVideoId){
var seekTime = object[0][slideNum];
player.trackingVideoId.seekTo(HHmmssToSeconds(seekTime));
}
}
哪里
var object = [["00:00:00","00:01:07"],["00","00"],["00","01"],["00","07"]];
player.trackingVideoId = new YT.Player('trackingVideoId');
<iframe id="trackingVideoId" type="text/html" width="340" height="210" src="https://www.youtube.com/embed/D77wXvwChtU?enablejsapi=1" frameborder="0"></iframe>
<input type="button" value="Seek" onclick="setCurrentTime(1)">
它有时工作正常,有时它不起作用并出现以下错误(在firefox consol上):
TypeError: invalid 'in' operand player.trackingVideoId
if ('seekTo' in player.trackingVideoId){
并在评论条件if ('seekTo' in player.trackingVideoId){
出现以下错误
Uncaught TypeError: Cannot read property 'seekTo' of undefined
更新
我初始化它 - 就像你的链接一样 - 在onYouTubeIframeAPIReady()上。但是,我把setCurrentTime(slideNum)放在了YouYouTubeIframeAPIReady()函数之外,我试着将它放在里面,还有另一个错误,即setCurrentTime没有定义。
我正在尝试在用户点击按钮时寻找特定时间
<input type="button" value="Seek" onclick="setCurrentTime(0)">
答案 0 :(得分:5)
我认为您没有初始化YouTube播放器 在onYouTubeIframeAPIReady之后,YT.Player可以实例化 (请在控制台中使用“console.dir(player.trackingVideoId)”进行检查)
我建议您按照相同的方式执行代码 https://developers.google.com/youtube/iframe_api_reference#Getting_Started
<强>更新强>
请尝试使用此代码,并与您的代码进行比较
对我来说似乎工作正常(Windows7 / Chrome 37.0.2062.124 m)。
<!DOCTYPE html>
<html>
<body>
<div id="player"></div>
<input type="button" value="Seek0" onclick="setCurrentTime(0)" />
<input type="button" value="Seek1" onclick="setCurrentTime(1)" />
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '210',
width: '340',
videoId: 'D77wXvwChtU',
});
}
function setCurrentTime(slideNum) {
var object = [ 60, 120 ];
player.seekTo(object[slideNum]);
}
</script>
</body>
</html>