webForumDet fria alternativet

time out?

JavaScript

4 svar · 259 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Vad är fel på denna?
Det är ingen tidsfördröjning.

<body onLoad="setTimeout(window.open('popup.asp','','width=640,height=480,scrollbars=auto'),3000);">
Medlem sedan feb. 2003774 inlägg
#2

window.setTimeout tar 2 parametrar som strängar:

<body onLoad="setTimeout('window.open(\'popup.html\',\'\',\'width=640,height=480,scrollbars=auto\')',3000);">

Medlem sedan nov. 20017 144 inlägg
#3

Ok, fattar inte men det funkar. Tack!

Medlem sedan sep. 20021 655 inlägg
#4

Tänk dig att setTimeout använder eval() på det första argumentet.

eval("var foo = 1 + 5;");
setTimeout("var foo = 1 + 5;", 500);

De båda raderna gör precis samma sak, förutom att den andra raden inte utför något förrän efter en halv sekund.

Medlem sedan juni 20004 308 inlägg
#5

Bara en liten sak som gör att raderna inte är riktigt ekvivalenta. Nyckelord som this tappar funktion vid setTimeout eftersom objektet som de syftar på inte är aktuellt längre. Exempel;

<a href="sida.html" onclick="eval('alert(this.href)'); return false;">klicka</a>
<a href="sida.html" onclick="setTimeout('alert(this.href)',10); return false;">klicka</a>

Påpekar det bara eftersom det ofta skapar huvudbry har jag märkt.

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)