我为我的window.resize处理程序分配了一个超时值,以便每次触发resize事件时都不会调用大小可调的resize代码。我的代码如下所示:当我给它分配一个超时处理程序时,为什么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毫秒。
任何想法为什么或如何阻止此行为?我真的不想调用我的调整大小代码来调整每个调整大小的事件,但这种情况更糟糕。
没有。我所做的只是添加一些div。 – ntownsend 2009-08-11 23:33:21
......并且这些div都不会导致页面内容将宽度/高度更改为导致垂直或水平滚动条出现/消失的程度? ;-)这也可能导致IE重新调整大小调整事件。 – scunliffe 2009-08-12 13:31:56
我认为你有部分权利。他们不会让滚动条出现或消失,但似乎在绘制divs正在对窗口做些什么来使其触发调整大小事件。 当我用一些没有真正做任何事情的虚拟函数替换我的div绘图时,我不再看到不断调整大小的事件。 – ntownsend 2009-08-12 16:20:26