Показать сообщение отдельно
  #1 (permalink)  
Старый 12.12.2010, 19:12
Новичок на форуме
Отправить личное сообщение для leha66 Посмотреть профиль Найти все сообщения от leha66
 
Регистрация: 07.12.2010
Сообщений: 7

setTimeout в браузере IE и Opera
Здравствуйте.
Не знаю, в тот ли раздел задаю вопрос, поэтому сразу извиняюсь.

Был написан скрипт, который по-разному работал на в браузере IE и Opera. Для диагностики проблемы был написан простенький скрипт, который приведён ниже:
<html>
    <head>
        <script>
            time_int = 1
            time_array = new Array()

            function get_time() {
                var wdata = new Date()
                return wdata.getMilliseconds() + (wdata.getSeconds() * 1000)
            }

            time_start = get_time()
            t1 = setTimeout(start, time_int)

            function start() {
                time_end = get_time() 
                delta = time_end - time_start
                time_array[time_array.length] = delta

                if (time_array.length != 100) {
                    time_start = get_time()
                    t2 = setTimeout(start, time_int)
                }
                else {
                    print_array()
                }
            }
 
            function print_array() {
                st = "" 
                for (i = 0; i < 100; i++) {
                    st = st + time_array[i] + " " 
                }
                alert(st)
            }
        </script>
    </head>
    <body>
    </body>
</html>

Суть следующая: берётся отметка времени, запускается функция setTimeout с заданным интервалом, снова берётся отметка времени, вычисляется разница времён. Так делается 100 раз. Ожидалось что эти разности времён примерно будут равны заданному интервалу.

Результат, который был получен в Опере: от 0 до 4, куча единиц.
Результат, который был получен в IE: от 8 до 21, в основном числа около 15.

Далее time_int увеличивал. В Опере всегда всё хорошо, а IE вплоть где-то до 25 показывал не то что хочеться.


Вопросы такие:

1) С чем это связано? IE тормоз, JS в IE тормозит, функция setTimeout в IE как-то по-другому работает или что ?

2) Мне необходимо некоторую функцию запускать каждые допустим 5 милисекунд. Как это можно сделать? (кроме как через setTimeout)

Благодарю.
Ответить с цитированием