anoniem Geplaatst: 12 januari 2004 Delen Geplaatst: 12 januari 2004 Hi all, Ik probeer zelf een chatroom-script te schrijven. Nu zijn er 2 dingen essentieel: het automatisch verversen van de berichten EN het automatisch naar onder scrollen. Voor het scrollen had ik dit bedacht: het PHP script dat een nieuw bericht toevoegt aan messages.htm voegt onderaan ook een anchor <A name="END"></a> toe (haalt eerst vorige anchor weg). Vervolgens kun je dus als URL "messages.htm#END" gebruiken... Refresh 'spreekt voor zich', dus het resultaat werd: <META HTTP-EQUIV="refresh" content="3; URL=messages.htm#END"> Ik gebruik win98SE met IE50 en die snapt deze geldige URL uiteraard. Maar helaas hebben die knurften bij M$ nog nooit gehoord van "downward compatible" en blijkt dat als je het END-anchor gebruikt in het 'geavanceerde' IE60 het verversen ook 'in de ankers' gaat... (Of andere versies werken weet ik niet) Dus.... dan maar een 'gewone' URL (zonder anchor) en dan een javascriptje voor het scrollen: <script language="javascript">self.location="#END";</script> Leuk bedacht, maar DAT werkt weer niet in IE50 :evil: Heb ook nog dit geprobeerd: <BODY onLoad=window.setTimeout(\"location.href='messages.htm#END'\",3000)> maar dat verhelpt niets. Mijn vraag na dit lange verhaal: hoe krijg ik dit WEL werkend onder alle (gangbare) browsers?? Mijns inziens heb ik gedaan wat ik kon met mijn huidige kennis... (Ik kan redelijk met HTML en PHP overweg, maar mijn javascript kennis is erg beknopt) Wie kan en wil me hierbij helpen? Alvast bedankt! Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Je zou de [b:8dff91a190]location.hash[/b:8dff91a190] property nog kunnen proberen. Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Hoi Annie, Zoals ik al zei, m'n javascript kennis is nog erg beknopt. Ik denk dat je dit bedoelde: <HTML> <HEAD> <META HTTP-EQUIV="refresh" content="3; URL=messages.htm"> <SCRIPT language="javascript">location.hash='#END';</SCRIPT> </HEAD> <BODY bgcolor=#000000>bla bla.... maar dat werkt helaas nog steeds niet in IE50: geen refresh, laat staan scrolldown. Ook als ik javascript na <BODY> tag plaats werkt t niet... Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 En als je het JavaScript pas ná het laden van de pagina aanroept, dus met het onLoad-event... - Bas Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Hi, Zelfde laken en pak: in IE50 wel scroll down maar geen auto refresh meer... :( Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Waarom gebruik je de meta refresh tag? Probeer dat anders ook eens met JavaScript. Dus in het onLoad-event zet je eerst een timer die start, vervolgens scroll je naar beneden. Zet er geen [i:a2189d90b6]return false;[/i:a2189d90b6] in, anders werkt het waarschijnlijk niet... - Bas Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Hmm, nu wordt t vreemd: als ik de messages.htm open zie ik hem verversen en de url steeds veranderen in messages.htm#END Maar de toegevoegde messages komen er TOCH pas bij na een lel op de F5 toets en niet automatisch... Er is dan - als je javascript gebruikt -blijkbaar meer aan de hand, iets met de cache dat anders werkt dan bij de META-tag... ( :cry: als ze t nou s gewoon zo hadden gelaten in IE60, was ik eergisteren met m'n <META HTTP-EQUIV="refresh" content="3; URL=messages.htm#END"> gewoon klaar geweest... Knurften bij M$, ik zweer t je! ;) ) Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Voor de volledigheid, m'n htm ziet r nu zo uit: <HTML> <HEAD> <SCRIPT language="javascript"> function ScrollDn() { window.setTimeout("location.href='messages.htm'",3000); location.hash='#END'; } </SCRIPT> </HEAD> <BODY bgcolor=#000000 onLoad="ScrollDn()"> ...blaat... <A NAME="END"></A> Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 Uiteraard wil ik de code zo beperkt mogelijk houden op een pagina die door meerdere gebruikers elke 3 seconden opnieuw ingelzeen moet worden, maar t moet wel werken natuurlijk... Kan iets in de trend van onderstaand script misschien werken? (Ik krijg nu nog 'fout op pagina') <HTML> <HEAD> <SCRIPT language="javascript"> var meta='#END'; if (navigator.appVersion.indexOf("5.5")>-1)) meta=''; document.write('<META HTTP-EQUIV="refresh" content="3; URL=messages.htm'+meta+'">'); function ScrollDn() { if (navigator.appVersion.indexOf("5.5")>-1)) location.hash='#END'; } </SCRIPT> </HEAD> <BODY bgcolor=#000000 onLoad="ScrollDn()"> ...blaat... <A NAME="END"></A> Quote Link naar reactie
anoniem Geplaatst: 12 januari 2004 Auteur Delen Geplaatst: 12 januari 2004 [quote:14354e9c11="Nick1812"]Kan iets in de trend van onderstaand script misschien werken? (Ik krijg nu nog 'fout op pagina') [/quote:14354e9c11] Natuurlijk kan dat werken. Of de browserdetectie de beste methode is weet ik alleen niet. Heb je al gezocht op browser specifieke bugs? IE5.0 stond er om bekend dat het behoorlijk wat steekjes liet vallen. Je fout wordt in ieder geval veroorzaakt doordat je een haakje te veel hebt staan in onderstaande regel. if [color=blue:14354e9c11][b:14354e9c11]([/b:14354e9c11][/color:14354e9c11]navigator.appVersion.indexOf[color=violet:14354e9c11][b:14354e9c11]([/b:14354e9c11][/color:14354e9c11]"5.5"[color=violet:14354e9c11][b:14354e9c11])[/b:14354e9c11][/color:14354e9c11]>-1[b:14354e9c11][color=blue:14354e9c11])[/color:14354e9c11][/b:14354e9c11][color=red:14354e9c11][b:14354e9c11])[/b:14354e9c11][/color:14354e9c11] location.hash='#END'; Quote Link naar reactie
anoniem Geplaatst: 13 januari 2004 Auteur Delen Geplaatst: 13 januari 2004 OK, ik vrees dat het scrollen naar een anchor vrij lastig gaat worden, dus ik ben ff aan het brainstormen geslagen en heb vervolgens internet afgestruind. Hier komt mijn 'schot voor de boeg' - Barstensvol met fouten waarschijnlijk, maar de 'oude rotten' zullen begrijpen waar ik heen wil. Voor de volledigheid enige uitleg wat ik in gedachten heb: * Chatters kunnen hun eigen kleur kiezen, dus eerst wordt array met mogelijke kleuren gedefinieerd * Begin <TABLE> (bepaal alvast breedte van kolommen) * Bepaal huidige lengte van message.txt, als message.txt langer is dan vorige keer, dan: - open messages.txt - ga naar positie waar vorige keer is geeindigd - totdat eof is bereikt lees regel, split regel in array, zet info in table - als eof: bewaar positie en lengte - sluit messages.txt [code:1:c37ed0099b] Colors=new Array("","C00000","E88800","FFDD22","008000","2020C0","800080","555555","999999","FF00FF","0080C0","00BB00","FFEE66","FFAA44","FF5048"); document.write('<TABLE BGColor=#000000><TR><TD Width=100> </TD><TD Width=450> </TD></TR>'); MessageFile = new File("messages.txt"); var Len=MessageFile.getLength(); if (Len>OldLen) { FileOpen = MessageFile.open("r"); if (FileOpen) { MessageFile.setPosition(Pos); while (!MessageFile.eof()) { Line = MessageFile.readln(); if (MessageFile.eof()) { var Pos=MessageFile.getPosition; OldLen=Len; } else { LineArray=Line.split("|"); var Name=LineArray[0]; var Color=LineArray[1]; var Message=LineArray[2]; document.write('<TR><TD align=right><FONT Face=Tahoma Size=2 Color=#'+Colors[Color]+'><b>'+Name+'</TD>'); document.write('<TD><Font Face=Tahoma size=2 color=#80c090><b>'+Message+'</TD></TR>'); } MessageFile.close(); } } } [/code:1:c37ed0099b] Het liefst giet ik dit later nog in een form dat automatisch wordt ververst, zoals bijv. in een klok-scriptje (ben je ook meteen af van het 'Navigeren beginnen-geluid' af...) Heeft zoiets 'overlevingskans'? Zijn er eventuele beperkingen zoals maximale lengte van 255 tekens per regel in het message.txt bestand? Zal ik hiermee verder wroeten of kan ik beter nog ff verder brainstormen? (In elk geval hartstikke bedankt voor de moeite so far!) Quote Link naar reactie
anoniem Geplaatst: 13 januari 2004 Auteur Delen Geplaatst: 13 januari 2004 [quote:4baa770bc2="Nick1812"]... maar de 'oude rotten' zullen begrijpen waar ik heen wil...[/quote:4baa770bc2]Nou, deze ouwe rot kan je effe niet meer volgen ;) Ben je nu ineens bezig met client-side vb-script ipv PHP? Waarom? Wat biedt het als voordeel boven de anchor-methode? En hoe ga je de gegevens van de ene client nu naar de andere client overbrengen? Even een wel heel erg voor de hand liggende oplossing: is het geen optie dat je de berichten gewoon anders sorteert, dus de laatste boven? Andere optie waar je eens op kan gaan zoeken: stop alles in een "container" (window/div/iframe/...) waarvan je de hoogte kan bepalen en gebruik [url=http://www.devguru.com/Technologies/ecmascript/quickref/win_scrollto.html]window.scrollTo()[/url] om daarnaar toe te scrollen. Of (heel ranzig) misschien werkt een absurd hoge waarde wel om naar onder te scrollen. Quote Link naar reactie
anoniem Geplaatst: 13 januari 2004 Auteur Delen Geplaatst: 13 januari 2004 Hi Annie, Ik probeerde inderdaad het probleem vanuit een totaal andere hoek te bekijken. Zo leer ik er het meest van... Er zijn tenslotte vele kant-en-klare chat-scripts te vinden op internet. Voordelen van deze (misschien omslachtige) manier was in mijn visie: - geen geknipper van het beeld en geen 'navigeren beginnen' geluid - niet onnodig elke 3 seconden de hele history laden, maar alleen de nieuwe berichten en alleen als er idd een bericht bij is gekomen. - ipv htm-bestand waarin je voor kleurverandering volledig <FONT>-tag moet invoegen, kun je nu met een veel kleiner txt-file werken: "naam|kleur-nr|bericht" is genoeg. Bovendien wordt het eenvoudiger om naam en bericht te scheiden in kolommen, wat de leesbaarheid verhoogt. Het nadeel van een anchor is simpelweg dat ik t nog steeds niet onder alle versies van IE werkend heb gekregen... Nieuwe berichten boven, dan hoef je inderdaad überhaupt niet te scrollen... Maar heel eerlijk gezegd ben ik t niet met je eens dat dit voor de hand liggend is. Bij lezen/schrijven komt voor mij regel 2 altijd ONDER regel 1 en niet andersom (alleen in China of zo geloof ik). Ik hield deze quick'n'dirty "oplossing" in gedachte als laatste redmiddel... Maar wat ik wel leer uit je post is dat je met windows.scrollTo() niet voorbij het einde kan scrollen en daar was ik wel vanuit gegaan... En zo absurd groot hoeft Y niet te worden; ik wilde toch al een maximale omvang van het messages-file instellen. Dus dat ga ik nog ff proberen, maar ik ga denk ik óók nog ff kijken wat ik van de omslachtige manier kan bakken, goed voor m'n know-how ;) Thanx heaps in elk geval! Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen