Javascript

Старый mweb

Модератор: [mweb team]

Javascript

Сообщение Padonak Сб сен 25, 2010 12:09

дада снова это сладкое слово друзья!
итак. пишу User Script. поэтому к редактированию сорцов никакого доступа не имееца и происходит манипулирование лишь тем что дает страница. возникла необходимость добавки некоторых действий в существующую уже на странице функцию(и возможно не в одну). там такая фигня - летит флот куда-нибудь и на странице отображается таймер сколько осталось времени ему лететь. таких таймеров может быть много - от 1 до 15 или даже больше. каждый таймер прописан в странице своей собственной отдельной функцией. вот пример такого таймера:
Код: Выделить всё
<tr class="flight">
   <script type="text/javascript">
function tfs1() {
v = new Date();
var bxxfs1 = document.getElementById('bxxfs1');
n = new Date();
ssfs1 = ppfs1;
ssfs1 = ssfs1 - Math.round((n.getTime() - v.getTime()) / 1000.);
mfs1 = 0;
hfs1 = 0;
if (ssfs1 < 0) {
   bxxfs1.innerHTML = "-";
} else {
   if (ssfs1 > 59) {
      mfs1 = Math.floor(ssfs1 / 60);
      ssfs1 = ssfs1 - mfs1 * 60;
   }
   if (mfs1 > 59) {
      hfs1 = Math.floor(mfs1 / 60);
      mfs1 = mfs1 - hfs1 * 60;
   }
   if (ssfs1 < 10) {
      ssfs1 = "0" + ssfs1;
   }
   if (mfs1 < 10) {
      mfs1 = "0" + mfs1;
   }
   bxxfs1.innerHTML = hfs1 + ":" + mfs1 + ":" + ssfs1;
}
ppfs1 = ppfs1 - 1;
window.setTimeout("tfs1();", 999);
}
</script>

   <th>
      <div id="bxxfs1" class="z">-</div>
      <font color="lime">12:59:41</font>
   </th>


другие таймеры если они есть будут выглядеть точно так же с той лишь разницей что имя ф-ции будет отличаться цифрой (tfs2(),tfs3(),tfs4() и т.д.) и так же будут отличаться дивы куда оно пишет время(bxxfs2,bxxfs3,bxxfs4 и т.д.).

у меня есть необходимость совершить вывод определенной инфы в тот момент когда каждый таймер дойдет до нуля и покажет в диве "-".

сам вопрос мой состоит в следующем. существует ли способ обхода циклом всех джаваскрипт-функций в документе (типакаг перебор коллекции document.functions или что-то в таком роде)? я представляю себе это так: цикл обходит все ф-ции и если в имени ф-ции находит определенный сабстринг(в данном случае это будет if(funcname.indexOf('tfs')) != -1) то происходит оверрайт данной ф-ции а если нет то продолжает просто перебор.

атаки на некоторых юзеров этого форума посрецтвом аськи дали лишь частичный результат(за что естественно большой им респект) но это касалось оверрайтинга. так что мислости просим камрады! не стесняемя высказываем свои соображения. флуд в виде сисег тоже приветствуеца но желательно что-то и по делу.
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Javascript

Сообщение Padonak Вс сен 26, 2010 11:04

уважаемыйе девианты! хватит бухать! тема по-прежнему актуальна -12-
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Javascript

Сообщение Jedi Пн сен 27, 2010 2:50

я хз
Аватара пользователя
Jedi
Хронический Астматик
 
Сообщения: 1852
Зарегистрирован: Вс сен 08, 2002 0:01
Откуда: Russia

Re: Javascript

Сообщение skreets Пн сен 27, 2010 10:04

я тоже...
Водка не что! Плюшки ВСЕ!!! ГАШИШЬ - не дай печени aхуеть!!!
Аватара пользователя
skreets
Курильщик
 
Сообщения: 310
Зарегистрирован: Вс мар 16, 2003 1:01
Откуда: Москва/Россия

Re: Javascript

Сообщение Muerto Пн сен 27, 2010 12:31

