IE7 window.open und setinterval() AJAX BUG?! ständig PopUp des Fensters?!!!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IE7 window.open und setinterval() AJAX BUG?! ständig PopUp des Fensters?!!!

    Hallo hab ein kleines Problem,
    wie mann es sein mit dem IE 7.0 von Micro Hohl

    Vorgeschichte: Habe ein AJAX Chat gebaut

    So:

    1. -> Benutzer öffnet Chat mit window.open ein neues fenster
    in dem er chatten kann (mit IE6.0 und Firefox taucht der "BUG" nicht auf)
    2. -> Benutzer wählt einen Bereich aus und wird zum chat fenster weitergeleitet wo das AJAX Script mithilfen von setInterval alle 1000ms den Chatcontent ausließt.


    So und hier tritt der BUG im IE7.0 auf. Da ja mithilfe von setInterval alle 1sek den Chatcontent in das dokument mit Hilfe von innerHTML geschrieben wird denkt und merkt der IE7.0 anscheinend das sich der Inhalt der Seite verändert hat und setzt den Focus() des window immer. Dadurch poppt der Chat nach vorne auf und Benutzer kann nur noch sein ChatFenster "benutzen". Den Effekt hab ich zwar auch gewollt eingebaut focus() aber halt nur wenn der Chatteilnehmer auch ne neue Nachricht erhalten hat das funktioniert auch alles.

    focus() hab ich auch mal auskommentiert aber das ist es definitiv nicht muss also setinterval sein erst wenn ich das auskommentier beim IE7 verschwindet der Effekt des immer wieder aufpoppen des windows..

    Hat jemand auch ne Erfarung damit und ne Lösung gefunden oder muss man im IE 7 damit einfach leben?

    Grüße
    Tom

  • #2
    Da ja mithilfe von setInterval alle 1sek den Chatcontent in das dokument mit Hilfe von innerHTML geschrieben wird denkt und merkt der IE7.0 anscheinend das sich der Inhalt der Seite verändert hat und setzt den Focus() des window immer.
    Liest denn der Client immer den gesamten Chatcontent aus? Oder nur die Meldungen, die neu hinzugekommen sind seit der letzten Aktion des Client?
    Wenn du immer alles ausliest, dann ändert sich ja auch der Inhalt, auch wenn du nochmals genau das gleiche reinschreibst. Hast du mal versucht den String vorher nachher zu vergleichen und wenn sie gleich sind (d.h. keine neue Meldung) einfach nix zu schreiben?

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      stimmt das ein sehr gutes Ansatzpunkt danke dir! Dann würde praktisch der manuelle focus() auf das window im IE7 überflüssig . Muss ich mal schaun kann ja den ChatContent in eine <span> packen mit id und dann mit javascript holen und vergleichen mit dem was ich aus der DB auslesen.

      Wie du ja schon sagtest .

      Danke dir werde das gleich mal testen!
      Is halt doch das beste Board hier
      PHP 4ever :P + bissal JS

      Kommentar


      • #4
        Holst du immer die ganzen Daten? Merk dir auf der Clientseite lieber, welche ID (oder einen Zeitpunkt oder whatever) du zuletzt erhalten hast und der Server schickt dir nur die neueren Daten. Sonst hast du einen viel zu großen Overhead, den du immer wieder mitsendest!

        Kommentar


        • #5
          hatte ich auch schon mal - habe den aktuellen log in ner session gespeichert - mit dem aktuellen chatlog aus der db verglichen - anhand von "addchild" neues hinzugefügt ;-)

          http://agentur-obermaier.de auf der linken Seite -> Demo: Webchat ...
          Signatur-Text ...

          Kommentar

          Lädt...
          X