删除带有Youtube iframe的DOM元素时,'__flash__removeCallback'未定义。

8
我有一个带有通过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>

...

但现在我已经没有想法了...

我也非常渴望这个解决方案的出现 :( - coolguy
4个回答

2

最终我找到了解决方案。

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

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

我已经找到解决方案了。

ytplayer.getIframe().src='';

为了使这个功能与在Colorbox中显示的Youtube视频兼容,将以下onCleanup函数添加到选项中:$(element).colorbox({ "onCleanup": function() { $(".cboxIframe").attr("src", ""); } }); - thirdender

1

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

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

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();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接