javascript - 如何检测窗口是否真的在 IE8 标准模式下调整了大小?

标签 javascript internet-explorer-8 dom-events

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

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

最佳答案

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

关于javascript - 如何检测窗口是否真的在 IE8 标准模式下调整了大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/688894/

相关文章:

html - IE8 div对齐问题

javascript - 如何使用 JavaScript 聚焦 html 文本字段?

javascript - 如何在 jQuery 中使用多个组查找分隔符?

javascript - 提交时 trim 文本框和 texareas 阻止表单提交

javascript - SCRIPT5007 无法获取属性 'indexOf' 的值

javascript - 观察特定DIV的内容

javascript - cron 作业与 Javascript 定时事件

Javascript - 如何平方数?

javascript - iron-router notFound 模板在 meteor 中不起作用

javascript - 为什么这个 HTML 会导致 IE 崩溃?