加载Iframe时,Java Script隐藏白色Flash

时间:2015-08-13 03:45:04

标签: javascript internet-explorer iframe

目前正在经历令人烦恼的白色闪光'在使用javascript动态生成iFrame时,在IE v9-11中出现问题。基本上,我试图通过将样式设置为display:none然后将iframe设置为display:null来尝试隐藏iframe,直到使用onload加载iframe。这样做 - 应该显示iframe。看起来样式没有被删除,但功能正在执行。任何有关如何在加载后显示iframe的想法都会受到赞赏。

可以在这里找到Jsfiddle直播:http://jsfiddle.net/2zndpm8r/

var ifrm=document.createElement('IFRAME'); 
    ifrm.setAttribute('id','ifrm_ad'); 
    ifrm.setAttribute('height','90'); 
    ifrm.setAttribute('width','728'); 
    ifrm.setAttribute('frameborder','0'); 
    ifrm.setAttribute('scrolling','no'); 
    ifrm.setAttribute('marginwidth','0'); 
    ifrm.setAttribute('marginheight','0'); 
    ifrm.setAttribute('vspace','0'); 
    ifrm.setAttribute('hspace','0'); 
    ifrm.setAttribute('src','//placeholdit.imgix.net/~text?txtsize=23&txt=728%C3%9790&w=728&h=90') 
    ifrm.style.display='none';
    document.body.appendChild(ifrm);
    document.getElementById('ifrm_ad').onload = function(){document.getElementById('ifrm_ad').style.display= null; console.log('show iframe');};

1 个答案:

答案 0 :(得分:1)

建议

var ifrm=document.createElement('IFRAME'); 
    // ...
    // snip - removed for brevity
    // ...
    ifrm.setAttribute('src','//placeholdit.imgix.net/~text?txtsize=23&txt=728%C3%9790&w=728&h=90') 
    ifrm.style.display='none';
    ifrm.onload = function(){
        ifrm.style.display= ''; // don't use null, use empty string
        console.log('show iframe');
    };
    document.body.appendChild(ifrm);

在将ifrm添加到DOM之前设置onload 另外,您可以在此使用ifrm而不是笨拙的getElementById