我正在尝试以最干净的方式更改在 YouTube iframe 中播放的视频,几个月前我让这段代码正常工作,但 YouTube 改变了他们的 API,它停止了对我的工作。现在,在我切换视频的 SRC 属性以切换正在播放的视频后,onPlayerStateChange 事件没有触发。我是编码的业余爱好者,所以我可能在这里遗漏了一些简单的东西,但任何输入都将不胜感激。下面是加载 YouTube 视频的代码,当它结束时,会自动弹出一个警报。但是,当您单击按钮并通过切换 SRC 属性来切换视频时,警报功能停止工作,就好像整个 onPlayerStateChange 功能停止工作一样。我无法让它在 jsfiddle 中工作,但可以在以下位置找到现场演示的链接http://thetunedrop.com/test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div id="player"></div>
<button class="button" data-youtubeid="b-3BI9AspYc">BUTTON</button>
</body>
</html>
<script type="text/javascript" src="jquery/jquery.min.js"></script>
<script type="text/javascript" src="jquery/js/jquery-ui-1.8.22.custom.min.js"></script>
<script src="http://www.youtube.com/player_api"></script>
<script>
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: '0Bmhjf0rKe8',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
alert('done');
}
}
function load_ytid(youtubeid){
$("#player").attr("src", "http://www.youtube.com/embed/" + youtubeid + "?fs=1&autoplay=1");
}
$(document).ready(function(){
$(".button").on("click", function(){
var youtubeid = $(this).data("youtubeid");
load_ytid(youtubeid);
});
});
</script>