Ga naar inhoud

Chatroom-script ruzie met IE


anoniem

Aanbevolen berichten

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!
Link naar reactie
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...
Link naar reactie
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! ;) )
Link naar reactie
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>
Link naar reactie
[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';
Link naar reactie
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>&nbsp;</TD><TD Width=450>&nbsp;</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!)
Link naar reactie
[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.
Link naar reactie
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!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...