У меня есть дополнение к ответу Pumbaa80 , которое может быть полезно для тех, кто разрабатывает для старых IE.
Да, все основные браузеры реализуют идентификаторы тайм-аута в виде последовательных целых чисел (что не требуется согласно спецификации ).Начиная стартовый номер отличается от браузера к браузеру.Похоже, что Opera, Safari, Chrome и IE> 8 запускают идентификаторы тайм-аута с 1, браузеры на основе Gecko с 2 и IE <= 8 с некоторого случайного числа, которое волшебным образом сохраняется при обновлении вкладки.Вы можете <a href="http://plnkr.co/edit/prHh97?p=preview" rel="nofollow noreferrer"> обнаружить его самостоятельно .
Все это означает, что в IE <= 8 цикл <code>while (lastTimeoutId--) может выполняться более 8 раз и отображать сценарий "" на этой странице:в результате чего Internet Explorer работает медленно"сообщение.Поэтому, если вы не можете сохранить все свои идентификаторы тайм-аута или не хотите переопределить window.setTimeout , вы можете сохранить первый идентификатор тайм-аута на странице и очистить тайм-ауты до него.
Выполнить код при ранней загрузке страницы:
var clearAllTimeouts = (function () {
var noop = function () {},
firstId = window.setTimeout(noop, 0);
return function () {
var lastId = window.setTimeout(noop, 0);
console.log('Removing', lastId - firstId, 'timeout handlers');
while (firstId != lastId)
window.clearTimeout(++firstId);
};
});
и затем очистить все ожидающие таймауты, которые, вероятно, были установлены внешним кодом столько раз, сколько вам нужно