【发布时间】:2015-11-07 05:23:37
【问题描述】:
所以我想我会用一个工作示例来更新它。我已经放弃了声明 iframe 标签,只是使用 iframe api 创建一个 iframe,然后通过带有数据属性的 id 加载播放器。下面是一个工作示例。因此,现在所有状态更改都通过 youtube 播放器一致地传递。因此脚本会将 iframe 加载到 Div #player 中,您可以使用 jquery 和 javascript 轻松地 loadVideoByID。
<div id="player"></div>
<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', {
playerVars: { 'autoplay': 0,},
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
alert('started');
}
function onPlayerStateChange(event) {
if(event.data === 0) {
alert('done');
}
}
$( document ).on( "click", ".video-link", function(e) {
e.preventDefault();
var videoID = $(this).attr('data-videoID');
player.loadVideoById(videoID);
});
</script>
然后使用具有类似数据属性的链接。
<a href="#" class="video-link" data-videoID="youtube id here">Link</a>
【问题讨论】:
-
你如何更改播放器 src?如果您希望播放器播放新视频,我建议您使用
player.loadVideoById('NewVideoID')播放器的所有事件都应该可以正常工作。如果您想通过控制台记录新视频 ID 以查看控制台“调试/报告”中的更改,请尝试此console.log(player.getVideoUrl().split('?v=')[1]);
标签: javascript youtube youtube-iframe-api