Я только что обнаружил другую проблему, которая может вам помочь.
Я использую jQuery, и у меня есть событие window.resize для вызова функции, которая переместит div, добавленный к телу.
Теперь, когда я установил свойство LEFT css этого добавленного div, событие window.resize получает триггер для НЕТ ХОРОШЕЙ ПРИЧИНЫ.
В результате получается бесконечный цикл, снова и снова запускающий window.resize.
Код без исправления:
$(window).resize(function(){
var onResize = function(){
//The method which alter some css properties triggers
//window.resize again and it ends in an infinite loop
someMethod();
}
window.clearTimeout(resizeTimeout);
resizeTimeout = window.setTimeout(onResize, 10);
});
Решение:
var winWidth = $(window).width(),
winHeight = $(window).height();
$(window).resize(function(){
var onResize = function(){
//The method which alter some css properties triggers
//window.resize again and it ends in an infinite loop
someMethod();
}
//New height and width
var winNewWidth = $(window).width(),
winNewHeight = $(window).height();
// compare the new height and width with old one
if(winWidth!=winNewWidth || winHeight!=winNewHeight){
window.clearTimeout(resizeTimeout);
resizeTimeout = window.setTimeout(onResize, 10);
}
//Update the width and height
winWidth = winNewWidth;
winHeight = winNewHeight;
});
Таким образом, в основном он будет проверять, изменились ли высота или ширина (что произойдет ТОЛЬКО, когда вы на самом деле измените размер с окном).