2009-05-06 36 views
1

我在使用.net 3.5的ascx頁面中有一個更新面板。在callpback窗格更新DOM後IE不更新display

用戶輸入數據,啓動回調,並且ajax更新DOM。

通常情況下所有的都是hunky dory。偶爾DOM得到更新,IE瀏覽器不打擾刷新顯示。整個更新區域顯示爲空白。

一旦用戶執行了一些可以觸發刷新的操作(如調整窗口大小),數據即刻顯示在屏幕上,但直到此時才顯示。

這是爲什麼?什麼可能導致它?它如何被修復?

+0

您看到了哪些版本的IE? – 2009-10-20 22:13:32

回答

2

您可以通過切換到真正的瀏覽器:)

真的「修復」,你可能能夠根據我發現in this page的伎倆來修復它。

基本上,你需要做的就是創建一個空的節點和本地刪除你與你的新內容更新DOM後什麼:

var t = document.createTextNode('temp text'); 
element.appendChild(t); // Not sure if this is any element 
         // or one inside your new DOM nodes. 
setTimeout(function() { t.parentNode.removeChild(t); }, 0); 

在該頁面的作者說:

即使使用我的「修復」,只有當用戶將其注模光標移出窗口的 並返回時,纔會起作用。

但是我認爲這樣做很好......我認爲IE瀏覽器可能不會觸發刷新,除非在瀏覽器窗口中有一些活動,以節省處理時間。

這已經是一個很長時間以來在IE瀏覽器中非常令人討厭的bug,儘管我找不到它在任何地方發佈。事實上,即使Opera不時有這個bug。

此外,即使您使用該技巧解決此問題,請檢查每一段HTML是否有效。您可以在http://validator.w3.org中查看。如果某段代碼無效,那麼你不能責怪瀏覽器不理解你的意思。