25. maj 2004 - 19:28Der er
26 kommentarer og 1 løsning
opdatering uden klik og blink!
Har set 1000 spørgsmål med denne titel, og de er alle ens, men guys, læs nu lige det hele her, inden i lukker dette spm ned :)
som de fleste nok ved, så er der to måder at opdatere en side på, i JS.. den ene er: location.reload(true); den anden: location.href='side.htm';
Den første, altså location.reload(true); Den blinker forfærdelig meget. Hvorimod den anden, altså location.href='side.htm'; Den laver den der irriterende "KLIK" lyd, i IE.
Mit spm lyder: Kan man ikke kombinere det bedste fra de to "scripts", og dermed lave en opdatering som hverken klikker eller blinker?
Du smider location.reload(); i en skjult frame og sender beskederne over til siden de skal vises med insertAdjacentHTML() Så kan man ikke se den blinker og man kan ikke høre den opdaterer.
En anden ting er at det generelt er dårligt med konstant reload, trafikken bliver enorm, folks computere bliver overbelastet, det kan ses i top baren (det kan ikke undgås med nogen af dem), serveren bliver overbelastet etc. En anden løsning findes, men vil jeg ikke fortælle om her.
For at folk ved de godt kan undersøge sagen nærmere ;) Der findes mange andre løsninger, men det kommer også an på hvad server delen er programmeret i, i dette tilfælde ved jeg det er PHP men da der sikkert også findes en ASP vil jeg ikke komme nærmere ind på det, kun gøre folk opmærksom på det altså er en mindre god løsning
Tror han vil hen i noget innerHTML.. men det har ikke hjemme i dette spm, da jeg bare vil vide om man kan lave et update script som hverken klikker eller blinker :)
Du henviser til alle de andre spørgsmål, så du har altså forkastet ideen om den skjulte iframe, som laver en location.reload(true) og så ved hjælp af noget kald til modersiden eller en anden frame opdaterer noget tekst f.eks. via innerHTML ?-)
-- og når en ny side skal ind i browser-vinduet vil der altid komme et blink, måske oplever du det som mindre, når du sætter en ny location, men for browseren er det altså det samme, som sker visuelt: Alle hidtige pixels værdi slettes, og der skrives nogle nye værdier til de pixels !-)
efter at have forsøgt at få det til at virke i snart en måned, med hjælp fra forskellige mennesker, f.eks mr_bacardi her, så har jeg opgivet innerHTML - Og vil nu finde en løsning som er mindre avanceret, men som så desværre tager hårdere på serveren samt brugerens computer. Jeg er nået til det punkt i mine overvejelser, hvor det dårligste er godt nok :)
Hvad er det for en type opdatering, du skal have fat i ?-)
mr_bacardi skriver noget om billeder, derfor var jeg noget tilbageholdende i min kommentar, men det er faktisk ret nødvendigt at vide, for der kan være mange problemer med innerHTML, hvis det indeholder andet end ren tekst ...
Kan ikke lige se at mr bacardi skriver noget om billeder, men jeg skal bruge en opdatering som hverken blinker eller klikker, og jeg begynder at fornemme at det ikke kan lade sig gøre!?
Min løsning indeholder kort forklaring på hvordan du kan gøre det, plus lidt ekstra, men jeg er da ligeglad med om du accepterer det eller ej, var kun herinde fordi du gav mig linket ;) Anyways så virker det altså fint og det kan sagtens lade sig gøre, et andet godt eksempel på chat der ikke blinker eller klikker er min egen: www.chatisland.dk Hvor jeg har en PHP og JavaScript / DHTML løsning, som er bygget ud fra mine erfaringer, grundig søgning på google.com og meget læsning på php.net Ergo kan I andre, som kommer forbi, roligt prøve at lave det jeg beskriver, et generelt godt råd er at benytte google.com til at finde oplysninger om (JavaScript) funktioner.
... og naturligvis bør man ikke bruge insertAdjacentHTML(), da det er en proprietær MS-metode, der ikke hører til nogen standard for web- eller anden scripting
Ooops ... mit første indlæg røg vist i lokummet :D Vi prøver igen: roenving >> Nej, mit chat-skelet bruger ikke reload(). Jeg har længe ville lave en ny version - og har også en liggende - men har ikke haft tid til at dokumentere den. Den gamle blev til i løbet af en aften, så den er ikke videre 'afpudset' :)
mr_bacardi >> Jeg har lidt svært ved at finde det revolutionerende i din chat - bortset fra fraværet af valid kode. Dét er til gengæld yderst overbevisende og gennemført.
Jeg er klar over den ifølge sourcecoden og dokumentationer kun er kompitabel med IE, hvilket også kun var hensigten i starten, men jeg har erfaret den faktisk virker i mange andre browsere også. Det har også altid været min opfattelse at "valid kode" er noget nogen går op i, andre gør ikke, jeg gør det ikke da jeg ikke kan se en grund til en anden side skal kunne læse den og fortælle mig om den er "korrekt" lavet. Jeg kan jo selv se om den virker. Revolutionerende - det har jeg heller ikke sagt den er, i hvert fald ikke kodningen, men metoden jeg bruger med PHP (Som man jo ikke kan se i HTML "kildekoden") er yderst nyttig hvis man ikke vil benytte uddøende ting, som fx Java eller Flash.
roenving -> Ved ikke om det er min computer / browser der er meget anderledes end andres, men når jeg bruger IE6 så blinker det betydeligt mindre med location.href end med location.reload ...
roenving -> "Men du kan jo kigge på den opdatering af en iframe, som ligger lige her nede til venstre, den blinker jo hvert 5. sekund !-)" - Den forstod jeg ikke helt, hvilken opdatering af iframe, her nede til venstre ?
mr_bacardi >> Netop det, at din kode er så invalid, gør, at kildekoden er utrolig let at få fat i - og så er det jo spild af tid, du har slået alle de kolbøtter for at prøve at gemme den. Hvad det er for 'mange andre browsere', du mener den virker i, ved jeg ikke. I Mozilla/Netscape virker den ikke - og Opera går ned ... så deeeeet ..... :)
Jeg forstå ikke, hvad du mener med at 'en anden side skal kunne læse den og fortælle mig om den er "korrekt" lavet'. Hvis du mener W3C's validator, så behøver du jo ikke bruge den, forudsat du kan skrive HTML - og det er der intet, der tyder på i chatten.
Med mindre du patch'er din web-server med en special-skrevet udvidelse, kan du ikke lave push-teknologi via HTTP-protokollen, hvorfor klienten er nødt til at forespørge på serveren, om der er nye data. Man kan sætte PHP til at 'sove' med sleep(), men det er _langt_ dårligere performende end løbende forespørgsler til serveren, så det er en rigtig dårlig løsning :)
Gør jeg nu min kildekode svær at få fat på? - Det eneste af min kildekode jeg vil skjule, er min PHP kode, hvilket man ikke kan få fat på... Og kan ikke huske hvilke andre browsere det er, men har snakket med flere på min chat som sagde de ikke benyttede IE.
Nå men synes vi bliver lidt for off-topic, og det er bare den ene beskyldning efter den anden som kommer. Er ude af spørgsmålet...
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.