Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.11.2009, 17:18
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

работа settimeout с разной скоростью
Никто не замечал что settimeout в разных браузерах работает с разной скоростью? К примеру ставлю задержку 10 - в FF, chrom, safari работает одинаково быстро, в Opera просто ОЧЕНЬ быстро, а в ие(любом) ООЧень медлинно, - если скажем увеличиваю картинку, так вобще практически слайдшоу получается.
Нет ни у каво идей как это компенсируется, или выравнивается?
Ответить с цитированием
  #2 (permalink)  
Старый 15.11.2009, 19:11
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Давайте вы сначала код покажите, чтобы мы не гадали, что там за мистика со временем творится?
Ответить с цитированием
  #3 (permalink)  
Старый 15.11.2009, 19:55
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

код показывать не буду, поскольку вы мозги сломаете , но смысл мне кажется я уже догоняю: у меня запускается одновременно несколько таймеров, для всех браузеров это нормально, а вот ие тупит... Тормозит. Как будто он думает так: ага, таймер хочет запустится, стоп а вот ещё один, и ещё... нет, давайте-ка я всех поочереди, ибо я уродское, гадкое, и навсё наплюющее творение майкрософт
Я прав?

А несколько таймеров - это когда мышкой ведёш по ряду картинок, по наведению все картинки увеличиваются, по убиранию уменьшаются.

Последний раз редактировалось arma, 15.11.2009 в 19:59.
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2009, 21:09
Аспирант
Отправить личное сообщение для PepeL Посмотреть профиль Найти все сообщения от PepeL
 
Регистрация: 30.09.2009
Сообщений: 61

не прав! нет плохих браузеров есть плохие программисты
Ответить с цитированием
  #5 (permalink)  
Старый 15.11.2009, 21:12
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

я спрашивал не про хороший/плохой ли браузер
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2009, 21:21
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

arma, тебе видней конечно о чем ты спрашивал, но вот я тоже сперва подумал, что в посте №3 вопрос о браузерах. По вопросу из первого поста, возможно, поможет эта статья: http://javascript.ru/tutorial/events/timing
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2009, 21:34
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Octane, код скажем такой:
<img id="1" src="fig.gif" count="0" width="100" height="100" onmouseover="dotime(this.id)" />
<img id="2" src="fig2.gif" count="0" width="100" height="100" onmouseover="dotime(this.id)" />
<img id="3" src="fign.gif" count="0" width="100" height="100" onmouseover="dotime(this.id)" />

function dotime(id)
{
  размер фотки++
  if (document.getElementById(id).count<10)
  {
    setTimeout(function(){dotime(id), 10);
    document.getElementById(id).count++;
  }
  else
  {
    chekout(id);
  }
}

function chekout(id)
{
  если мыш вылезла за пределы изображения
  {
    out(id);
  }
  else
  {
    setTimeout(function(){chekout(id), 10);
  }
}
function out(id)
{
  размер фотки--;
  if (document.getElementById(id).count>0)
  {
    setTimeout(function(){out(id), 10);
    document.getElementById(id).count--;
  }
}

поясню, что функция chekout ждёт, когда мыш вылезет за картинку, т.к. onmouseout бывает не срабатывает, когда по картинке очень быстро провести мышкой, или резко её с неё убрать.

Последний раз редактировалось arma, 15.11.2009 в 21:39.
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2009, 21:48
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Riim, я считаю, что веб-програмирование, - это бесконечная борьба с браузерами. В данной задаче меня выбешивает ИЕ, чаще бывает иначе. В посте 3 я спрашмвал, правильно ли то, что ие тупит из за того, что запущенно много таймеров, а про браузеры у меня своё сложившиеся мнение, которое веб-програмисту обсуждать с другими веб-програмистами просто тупа (а ля я считаю что этот круче, этот хуже... - заказчику на это глубако пливать).

За статью спасибо. Интересно.
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2009, 22:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Зачем передавать id, если можно передать ссылку на элемент, чтобы не выполнять потом поиск этого элемента с помощью getElementById?

<img src="fig.gif" count="0" width="100" height="100" onmouseover="dotime(this)" alt="" />

function dotime(node)
{
  //размер фотки++
  if (node.count<10)
  {
    setTimeout(function(){    dotime(node)   }, 10);
    node.count++;
  }
  else
  {
    chekout(node);
  }
}

Кстати, так заметно быстрее должно заработать. Оптимизируйте, сделать один таймаут не сложно.
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2009, 23:02
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

я думал ссылка на элемент по таймауту не передаётся
Блин, когда много пишеш некогда проверять, лиш бы работало
Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аргументы в setTimeout - проблема в IE 6 micscr Общие вопросы Javascript 8 28.09.2009 13:08
setTimeout Воитель Общие вопросы Javascript 5 23.01.2009 10:36