| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Сложный скрипт который тормозит систему HELP |
| Автор: MalerGSG 16.12.2009, 17:34 |
| Работу этого скрипта Вы может просмотреть на сайте: www.tscenter.globalsitegroup.ru Он отвечает за "прокрутку" блоков посреди страницы, я не знаю что сделать чтобы облегчить учесть процессора. При работе одного только браузера загрузка цп скачит от 70 до 90 процентов. Пытался поставить задержку загрузки не помогает! В распараллеливании серверов смысла нет он тормозит систему даже с одним юзером на сайте. Вобщем HELP ME! Вот собственно сам скрипт. <script language="javascript"> var run=0; var xx=0; var wid; var w; var timeout_id; var timeout_id1; var MouseX; window.onload = function(){ wid=window.screen.width; w = (wid-758)/2; //var l = document.getElementById("leftt"); //document.getElementById("rightt").style.width = w + "px"; //rightt = document.getElementById("rightt"); //rightt.width = w + "px"; //l.style.width = w + "px"; //document.getElementById("left_navi").style.marginLeft = w - 32 + "px"; //left.width = w + "px"; run=1; MouseX = 200; setSpeed(MouseX,1); } function setRight(){ xx = xx - 1 ; document.getElementById("cont_m").style.marginLeft = xx + "px"; if (xx<-1283){ xx = -84; } if(run==1){ } } function getResim(ev){ navname = navigator.appName; if (navname=="Netscape"){ getMouseX(ev); }else{ mousePageX(); } } //for mozilla function getMouseX(ev){ //clearTimeout(timeout_id); //clearTimeout(timeout_id1); MouseX = ev.pageX; //setSpeed(MouseX,1); } //for IE and opera function mousePageX() { //clearTimeout(timeout_id); //clearTimeout(timeout_id1); MouseX = event.x; //setSpeed(MouseX,1); } function setSpeed(mouseX,runn){ if (runn==1){ var hcenter = 379; if (MouseX>hcenter){ var speed = (MouseX - hcenter)/25; speed = speed.toFixed(0); run=1; timeout_id1 = setTimeout(" setRight()",400); } if (MouseX<hcenter){ //alert(mouseX); var speed = (hcenter - MouseX)/25; speed = speed.toFixed(0); run=1; timeout_id1 = setTimeout(" setLeft()",400); } clearTimeout(timeout_id); timeout_id = setTimeout(" setSpeed(MouseX,1)",10); } } function setLeft(){ xx = xx + 1 ; //alert(speed); document.getElementById("cont_m").style.marginLeft = xx + "px"; if (xx>-84){ xx = xx-1200; } if(run==2){ } } function setrun(){ run =1; } function setstop(){ run =0; } </script> </head> Что сделать чтобы оставить этот эффект но при этом снять нагрузку с ЦП. С уважением Александр! |
| Автор: IDVsbruck 17.12.2009, 12:23 |
| Ссылка не работает. Понятно, что ты грузишь проц частым обращением: timeout_id = setTimeout(" setSpeed(MouseX,1)",10); Возможно, надо подумать над тем, чтобы использовать обработчики событий при попадании в зону. |
| Автор: MalerGSG 21.12.2009, 15:20 |
| А что-нибудь по конкретней? Я новичёк в JS. |
| Автор: Nanna 22.12.2009, 07:20 |
| ага onMouseOver и onMouseOut а может быть более эффективно было бы написать скриптик на флэше?? или аякс использовать |
| Автор: MalerGSG 22.12.2009, 09:07 |
| |