CSS编码引发的问题

今天突然接到一个测试反馈,是说项目IE8下面CSS样式不对,但其他高级浏览器都没有问题。

我测试了下,因为已经升级到IE11,所以只能靠模拟IE8,发现没有任何问题,同时IE7及兼容性模式也没有问题。

那么我的第一感觉,是让其清理缓存。结果无效。

这个很诧异,因为我用双核浏览器也测试过(比如360浏览器),兼容性肯定是不会有问题的。那么这个问题就很奇怪。

最后,在周围同事找了一圈,终于找到了一个有IE8的机器。测试发现,一般情况下,第一次打开网页,不会有问题,用用也问题不大。但是只要触发以下两点,立即CSS样式几乎全部异常,但是CSS样式文件可以识别**。

  • 启动F12调试
  • 点击兼容性模式按钮

因为可以加载CSS文件,就打算看看是怎么解析的。

点击一个元素,发现仅仅加载了第一行样式,就顺藤摸瓜,查看样式表。IE的F12下,可以看到当前的CSS文件解析情况,结果发现,仅仅能解析到几行而已。我又去查看CSS文件内容,发现正好是注释的地方。

在IE下打开CSS文件,结果发现,由于文件编码是UTF-8,导致注释的地方是乱码。

这样原因就很明确了:CSS文件编码导致的,最简单的方法,就是删除注释了,这样就直接解决了。

因为未来会用webpack打包项目,到时候CSS会被压缩,这类问题就不会再出现,就没有继续深入研究。比如说可以在CSS文件开头加入@charset "utf-8",但是听说这个方法IE6可能会有问题,就没再尝试。