我发现在 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/