Hi,
ich habe eine Anwendung die periodisch (ca. alle 100ms) Daten von einem Server holt. Wenn die Verbindung abbricht kommen natürlich keine Daten mehr. Irgendwann kommt die Verbindung wieder und dann soll auch die Datenübertragung wieder neu anlaufen.
Um das zu erreichen arbeite ich mit 2 Timern. Einer (timerReq2) läuft mit 100ms-Verarbeitungszeit=50ms und triggert neue Datenanfragen mit XMLHttpRequest(). Direkt vor dem XMLHttpRequest() wird noch schnell ein anderer Timer (timerReqC) mit 2s als Timeout gestartet. Bekommt der XMLHttpRequest() eine Antwort, wird der 2s-Timeout mit clearTimeout gelöscht und ein neuer 50ms Timer gestartet.
Das funktioniert mit vielen Browsern (Firefox, Chrome, IE8, Safari4), aber leider mit Opera und Safari3 nicht! Die Fehlerkonsole vom Opera liefert keine Anzeige.
Das Problem ist, das clearTimeout den Timer nicht löscht. Nach 2 Sek. wird also trotzdem die Funktion newXmlReqC() gestartet.