DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> IE中改變DIV.innerHTML的bug
IE中改變DIV.innerHTML的bug
編輯:AJAX詳解     
今天碰到一個有關UpdatePanel的bug。

問題描述:
UpdatePanel中包含幾個hidden control,每一次postback時該UpdatePanel都會被刷新。
我期望的結果是:UpdatePanel因為包含的都是hidden control,所以無論何種情況它都應該是隱藏的,包括它的height也應該是0.
但是事實是:
1. 當第一次通過get方式打開頁面時,UpdatePanel顯示正常,height等於0.
2. 當通過post方式patial update該UpdatePanel時,奇怪的事情發生了,頁面中UpdatePanel所對應的div的高度不等於0,並且在頁面中占了對應的位置。

尋找原因:
一開始以為是自己代碼問題,所以反復對比每次patial update到UpdatePanel div的innerHTML中的內容,發現都一樣。於是改為懷疑是否是microsoft Ajax的問題,把斷點設到MicrosoftAJaxWebForms.JS中Sys$WebForms$PageRequestManager$_updatePanel方法中去,並跳過改變updatePanelElement.innerHtml的語句。回到頁面,div高度沒有改變,於是排除別處改變其高度的可能性。

現在的焦點就在於div.innerHtml上了,下面我嘗試了兩種方式去驗證:
1. div.innerHTML = div.innerHtml 內容不改變
2. div.innerHtml = "" 設空
結果每一種都使div的高度不為0。

結論:
網上搜了一下,發現這是一個IE的bug,同樣的情況在Firefox, Opera, 和Safari 裡都不會改變div高度。
另外不止改變innerHtml屬性會這樣,當增加刪除div中child control時都會發生這種情況。

解決辦法:
我最後的解決辦法是利用div style中display:none來使div真正隱藏。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved