Avatar billede per1291 Nybegynder
05. maj 2005 - 21:53 Der 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?)
Avatar billede psykochicken Nybegynder
06. maj 2005 - 00:28 #1
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.
Avatar billede per1291 Nybegynder
06. maj 2005 - 00:42 #2
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.

Hilsen  Per
Avatar billede per1291 Nybegynder
06. maj 2005 - 01:15 #3
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]+"&nbsp;"}
  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)}
}

function InitAppetizer()
{
appe=GetElement("Appetizer")
appe.style.left = Appetizerscrolled + "px"
setTimeout("ScrollStep()",milliseconds)
}

var myInterval0,Appetizerscrolled=9,appe
var marqueestring="Meddelelse 1  ***  Meddelelse 2  ***  Meddelelse 3  ***  Meddelelse 4  ***  "
var milliseconds=20,maxscroll=9,scrollpixels=1

//-->
</script>

<style type="text/css">
  #Appetizer {position:absolute; top:0px; left:0px; z-index:2; width:540px; height:18px; text-align:center; font-family:Courier, MS Courier New, monospace; overflow:hidden; letter-spacing:0px; }
</style>

</head>

<body onload="java script:InitAppetizer()">

<div id="Appetizer"></div>

</body>
</html>
Avatar billede roenving Novice
06. maj 2005 - 11:59 #4
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
Avatar billede per1291 Nybegynder
06. maj 2005 - 23:33 #5
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 ...)

Hilsen  Per
Avatar billede psykochicken Nybegynder
07. maj 2005 - 00:13 #6
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 ;)
Avatar billede per1291 Nybegynder
11. maj 2005 - 02:07 #7
Tak fordi I forsøgte.

Jeg har fundet en brugbar løsning: Man måler opdateringshastigheden i løbet af det første sekund, og laver derudfra sin korrektion.

Det viser sig dog, at min Netscape-browser bliver langsommere undervejs. Af den grund laver jeg nu en løbende korrektion.

Hilsen  Per
Avatar billede per1291 Nybegynder
11. maj 2005 - 02:16 #8
Hov - hvorfor kan jeg ikke acceptere et svar fra mig selv?

Per
Avatar billede roenving Novice
11. maj 2005 - 09:39 #9
Du skal markere dit navn i boksen til venstre før du trykker på Acceptér ...
Avatar billede per1291 Nybegynder
12. maj 2005 - 01:29 #10
Tak til roenving.

Per
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester