2011-09-17 56 views
27

消除由JavaScript嵌入YouTube视频时,我使用此代码,让用户嵌入到网站YouTube上的视频我建立:黑屏在IE8

function BuildYoutubePlayer(youtubeVideoId, width, height) { 
    youtubePlayer = "<iframe "; 
    youtubePlayer += "width=\"" + width + "\" "; 
    youtubePlayer += "height=\"" + height + "\" "; 
    youtubePlayer += "src=\"http://www.youtube.com/embed/" + youtubeVideoId + "\"&amp;wmode=transparent "; 
    youtubePlayer += "frameborder=\"0\" allowfullscreen>"; 
    youtubePlayer += "</iframe>"; 

    return youtubePlayer; 
} 

这种嵌入将在一个层灯箱弹出,当用户关闭这个弹出窗口时,将视频从html中删除,但我在IE8上获得了一个黑色的全屏,我找不到任何理由,我尝试嵌入YouTube视频并将其删除,并且它运行正常,所以确定我我错过了什么。请指教。

+0

你怎么删除它。我们可以用jsfiddle或jsbin获得演示页面吗? – epascarello

+0

我以前遇到过这个问题,作为所有浏览器的问题(但大部分是)。它似乎围绕着iframe渲染。销毁dom的那部分可能导致独特的错误。在加载iframe之前尝试对iframe的位置进行动画处理时,会发生类似的情况,或者在隐藏之前将其摧毁。 – Fresheyeball

回答

45

我解决了这个问题,通过在删除父窗口时删除iFrame来隐藏iFrame。
所以我说$('iframe').hide();然后$('myContainerPopup').remove();

我面对这个问题,只是在IE8和YouTube视频,在IE7但事情做工精细的所有其他浏览器没有测试。

+0

此修复程序适用于我。我在包含嵌入式(iframe)YouTube视频的元素上使用jQuery的'empty()'。在空工作之前调用'hide()',但相反的顺序导致了IE8的黑屏(这也导致IE开发人员的工具无法使用)。在我的(有限)测试中,这个问题没有影响IE7,但只有IE8。 – zlovelady

+0

顺便说一句,它在IE7中工作正常,而不使用隐藏iframe。愚蠢的IE – defau1t

+3

这就是为什么我讨厌IE浏览器。 谢谢! – Luke

0

我使用此代码:

$(document).ready(function() { 
$('.popup-gallery').magnificPopup({ 
    callbacks: { 
     open: function() {$('iframe').hide();}, 
     close: function() {$('iframe').show();} 
    } 
}); 

});