某些IE6版本的resize bug
IE6 sp3以下版本在碰到window.resize时会出错。
在windows下,有两种方法改变窗口的大小:
- 点窗口右上角的控制按钮
- 在窗口右下角按下鼠标,拖动鼠标到合适位置,松开鼠标
使用第一种方法resize窗口尺寸时,出问题的几率较小。使用第二种方式改变窗口大小,会导致死循环,从而产生脚本错误。这是因为IE6对window.resize事件解释有误,IE6认为,当用户按下鼠标时就开始执行resize事件,在用户鼠标未松开的这段时间,窗口的每一次尺寸改变都会触发一次resize事件。Firefox对resize的解释就是正确的:当用户按下鼠标时并不触发resize事件,当window的尺寸改变完成时(松开鼠标的瞬间)才触发resize事件,这就保证了resize事件只被执行一次。
存在这个bug的浏览器有:IE6 sp2及以下版本。IE6 SP3、IE7、IE8、Firefox、Safari、Chrome、Opera都没问题。
解决方法:
网上有人说在所有内容的最外面加一个div,通过检查这个div的尺寸来决定是否执行resize事件。我没试过这种方法,我不想在页面上增加多一个div,担心多增加的标签破坏页面原有的CSS,我想了下面的方法来hack resize
-
var t = 0;
-
window.onresize = function() {
-
var now = new Date();
-
now = now.getTime();
-
if (now - t> 300) {
-
t = now;
-
//your resize event code here;
-
//document.getElementById('t').value += "resize";
-
}
-
};
评论(0)