目前正在经历令人烦恼的白色闪光'在使用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');};
答案 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