javascript - 为什么 IE8 在 jquery window.resize 事件上挂起?

标签 javascript jquery html internet-explorer resize

我发现在 IE8 中打开一段 html 和 javascript 时似乎总是重现的问题。

<html>
    <body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $(window).resize(function() {
                console.log('Handler for .resize() called');
            });
        });
    </script>
    <div id="log">
    </div>
    </body>
</html>

在 IE8 中加载此文件并打开 Developer Tools 将显示在浏览器窗口调整一次大小后连续打印日志消息。

有人知道为什么吗?这不会发生在 IE7 或 IE9 中,也不会发生在其他浏览器(或至少是它们的最新版本)中。

更新

如果浏览器是 IE8,防止连续触发 resize() 的一个解决方案是在 document.body.onresize 上添加处理程序。

 var ieVersion = getInternetExplorerVersion();
    if (ieVersion == 8) {
        document.body.onresize = function () {
        };
    }
    else {
        $(window).resize(function () {
        });
    }

但这并没有回答我的问题:连续触发 resize() 是 IE8 中的错误吗?

最佳答案

如果“拖动时显示窗口内容”打开,您将被调整大小事件淹没。我猜您是在启用了此效果的单独 Windows 机器上测试 IE8(显示属性 -> 外观 -> 效果...)。

为了抵消这种情况,您可以包装并捕获调整大小事件以驯服它们:http://paulirish.com/demo/resize

这篇文章说 Chrome、Safari 和 Opera 也受此影响。

关于javascript - 为什么 IE8 在 jquery window.resize 事件上挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5947422/

相关文章:

javascript - 使用监听器删除 dom 元素会导致内存泄漏吗?

jquery-ui - 如何将额外参数传递给 Jquery 自动完成字段?

html - 停止图像调整大小并隐藏底部滚动条

javascript - 如何在 google charts API 中使用图片而不是文本标签?

javascript - Ionic-side-menu 隐藏了我所有的主要内容

javascript - 如何从 Jquery 中的 PHP 循环获取 Href 文本

javascript - 检查渐进式网络应用程序中的网络更改?

html - 在表格单元格上强制断字

javascript - 如何使用变量作为 QML 元素 id

JavaScript (w/jQuery) - 在悬停时增加一个元素以填充容器,当被其他元素包围时