为什么IE8会挂起jquery window.resize事件?

Vas*_*aga 6 html javascript jquery 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>
Run Code Online (Sandbox Code Playgroud)

在IE8中加载此文件并打开开发人员工具将显示在重新调整浏览器窗口大小后连续打印日志消息.

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

UPDATE

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

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

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

Lee*_*ski 3

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

为了解决这个问题,您可以包装并捕获调整大小事件以驯服它们: http: //paulirish.com/demo/resize

这篇文章说 Chrome、Safari 和 Opera 也受到这个问题的困扰。