В принципе, я тебе уже отписался в аську. Методом гавнокода можно решить примерно так:
Код: Выделить всё
function message(i)
{
try
  {
  tfs = tfs + i + '(bxxfs'+i + ', 0)';
eval(tfs);
  }
catch(err)
  {
  return false;
  }
finally {
if (err) {return false;} else {message(i+1);}
     }
}

Не ручаюсь, что код работает и работает так как нужно.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Javascript

Сообщение Muerto Пн сен 27, 2010 12:58

Накрайняк можно разместить все функции в отдельные блоки и обращаться через массив document.getElementsByTagName("script") к ним.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Javascript

Сообщение Padonak Пн сен 27, 2010 13:34

мне вот что еще не до конца ясно. если я делаю оверрайт функции то она некоторым образом изменяется. но все эти таймеры уже запущены т.е. функции работают к тому моменту когда я начну делать оверрайт т.к. Юзер Скрипт срабатывает после загрузки. то что они запущены не помешает оверрайту?
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Javascript

Сообщение Muerto Пн сен 27, 2010 15:06

Ух, блин... Ну ты, барин, и вопросы задаешь... Пошукай на http://javascript.ru/tutorial/events/timing
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Javascript

Сообщение Padonak Пн сен 27, 2010 15:57

а кто виноват што я в такие дебри ваще забрался? кто мне тут все время подсказывал? из-за кого мне джаваскрипт нравица? а??? Изображение вот теперь и расхлебывай -12-
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Javascript

Сообщение Padonak Пн окт 25, 2010 21:03

вобщем написал-таки я оверрайт с добавкой всякой прикольной фигни с джикваерей. вот функцейа:

Код: Выделить всё
function overviewTimersOverwrite(){
var divs=document.getElementsByTagName('DIV'),timers=[];
for(var i=0;i<divs.length;i++){
if((divs[i].id)&&(divs[i].id.indexOf('bxx')!=-1)){var suffix=divs[i].id.substring(3,divs[i].id.length),temparr=[divs[i].id,suffix];
timers.push(temparr);}
else{continue;}
}
if(timers.length>0){
for(var f=0;f<timers.length;f++){
var nax=eval('t'+timers[f][1]);
// этот eval идет в одну строку я просто для удобства восприятия разбил на строки
eval('t'+timers[f][1]+'=function(){
v=new Date();
var divv=document.getElementById("'+timers[f][0]+'");
n=new Date();
ssfs2=pp'+timers[f][1]+';
ssfs2=ssfs2-Math.round((n.getTime()-v.getTime())/1000.);
mfs2=0;
hfs2=0;
if(ssfs2<0){divv.innerHTML="-";
var $tr=$("#'+timers[f][0]+'").parent().parent();
$tr.children().fadeTo(3500,0.3);
$("#'+timers[f][0]+'").parent().html("<img src=\'http://padonak.lv/_paskuda/ogame/orange_check.png\' alt=\'выполнено\' onmouseover=\'$(this).parent().siblings().fadeTo(500,1);\' onmouseout=\'$(this).parent().siblings().fadeTo(1000,0.3);\' onclick=\'$(this).parent().parent().remove();\' style=\'cursor:pointer\' \/>");
return;
}
else{
if(ssfs2>59){mfs2=Math.floor(ssfs2/60); ssfs2=ssfs2-mfs2*60;if(mfs2>59){hfs2=Math.floor(mfs2/60);mfs2=mfs2-hfs2*60;}if(ssfs2<10){ssfs2="0"+ssfs2;}
if(mfs2<10){mfs2="0"+mfs2;}
divv.innerHTML=hfs2+":"+mfs2+":"+ssfs2;
}
pp'+timers[f][1]+'=pp'+timers[f][1]+'-1;
window.setTimeout("t'+timers[f][1]+'()",999);}');
}
}
else{return;}
}


а вот как оно выглядит в работе:

Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Re: Javascript

Сообщение Muerto Вт окт 26, 2010 8:19

ogame?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Re: Javascript

Сообщение Padonak Вт окт 26, 2010 22:21

Muerto писал(а):ogame?


почти -03- http://xgame.net.ua/uni4/ то же самое что огейм
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону


Вернуться в Архив

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

cron