2009-05-06 7 views
1

Ich habe ein Update-Panel in einer Ascx-Seite mit. Net 3.5.IE nicht aktualisieren Anzeige nach Callback-Bereich aktualisiert das DOM

Der Benutzer gibt Daten ein, initiiert einen Rückruf und Ajax aktualisiert das DOM.

In der Regel ist alles hunky dory. Hin und wieder wird das DOM aktualisiert und der IE kümmert sich nicht darum, die Anzeige zu aktualisieren. Der gesamte aktualisierte Bereich scheint leer zu sein.

Sobald der Benutzer etwas ausführt, das eine Aktualisierung auslöst, wie z. B. die Fenstergröße ändert, werden die Daten sofort auf dem Bildschirm angezeigt, jedoch erst dann.

Warum ist das? Was könnte es verursachen? Wie kann es behoben werden?

+0

In welchen Versionen von IE sehen Sie das? –

+0

7 und 8. Beachten Sie, dass dies nicht konsistent reproduzierbar ist. Mit einem halben Dutzend Tester, die alle für 8 Stunden arbeiten, kann es ein- oder zweimal am Tag passieren. – diadem

+0

Für den Eintrag ... und Ich habe beide Rendermodi ausprobiert und zwischen divs und span umgestellt – diadem

Antwort

2

Sie können ‚fix‘ es von realen Browser Schalt :)

Wirklich, Sie könnte der Lage sein, es zu beheben nach dem Trick, den ich in this page gefunden.

Im Grunde, was Sie tun müssen, ist ein leerer Knoten erstellen und löschen Sie es lokal , nachdem Sie das DOM mit dem neuen Inhalt aktualisiert:

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); 

In dieser Seite sagt der Autor:

Auch mit meinem „reparieren“, es funktioniert nur , wenn der Benutzer den Cursor aus ihren mouser bewegt des Fensters und hinten.

Aber ich denke, das ist so gut wie es geht ... Ich denke, IE kann keine Aktualisierung auslösen, es sei denn, es gibt einige Aktivitäten im Browserfenster, um Verarbeitungszeit zu sparen.

Das ist seit langem ein bekannter, wirklich nerviger Bug im IE, obwohl ich ihn nirgends finden kann. Tatsächlich hat sogar Opera diesen Fehler von Zeit zu Zeit.

Auch, wenn Sie es mit diesem Trick lösen, überprüfen Sie, dass jedes einzelne Stück HTML gültig ist. Sie können es in http://validator.w3.org überprüfen. Wenn ein Code ungültig ist, können Sie dem Browser nicht vorwerfen, dass er nicht verstanden hat, was Sie gemeint haben.