Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.12.2010, 20: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)

Благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 12.12.2010, 22:05
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://alljs.ru/articles/timeout/fast-settimeout.html
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2010, 13:02
Новичок на форуме
Отправить личное сообщение для leha66 Посмотреть профиль Найти все сообщения от leha66
 
Регистрация: 07.12.2010
Сообщений: 7

спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача контекста через setTimeout decadent jQuery 3 10.02.2011 19:01
тег <audio> в Opera, Chrome, Firefox Magneto Javascript под браузер 12 25.11.2010 15:12
Jquery, dialog() в браузере Opera. uRandom jQuery 0 27.10.2010 10:35
Все-таки Opera -- мудацкий браузер Kolyaj Общие вопросы Javascript 27 29.10.2009 23:43
Не возвращается XML-ответ в Opera после AJAX-запроса Yojik Общие вопросы Javascript 4 17.03.2008 05:56