2011-06-22 209 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