我有以下代码,几乎直接取自 API,但事件没有触发。有任何想法吗?谢谢。
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '250',
width: '300',
videoId: 'u1zgFlCw8Aw',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
alert("Ready");
event.target.playVideo();
}
function onPlayerStateChange(event) {
alert("State Changed");
}
回答:原来是因为我在本地测试,doh!但请参阅下文了解其他可能的原因。
最佳答案
尝试使用下面的代码,非常适合我
<div id="player"></div>
<script>
//Load player api asynchronously.
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'JW5meKfy3fY',
playerVars:{'autoplay':1, 'rel':0, 'showinfo':0, 'egm':0, 'showsearch':0,},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event,element) {
//When the video has ended
if (event.data == YT.PlayerState.ENDED) {
//Get rid of the player
element.style.display = "none";
}
}
关于javascript - Youtube 视频事件未触发 [在本地或其他地方进行测试时]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583436/