使用Youtube iframe删除DOM元素时,'__flash__removeCallback'未定义

时间:2012-07-18 14:36:36

标签: javascript youtube internet-explorer-9

我有一个带有通过iframe嵌入的Youtube视频的div。

<div id="container">
    <div id="video">
        <iframe width="480" height="360" src="http://www.youtube.com/embed/LiyQ8bvLzIE" frameborder="0" allowfullscreen></iframe>
    </div>
</div>

我使用ajax调用更改#container的内容

$.get(url, function(data) {
    ('#container').html(data);
}

现在我在IE9中收到以下错误:“SCRIPT5009:'_ flash _removeCallback'未定义”。

我尝试在ajax调用之前删除,删除,...视频和/或iframe,但这不起作用:

<script>
    $('#video').html('')
</script>

<script>
    $('#video').empty()
</script>

<script>
    $('#video').remove()
</script>

<script>
    $('#video iframe').attr('src', '')
    $('#video').empty()
</script>

<script>
    $('#video').hide()
    $('#video iframe').attr('src', '')
    $('#video').empty()
</script>

...

但现在我已经不在想了......

4 个答案:

答案 0 :(得分:2)

最后我得到了解决方案。

我不知道您使用的是哪种服务器端语言,我使用的是PHP。无论如何,如果浏览器是IE9,则使用对象标签。

if (preg_match('/MSIE 9.0/', $_SERVER['HTTP_USER_AGENT'])) { /*for IE 9.0 generate with objace tag*/ ?>
     <object type="application/x-shockwave-flash" data="VIDEO_URL">
      <param name="movie" value="VIDEO_URL" />
      </object>
 <?php } else { /*rest of all browsers,in iframe*/ ?>
      <iframe src="VIDEO_URL"></iframe>
 <?php } ?>

简而言之,使用IE9的object标记和休息的iframe

答案 1 :(得分:1)

我得到了解决方案。

ytplayer.getIframe().src='';

答案 2 :(得分:1)

如果您仍想继续使用iframe代码,可以通过调用removeAttr删除iframe src(而不是尝试将其设置为空白)。

$('#video iframe').removeAttr('src')

答案 3 :(得分:0)

我收到同样的错误并找到了我自己的解决方案。我觉得使用IE9 / IE10的旧“对象”解决方案并不是一个真正的解决方案,因为你不应该专门为一个浏览器编写代码。

我的情况有所不同,我只需要一个视频弹出,然后停止播放并在点击关闭按钮时消失。

使用您提供的代码......

function playVideo() {
    $('#video iframe').attr('src', 'http://www.youtube.com/embed/VIDEO_ID_HERE');
    $('#video iframe').fadeIn();
}

function stopVideo() {
    $('#video iframe').attr('src', '');
    $('#video').fadeOut();
}