Florian: Scrollen...nach ganz unten scrollen

Ich habe einen framebasierenden Chat.
Und ich möchte, dass der Frame, in dem die Nachrichten stehen, ab und zu aktualisiert wird.
Und hier mein Problem: Bei jedem Aktualisieren soll ganz nach unten gescrollt werden, dann der focus mithilfe von javascript auf ein Eingabefeld in einem anderen Frame gesetzt werden.
Das Focussetzen funktioniert problemlos, aber das Runterscrollen macht Probleme.
Ich hab es schon mit ScrollTo probiert und mit einem Anker, doch Anker geht nicht, weil wenn der focus vom Anker genommen wird um das textfeld zu markieren, wird in dem frame wieder nach oben gescrollt. ResizeTo scheint auch nicht zu funktionieren.

Hier die URL: http://www.diesv.de/chat/
(Der Chat ist im Bau, es wird nur die eingegebene Nachricht angezeigt...)

Danke schonmal im Vorraus

  1. Hallo Florian,

    Ich habe einen framebasierenden Chat.
    Und ich möchte, dass der Frame, in dem die Nachrichten stehen, ab und zu aktualisiert wird.

    Da eigenet sich HTML (bzw. HTTP allgemein) nicht gut für: Du müsstest dauernd aktualisieren (etwa alle 5-10 Sekunden). Es gibt speziell für Chats z.B. das IRC-Protokoll.

    Und hier mein Problem: Bei jedem Aktualisieren soll ganz nach unten gescrollt werden, dann der focus mithilfe von javascript auf ein Eingabefeld in einem anderen Frame gesetzt werden.

    Schreib die neuen Nachrichten doch einfach nach oben.

    Viele Grüße aus Freiburg,
    Marian

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) n4:( ss:) de:] js:| ch:? mo:} zu:)
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
    1. Ja...
      wär nur halt gut gewesen...
      also gibt es keine javascript-befehl/funktion?

  2. Hallo Florian,

    Ich hab es schon mit ScrollTo probiert und mit einem Anker, doch Anker geht nicht, weil wenn der focus vom Anker genommen wird um das textfeld zu markieren, wird in dem frame wieder nach oben gescrollt.

    Ich denke, mit einer der drei Alternativen meinFrame.scrollTo(0, meinFrame.document.body.offsetHeight) bzw. meinFrame.scrollTo(0, meinFrame.document.body.scrollHeight) bzw. meinFrame.scrollTo(0, meinFrame.document.documentElement.clientHeight) wird es wohl funktionieren. Da musst du halt abfragen, welcher Browser was versteht und dann entsprechend die Werte setzen.

    Gruß Gernot

    1. ^^ähm...und welcher browser versteht was?
      Ich hab jetzt mal alles untereinander gemacht, das sieht jetzt so aus:

      function ganz_runterscrollen(){
       parent.message.scrollTo(0, parent.message.document.body.offsetHeight);
       parent.message.scrollTo(0, parent.message.document.body.scrollHeight);
       parent.message.scrollTo(0, parent.message.document.documentElement.clientHeight);
       }

      und unten zum schluss:

      <script type="text/javascript">
       ganz_runterscrollen();
      </script>

      1. Hallo Florian,

        function ganz_runterscrollen(){
        parent.message.scrollTo(0, parent.message.document.body.offsetHeight);
        parent.message.scrollTo(0, parent.message.document.body.scrollHeight);
        parent.message.scrollTo(0, parent.message.document.documentElement.clientHeight);
        }

        Du müsstest da schon ein paar if-Abfragen einbauen und dann kann dir herzlich egal sein, welcher Browser was versteht. Relevant ist nur, _ob_ der Browser das versteht:

          
        function ganz_runterscrollen(){  
        if (parent.message.document.body.offsetHeight)  
           parent.message.scrollTo(0, parent.message.document.body.offsetHeight);  
        else if (parent.message.document.body.scrollHeight)  
           parent.message.scrollTo(0, parent.message.document.body.scrollHeight);  
        else if(parent.message.document.documentElement.clientHeight)  
           parent.message.scrollTo(0, parent.message.document.documentElement.clientHeight);  
        }
        

        Gruß Gernot

        1. Läuft danke nochmal!!!

      2. Hallo Florian.

        ^^ähm...und welcher browser versteht was?

        Wie Gernot sagte, kannst du das selbst abfragen (← http://de.selfhtml.org/javascript/sprache/objekte.htm#existenzabfrage@title=Hinweis).

        Wenn du z. B. wissen willst, ob ein Browser die alert()-Methode unterstützt, so fragst du dies wie folgt ab:

        if (window.alert) { // Methoden, die von überall aus aufgerufen werden können, sind ans window-Objekt gebunden  
          alert('alert() funktioniert.');  
        }
        

        Entscheidend ist, dass du nur die Funktionseigenschaft „alert“ überprüfst, was auch folgendermaßen möglich wäre:

        if (window['alert']) {  
          alert('alert() funktioniert.');  
        }
        

        Was es damit auf sich hat, kannst du bei Bedarf in Christian Kruses Artikel zu diesem Thema nachlesen.

        Ich hab jetzt mal alles untereinander gemacht, das sieht jetzt so aus:

        Eine unsaubere Lösung, wenn sie auch funktionieren mag. Darauf verlassen würde ich mich an deiner Stelle aber nicht.

        Einen schönen Montag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/