Я назначил тайм-аут для моего обработчика window.resize, чтобы я не стал называть мой размер размерного кода при каждом изменении события изменения размера. Мой код выглядит следующим образом:Почему событие изменения размера постоянно срабатывает, когда я назначаю ему обработчик с таймаутом?
<script>
function init() {
var hasTimedOut = false;
var resizeHandler = function() {
// do stuff
return false;
};
window.onresize = function() {
if (hasTimedOut !== false) {
clearTimeout(hasTimedOut);
}
hasTimedOut = setTimeout(resizeHandler, 100); // 100 milliseconds
};
}
</script>
<body onload="init();">
...
etc...
В IE7 (и, возможно, другие версии) кажется, что, когда вы делаете это изменение размеров события будет постоянно огнь. Точнее, он будет срабатывать после каждой продолжительности тайм-аута - 100 миллисекунд в этом случае.
Любые идеи, почему и как остановить это поведение? Я бы предпочел не называть мой код изменения размера для каждого события изменения размера, которое срабатывает при одном изменении размера, но это хуже.
Nope. Все, что я делаю, это добавить некоторые div. – ntownsend
... и ни один из этих разделов не приводит к тому, что содержимое страницы изменит ширину/высоту до такой степени, что приведет к появлению/исчезновению вертикальных или горизонтальных полос прокрутки? ;-) Это также может привести к тому, что IE перезапустит события изменения размера. – scunliffe
Я думаю, что вы частично правы. Они не заставляют полосы прокрутки появляться или исчезать, но, похоже, рисование divs делает что-то в окне, чтобы сделать события изменения размера. Когда я заменяю рисунок div на какую-то фиктивную функцию, которая на самом деле ничего не делает, я больше не вижу переменные события, постоянно стреляющие. – ntownsend