« November 2002 | Main | Desember 2003 »

Februar 2003 Archives

Februar 2, 2003

timer-lib.js

[English summary: timer-lib.zip is a multithreaded JavaScript timer library aiming for 25ms intervals on Win95/98/Me, where such an interval is not available (reference: Smooth animation using DHTML)]

For noen år siden ble jeg bedt om å programmere en tickertape i JavaScript. En slik applikasjon krever litt animasjon, noe jeg fant ut var vanskelig å få til. Efter mye testing skrev jeg en rapport om temaet, og denne ble senere publisert på DHTML Lab: Smooth animation using DHTML

Jeg hadde identifisert et problem, men det hjelper lite uten en løsning. Den enkleste løsningen er selvfølgelig å ignorere problemet, men jeg finner ofte mer tilfredsstillelse i å finne løsningen og da helst en jeg syns er vakker. Resultatet denne gangen ble et flertrådet lite bibliotek som kunne erstatte setInterval().

Biblioteket ligger ute på filen timer-lib.zip. Det er rimelig godt dokumentert i kildekoden og burde således være relativt lett å ta i bruk. Jeg har hatt det liggende tilgjengelig på web ganske lenge efter at det var interesse for det på DynApi2s mailing-liste "dynapi-help". Mottakelsen der var delt da animasjonene viste seg å gå dobbelt så fort som normalt, men det var jo liksom meningen. :)

Er løsningen vakker? Ikke godt å si, men jeg syns nå den i det minste kan kalles "elegant". Selv-korrigerende og flertrådet og allikevel rimelig enkel i bruk. Det er slikt jeg finner glede i å skrive.

Februar 11, 2003

IE scope problem

I går fikk jeg et interessant problem fra en tidligere arbeidskollega. Jeg har lagt opp test-caset som viser problemet, eventuelt mangelen på sådann (en takk til Øyvind som lagde caset). Mozilla takler dette helt fortreffelig og mener at tall fortsatt er tall. IE påstår derimot at et tall er ikke et tall, men et objekt. Hvilket selvfølgelig er interessant da dette problemet ikke inntreffer dersom du forsøker deg på:

var foo = new Number(8);<br>alert(foo instanceof Number);

(Men legg merke til at var foo = 8; alert(foo instanceof Number); gir 'false' som svar)

Problemet er altså at en objektreferanse til et Number-objekt sendt som et argument til en funksjon i et annet vindu (rammer er jo også vindusobjekter) ikke lenger er et skikkelig Number-objekt. Efter mye frem og tilbake samt en tur med gravemaskin i Microsofts JScript-dokumentasjon bestemte vi oss for at det beste var kanskje å finne en egenskap som identifiserte tallet. Ikke overraskende mener IE at konstruktøren til 'foo' er et tall, slik at følgende lille kodesnutt funker i IE:

if(n.constructor.toString().indexOf("Number") != -1) { }

Ordentlig bakvendt i mine øyne, men det fungerer.

About Februar 2003

This page contains all entries posted to JavaScript på norsk in Februar 2003. They are listed from oldest to newest.

November 2002 is the previous archive.

Desember 2003 is the next archive.

Many more can be found on the main index page or by looking through the archives.