5

我的网站有许多针对不同屏幕宽度定制的样式表。当浏览器调整大小时,window.onresize事件会通过查看document.documentElement.clientWidth. 如果是这样,它会依次打开更大的样式表,直到出现滚动条。然后,它以相反的顺序将它们关闭,直到滚动条消失。offsetWidth通过比较来检测滚动条scrollWidth

在 IE8 中,两个新问题混淆了调整大小的检测。一,onresize当滚动条出现或消失时触发,二,d.dE.clientWidth报告没有滚动条的宽度,从 IE7 和所有其他浏览器中断。我的网站现在经常陷入一个循环,其中onresize逻辑激活一个更大的样式表,该样式表创建滚动条,然后触发另一个无法过滤掉的调整大小事件,因为clientWidth滚动条出现或消失导致该事件发生了变化。outerWidth如果 IE8 有我可以检查的东西,这将是一个微不足道的修复。

4

2 回答 2

3

由于我从未在任何浏览器中处理触发 onresize 的滚动条生成,我没有意识到检查 d.dE.clientWidth 并不是一个好的验证,实际上从未包含滚动条。我现在改为检查 d.dE.offsetWidth,并过滤掉重复的 onresize 事件。

于 2009-03-27T19:09:42.997 回答
1

你几乎肯定知道这一点——它并没有真正回答你的问题,因为它迫使 IE8 退出标准模式——但快速解决方法是使用 HTTP 标头强制 IE8 进入 IE7 模式

于 2009-03-27T08:23:28.900 回答