Der*_*rek 5 javascript jquery swfobject youtube-api javascript-events
我有两个彩盒弹出框,每个弹出框都显示一个youtube视频.当他们完成播放时,我试图让它们自动关闭彩盒窗口.下面的代码在firefox中运行完美,但在IE中我无法使用addEventListener.我试过attachEvent没有成功.任何人都可以提出如何解决这个问题的建议吗?看起来很简单,但我已经筋疲力尽,试图找到解决方案.顺便说一句,这是我第一次在stackoverflow,这是非常令人印象深刻.
更新1:
嗯,这是我目前的代码.它在FF中运行完美,但IE只能输出良好.IE8调试器也不报告任何错误......
function onYouTubePlayerReady(playerId) {
if (playerId && playerId != 'undefined') {
if(playerId && playerId == 'ytvideo1'){
var ytswf = document.getElementById('ytplayer1');
alert('good');
} else if(playerId && playerId == 'ytvideo2'){
var ytswf = document.getElementById('ytplayer2');
} else {
}
setInterval('', 1000);
ytswf.addEventListener('onStateChange', 'onytplayerStateChange');
alert('great');
}
}
function onytplayerStateChange(newState) {
alert('amazing');
if(newState == 0){
$.fn.colorbox.close();
alert('perfect');
}
}
Run Code Online (Sandbox Code Playgroud)
更新3:解决方案
只需在我的颜色框中放入完成并将swfobject放入其中,它在IE中完美运行.
从 IE 中的测试来看,它看起来像您正在使用的参考
ytswf = document.getElementById('ytplayer1');
Run Code Online (Sandbox Code Playgroud)
在加载实际的 swf 对象之前分配,因此 IE 认为您指的是一个简单的 div 元素
你需要运行这段代码
function onYouTubePlayerReady(playerId) {
ytswf = document.getElementById("ytplayer1");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
Run Code Online (Sandbox Code Playgroud)
致电后立即
swfobject.embedSWF("http://www.youtube.com/v/SPWU-EiulRY?
hl=en_US&hd=0&rel=0&fs=1&autoplay=1&enablejsapi=1&playerapiid=ytvideo1",
"popupVideoContainer1", "853", "505", "8", null, null, params, atts);
Run Code Online (Sandbox Code Playgroud)
在你结束之前$(function()
并放在var ytswf;
后面<script>
而不是更下面