Na stronie http://immortal-fighters.pl/, na dole mają się znajdować 3 przewijarki. Póki co zrobiłem tylko jedną, ale każdy kto wejdzie ma od razu zużycie procesora bliskie 100%, oraz zacinanie całkowite. Robiłem już ze 3 zmiany, żeby odciążyć JS, a wszystko robić przez PHP. Teraz skrypt wygląda tak:
Kod
<script type="text/javascript">
window.addEvent('load', function(){
var total = 0;
$$('#leftCont0 .contElement').each(function(el){
var img = new Asset.image(el.getFirst('a').getFirst('img').get('src'));
total += img.height;
});
$$('.leftCont').each(function(el){
var h = parseInt(el.get('id').substr(8));
el.setStyle('top', h * total);
});
move.periodical(100, null, total);
});
function move(num)
{
$$('.leftCont').each(function(el){
var act = el.getStyle('top');
var n = parseInt(act)+1;
el.setStyle('top', n+"px");
if(parseInt(el.getStyle('top')) > 400)
{
el.setStyle('top', '-'+num+'px');
}
});
}
</script>
window.addEvent('load', function(){
var total = 0;
$$('#leftCont0 .contElement').each(function(el){
var img = new Asset.image(el.getFirst('a').getFirst('img').get('src'));
total += img.height;
});
$$('.leftCont').each(function(el){
var h = parseInt(el.get('id').substr(8));
el.setStyle('top', h * total);
});
move.periodical(100, null, total);
});
function move(num)
{
$$('.leftCont').each(function(el){
var act = el.getStyle('top');
var n = parseInt(act)+1;
el.setStyle('top', n+"px");
if(parseInt(el.getStyle('top')) > 400)
{
el.setStyle('top', '-'+num+'px');
}
});
}
</script>
Nawet gdyby to było w czystym JS, to b nic nie zmieniło. Robiłem to samo we flashu, i też zabijało procesor. Co jest? Czemu tak się dzieje?
Teraz w skrypcie zmieniłem okres wywoływania z 10 milisekund, na 100.
Przecież skrypt nie jest jakiś rozbudowany. Ma tylko zmieniać pozycję top i tyle. Czemu zabija? Pomocy.