为什么resize事件不断射击,当我为它分配一个超时处理程序?
-
13-09-2019 - |
题
我分配到超时我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毫秒在此情况下
任何想法,为什么或如何制止这种行为?我真的不想叫我调整大小的代码为每resize事件,在一个调整大小火灾,但这是雪上加霜。
解决方案
在你//做的东西的代码,你的任何操作前,左,宽度,高度,边框,边缘或padding属性的?
您可能无意中被触发递归其无意中触发递归其无意触发递归...
其他提示
也,一看便知的 “scunliffe”“在你的...属性?
IE确实不断激发其resize事件而调整正在发生(你必须知道,因为你已经实现了一个修复超时)。
我可以复制你所看到的结果,使用你的代码,我的测试页上。
然而,问题消失,如果我增加超时为1000,而不是100.你可能想用不同的等待值来试试,看看你的作品。
下面是测试页我用:它具有很好的动态等待期间已经设置了你一起玩。
不隶属于 StackOverflow