javascript addEventListener onStateChange在IE中不起作用

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中完美运行.

Rai*_*ine 3

从 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> 而不是更下面