2009-06-04 4 views
0

Ich habe eine ziemlich einfache Datenerfassung Web App.Weird AJAX/JS Fehler in ASP.NET und Infragistics NetAdvantage

Im Haupt Capture-Fenster, wenn Sie eine Zeile in einer UltraWebGrid speichern, abhängig von bestimmten Flags zwei weitere Fenster zu öffnen (mit einem ScriptManager.RegisterStartupScript).

Eines der Fenster funktioniert einwandfrei.

Der andere, wenn es (mit Hilfe seiner eigenen ScriptManager.RegisterStartupScript) bewirkt, dass der nächste Fehler in Firefox im Hauptfenster geschlossen wird:

Sys Sys $ $ Culture _getAbbrMonthIndex nicht definiert ist („“) ScriptRe ... = 7c12e347 (Zeile 6391) ? in ScriptResource.axd? d = Bx90cRohr9iY-lmxXmy5QYd7JgQApS0Xh-xBfl6hEe8d-0h4pCZYQQKgxdo97mKzaD5488jiBZ8TOSa4-cOPaw2 & t = 4e25e479 @ 1() ScriptRe ... = 4e25e479 (Linie 499) [zu diesem Fehler Pause] this._upperAbbrMonths = this ... s .dateTimeFormat.AbbreviatedMonthNames);

Und danach geht Firefox verrückt, Tab-Navigation funktioniert nicht mehr, jede Texteingabe im Fenster (einschließlich der Adressleiste und das Suchfeld) zeichnen ihren Inhalt, als ob sie ausgewählt sind (alle zur gleichen Zeit) und Dinge hören auf, sich ziemlich merkwürdig zu verhalten. Ich muss das Fenster schließen und es wieder öffnen, manchmal muss ich sogar den Prozess beenden.

Ich habe viele Dinge ausprobiert, und nichts scheint zu funktionieren. Ich vergleiche die beiden aspx-Dateien in den oben genannten Fenstern und nichts ist wirklich so anders.

Das ist, mich irritierend zu bekommen.

Wer hatte diesen Fehler schon einmal? Irgendwelche Ideen? Hacks? Zeiger?

Vielen Dank.

Antwort

1

Die kurze Antwort ist, dass das Verwalten von Fenstern (Öffnen und Schließen) in einem Browser keine lustige oder triviale Aufgabe ist. Sie müssen sicherstellen, dass alle ausgeführten Skripts abgeschlossen sind, bevor Sie das Fenster schließen. In Ihrem Fall klingt es so, als würde noch ein Initialisierungsskript laufen, während Sie das Fenster schlossen. An diesem Punkt wird das DOM zerstört und das Skript versucht, auf Elemente zuzugreifen, die bereits entfernt wurden. Das Timeout ist der Easy Hack. Die bessere Lösung ist, das WebDialogWindow (auch in NetAdvantage) zu verwenden, das "Fenster" öffnet, die tatsächlich Elemente auf derselben Seite sind. Auf diese Weise können Sie es verwalten, ohne auf Postbacks und Skript-Includes angewiesen zu sein, und Sie müssen nicht damit kämpfen, Daten aus einem separaten Fenster zu holen.

0

Althought Ich weiß nicht genau, warum, wurde der Fehler durch die

verursacht

ScriptManager.RegisterStartupScript (Seite, Page.GetType(), "ZU", "window.close()");

Das andere Fenster hat eine ähnliche Sache, aber es hat es nicht verursacht.

Ich reparierte es, indem ich das window.close() in einem setTimeout ("window.close();", 500) verpackte.

Ich habe keine Ahnung, warum das passiert, wenn jemand eine Ahnung haben, bitte erleuchte mich.

Prost!