05. maj 2005 - 21:53Der er
9 kommentarer og 1 løsning
SetInterval - hvor små intervaller?
I en Javascript-rulletekst har jeg forsøgt mig med setInterval("function_name()",milliseconds) hvor milliseconds=20 og det virker fortrinligt på min egen computer. På visse andre computere er rulleteksten usynlig, det må skyldes at disse computere ikke opdaterer ligeså tit som min. Findes der en metode til at checke opdateringshastigheden på den enkelte computer, sådan at min kode kunne tage højde for den? Jeg kan ikke gennemskue, om opdateringshastigheden afhænger af styresystem eller browser. Eller måske noget tredje (er der ikke noget der hedder clock-frekvens?)
Jeg tror ikke opdateringshastigheden har noget med det at gøre. Du skal nok lede efter årsagen til den "usynlige rulletekst" andre steder :) Prøv at smide din kode eller et link.
Gamle vejledninger anbefaler et minimum-antal millisekunder mellem opdateringer. Jeg husker ikke anbefalingen præcist, men det var i hvert fald under 18 opdateringer pr sekund. Men jeg har netop været inde på en hjemmeside, der sammenlignede forskellige browsere. Konklusionen var, at MSIE på windows 95 og windows 98 skulle bruge mindst 53 millisekunder mellem opdateringer.
Jeg venter med at smide kode - for jeg tror ikke problemet har med koden at gøre. Den fungerer i en Linux-maskine og på en MacIntosh, men kun "somme tider" på en bestemt bærbar med windows ME.
Så, nu har jeg overvundet min dovenskab og plukket koden ud af min side. I denne version har jeg dog brugt setTimeout i stedet for setInterval. Funktionaliteten er den samme.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head>
<script type="text/javascript"><!--
function ScrollStep() { Appetizerscrolled -= scrollpixels if (Appetizerscrolled == 0) { Appetizerscrolled=maxscroll marqueestring=marqueestring.substring(1,marqueestring.length)+marqueestring.substring(0,1) var showstring=marqueestring.substring(0,60) var showparts=showstring.split(" ") showstring="" for (var i=0; i<showparts.length; i++) {showstring+=showparts[i]+" "} appe.innerHTML=showstring } appe.style.left = Math.floor(Appetizerscrolled)+"px" setTimeout("ScrollStep()",milliseconds) } // ScrollStep
function GetElement(id) { if (document.all) {return window.document.all[id]} else {return window.document.getElementById(id)} }
Hrm, den kan jeg ikke gennemskue umiddelbart, men olebole lavede engang et cross-browser marquee-script, som jeg har et link til i en modificeret udgave: http://www.eksperten.dk/spm/543017
Pyt med koden. Den virker. Også cross-browser. Mit spørgsmål gælder hvordan jeg finder opdateringshastigheden på forskellige computere. Alle programmer med setTimeout og setInterval vil få problemer, hvis computeren ikke kan følge med.
(Jeg ved ikke rigtig hvilket forum spørgsmålet hører til i, men nu har jeg jo tilfældigvis lavet koden i Javascript. Og det KUNNE jo være at en af jer ...)
Ja koden virker crossbrowser, men hvor langt du kan gå tilbage mht. styresystemer har jeg ingen ide om. At langsom opdateringshastighed indvirker på visningen er vel ikke noget nyt, men at det skulle udvirke at intet vises har jeg svært ved at tro. Ked af at jeg ikke kunne hjælpe ;)
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.