我正在使用 SWFObject 将 YouTube 视频嵌入我们的网站。一个页面中有许多指向视频的链接,每个链接都会清除一个包装器 div,然后使用以下代码将新的嵌入加载到其中:
$('a.video-link').each(function () {
$(this).on('click', function(e) {
e.preventDefault();
if ($('#video-wrap').has('object').length == 0) {
var params = { allowScriptAccess: 'always', allowFullScreen: 'true' };
var atts = { id: 'ytapiplayer' };
swfobject.embedSWF($(this).attr('href'), 'ytapiplayer', '1000', '562', '8', null, null, params, atts);
$('#video-wrap').show();
} else {
$('#video-wrap').find('object').remove();
$(this).trigger('click');
}
});
});
这些是我用于每个嵌入的 Youtube 链接:
http://www.youtube.com/v/{Youtube ID}?hl=en_US&rel=0&hd=1&border=0&version=3&fs=1&autoplay=1&autohide=1&enablejsapi=1&playerapiid=ytapiplayer
然后,这里是 onYouTubePlayerReady() 事件处理程序:
function onYouTubePlayerReady(id) {
console.log('youtube player is ready.');
var ytplayer = document.getElementById('ytapiplayer');
ytplayer.addEventListener('onStateChange', 'onYouTubePlayerStateChange');
ytplayer.addEventListener('onError', 'onYouTubePlayerError');
}
所有视频都可以正常加载,但永远不会点击 onYouTubePlayerReady!
请帮我解决这个问题。最终目标是让 Youtube API 工作。
谢谢。
编辑:我尝试使用代码,确保所有名称都是正确的,分成不同的脚本标签和/或 .js 文件,在开头加载它,在 document.ready() 中,仍然,onYouTubePlayerReady 没有触发。你怎么看?