javascript - 当我为它分配一个超时的处理程序时,为什么调整大小事件会不断触发?

标签 javascript internet-explorer-7 timeout onresize

我为我的 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 毫秒。

知道为什么或如何阻止这种行为吗?我真的不想为在单个调整大小中触发的每个调整大小事件调用我的调整大小代码,但这样更糟。

最佳答案

在您的//do stuff 代码中,您是否操作了任何顶部、左侧、宽度、高度、边框、边距或填充属性?

您可能无意中触发递归,无意中触发递归,无意中触发递归...

关于javascript - 当我为它分配一个超时的处理程序时,为什么调整大小事件会不断触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262774/

相关文章:

MySQL 连接超时问题 - 使用 Hibernate 和 ORM 的 Tomcat 上的 Grails 应用程序

javascript - 单击文字可阅读相邻的 html5 音频文件

javascript - 通过 https 从 http 端点检索数据

java - HttpClient 上严格可靠的超时

javascript - 为什么绝对定位的父项中的百分比宽度子项在 IE 中不起作用?

javascript - 对象在 IE7 中的预期错误,在其他浏览器中有效

javascript - 是否可以从内部 Promise 获取父函数的回调?

javascript - Angular 2 Http不触发

javascript - 通过对象属性访问 JSON 数组

javascript - 在IE7中停止Youtube播放器(使用Rob W解决方案)