2011-06-22 174 views
4

我想创建一个简单的模态窗口,但IE不合作。当我在IE中调用这个函数时,内容出现在页面底部的所有内容下,并且叠加图像不出现。这里是代码:appendChild在IE中无法正常工作

function applyOverlay(src) 
{ 
    var my_overlay = document.createElement('div'); 

    my_overlay.setAttribute('id','myoverlay'); 
    var doc_height = document.body.scrollHeight; 
    my_overlay.setAttribute('style','text-align:center; position:fixed; top:0px; left:0px; background-image:url("images/trbg.png"); width:100%; height:'+doc_height+'; z-index:999;'); 
    my_overlay.innerHTML="<iframe style='background:none;' frameborder=0 height='100%' width='80%' src='"+src+"'><iframe>"; 
    document.body.appendChild(my_overlay); 
} 
+0

它在Firefox上工作吗? – Ibu

+0

你怎么知道这是失败的appendChild调用? –

+2

也许是因为您忘记正确关闭iframe标签。 – Ram

回答

3

这是常见的IE问题。它令人讨厌,但可管理。

如果document.body.appendChild在body关闭之前在body标签内执行,IE6将不会加载页面。 7和8将等待,直到页面加载

那么,如何解决这个问题?

  • 等到身体被加载,使用body.onload
  • 将元素追加到另一个元素而不是body标签。

我推荐第二个选项。将元素附加到另一个目标元素将保留预期的行为,而不会改变将元素添加到网站的方式。

+1

这个函数是通过href调用的,因此在追加它之前,主体会被完全加载。 – cbm3384

+0

你尝试追加到其他元素首先,然后到一个正文,例如一个div已经存在,当页面完全加载 – WooDzu

+0

是的,我试图追加到一个没有运气的股利。 – cbm3384