02. november 2003 - 18:30Der er
11 kommentarer og 1 løsning
Scroll ned i <span>
Hey Eksperter
Jeg sidder og er ved at opbygge en tekstchat i php/mysql/javascript.
Selve chattens "tekstvindue" hvor brugernes beskeder kommer frem er en <span style="overflow:auto">. Nyeste chatbeskeder indsættes via innerHTML nederst i <span>'en.
Når chatvinduet er helt fyldt af tekst fremkommer en vertikal scrollbar ude til højre. Jeg ønsker nu at denne scrollbar skal scrolle nedad konstant. Så snart den har mulighed for det skal den scrolle ned (der tilføjes jo hele tiden nyt indhold til <span>'en). Fx via en løkke.
Det bliver let noget rod. Hvorfor ikke bare skrive seneste besked øverst? Det giver også betydelig læsbarhed - og bruges derfor i en hel del kommercielle chats ;o)
I øvrigt er din prioritering helt forkert. Du skal _virkelig_ skrive slamkode for at belaste klientmaskinen væsentligt. Den står jo og strutter af ubrugte RAM og CPU-kraft.
Problemet er - ikke mindst i chat-sammenhæng - serveren. Her ligger den snævre flaskehals - og det er her, kode-fårene skilles fra bukkene ;o) Så meget arbejde, som overhovedet muligt, skal lægges ned på klienten, hvis du vil lave en effektiv chat /mvh
Ole -> Ja måske har du ret. Men tekstboxen hvor brugernes indtaster deres beskeder, i befinder sig nederst i chatten. Derfor mener jeg også, at de nyeste chatbeskeder bør komme frem nederst, så man kan fokusere på et mindre område.
Ole (18:48:22) -> På det område, at lægge arbejdet hos klienten, er jeg, synes jeg selv, ret erfaren efter både at have flere tekstchats men også adskillige såkaldte "3dchats" som kræver mere af serveren! Og jeg ved præcis hvad du mener med "fårene fra bukkene" ;)
Grunden til at jeg skrev det var, at man for at få en "glidende nedscrollning" skulle have en løkke der kørte konstant og hele tiden. Det formodede jeg ville tage meget kraft hos klienten.
ok... håber det kan hjælpe dig med din chat (omend jeg gik ud fra at man kunne sådan noget, når man er så velbevandret konstruktion af forskellige chat's (hvad hedder en chat overhovedet i flertal ?!)
Here goes :
<html> <head> <script type="text/javascript"> function addNewContent() { cc = document.getElementById("chatContent"); d = new Date(); cc.innerHTML = cc.innerHTML + "["+d+"] - HEJ<br/>"; }
function scrollForever() { ca = document.getElementById("chatArea"); cc = document.getElementById("chatContent"); ca.scrollTop = cc.offsetHeight - ca.offsetHeight; setTimeout( "scrollForever()", 100); } </script> </head> <body onLoad="scrollForever();"> <div id="chatArea" style="border:1px solid black; width:500px; height:300px; overflow:auto;"> <div id="chatContent"> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> bla bla bla<br/> </div> </div> <input type="button" onclick="addNewContent()" value="Add new content"/><br/> </body> </html>
Bare tryk [Add new content] et par gange for at tilføje nok til at scrollen skal igang :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.