"Chrisser" <cbjDetteFjernes@egdatainform.dk> writes:
> > function doSomething(e)
> document.onkeyup = doSomething;
>
> Og så var jeg i tvivl om hvor jeg skulle få argumentet (e) fra, men det
> virker jo uden....
> Hvorfor ?
Fordi det du gemmer i document.onkeyup er en funktion. Den bliver kaldt
af browseren når du slipper en knap. I de fleste browsere bliver funktionen
kaldt med et argument: eventen, lige som hvis du selv havde kaldt den med
et argument.
I Internet Explorer bliver den kaldt uden et argument, og eventen er
at finde som den globale variabel "event". Derfor koden
if (!e) e = window.event;
(man bør droppe "var", da "e" som funktionsargument allerede er en
lokal variabel). Hvis funktionen kaldes uden et argument, så vil "e"
få værdien "undefined", og "!undefined" er true (mens "!<event>" er
false).
Jeg starter normalt altid mine event-handlere med
---
function (event) {
event = event || window.event; // IE sucks!
---
Det har samme funktionalitet: Hvis event ikke kom med som argument, så
sæt den lokale variabel "event" til indholdet af den globale event
variabel.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:
http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'