Bug in FireBug
Die meisten Web-Entwickler werden die Firefox-Extension FireBug kennen.
Dieses schöne Werkzeug ermöglicht es unter anderen den DOM-Tree eines im Browser angezeigten Dokuments zu inspizieren (und zwar nicht den ursprünglichen HTML-Code, sondern genau den Baum, wie er für die aktuelle Anzeige verwendet wird).
Leider hat dieses Add-On einen kleinen Fehler, der einen aber ziemlich Nerven kosten kann:
So bietet FireBug unter anderem auch die Möglichkeit das XmlHttpRequest-Objekt zu überwachen. Auf diese Weise kann man sich die gesendeten Anfragen und die vom Server kommenden Antworten anzeigen lassen um z.B. JavaScript-Probleme bei AJAX-Anwendungen besser debuggen zu können.
Es trat jedoch das merkwürdige Problem auf, dass, sobald FireBug akiviert war, eine bestimmte AJAX-Anwendung nicht mehr richtig funktionieren wollte: Der Request wurde zwar korrekt gesendet und die Antwort auch empfangen, allerdings wurde der "onReadyStateChange"-EventListener nicht aufgerufen, so dass das Skript die Antwort nicht verarbeiten konnte. Offensichtlich trat dieses Problem mit anderen Applikationen (die genau so funktionieren) aber nicht auf.
Nach viel Herumprobieren stellte sich schließlich folgendes heraus: Der open()-Methode des XmlHttpRequest-Objekts muss als dritter Parameter (Aktivierung des asynchronen Modus) explizit ein "true" übergeben werden. Bei deaktiviertem FireBug oder auch in anderen Browsern funktioniert es auch ohne diesen Parameter, ein Fehler in FireBug scheint aber dafür zu sorgen, dass ohne explizite Angabe das Ereignis nicht mehr korrekt verarbeitet wird. Dies ist insofern ärgerlich, dass die Spezifikationen des XmlHttpRequest-Objekts diesen Paramter nicht als Pflichtparameter betrachten. Bei aktivierter XmlHttpRequest-Überwachung, dürfte also auch so manch andere AJAX-Anwendung nicht mehr richtig funktionieren.