PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JS: Opera & setTimeout


Marscel
2007-07-10, 01:05:37
Dieses Skript funktioniert nicht so, wie es soll, mit Opera:
http://pcreact.de/misc/test.html

Und auch nicht mit dem IE, aber da weiß ich, wieso. Mit Firefox wunderbar.

Kann mir jemand sagen, wieso Opera diese Funktion "scrolldown" nur 1x ausführt?

window.setTimeout("scrolldown('"+id+"', "+(--px)+")", 1);

Das möchte nicht. Kann mir einer sagen, warum?


var runned = 0;

function scrollback(id, px)
{
var oItem = document.getElementById(id);
if(oItem)
{
if(runned == 0)
{
runned = 1;
oItem.childNodes[1].innerHTML = 'Tada!!';
oItem.style.visibility = 'visible';
}

if(px <= 20)
{
oItem.style.marginTop = px+'px';
window.setTimeout("scrollback('"+id+"', "+(++px)+")", 1);
}
}
return;
}

function scrolldown(id, px)
{
var oItem = document.getElementById(id);
if(oItem)
{
if(px > (-19))
{
oItem.style.marginTop = px+'px';
window.setTimeout("scrolldown('"+id+"', "+(--px)+")", 1);
}
else
{
oItem.style.visibility = 'hidden';
window.setTimeout("scrollback('"+id+"', "+px+")", 1);
runned = 0;
}
}
return;
}

function action(id)
{
var oListItem = document.getElementById(id).parentNode;
var strListItemId = oListItem.id;
if(oListItem)
{
scrolldown(strListItemId, 20);
}
return;
}

Gast
2007-07-10, 09:39:01
findest du nicht, dass 1ms ein bisschen zu kurz ist? damit versucht der browser 1000fps (!) zu rendern...

Gast
2007-07-10, 09:40:45
mit opera 9.20 unter linux funktioniert deine testseite einwandfrei.

Gast
2007-07-10, 09:41:50
korrektur: ich meinte opera 9.21

Marscel
2007-07-10, 12:32:16
findest du nicht, dass 1ms ein bisschen zu kurz ist? damit versucht der browser 1000fps (!) zu rendern...

Es macht keinen Unterschied, ob ich 1 oder 20ms nehme, die Browser haben irgendwo ein Limit, da braucht diese Aktion bei mir etwa eine Sekunde, eher mehr.

mit opera 9.20 unter linux funktioniert deine testseite einwandfrei.

korrektur: ich meinte opera 9.21

Du hast Recht, mit dem hochgeladenen Beispiel geht es, aber nicht lokal auf der Festplatte... :|