Здравствуйте.
Не знаю, в тот ли раздел задаю вопрос, поэтому сразу извиняюсь.
Был написан скрипт, который по-разному работал на в браузере 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)
Благодарю.