# bug 查找 (一) 快速记录 IE8 下三个问题
bug 查找 (一) 快速记录 IE8 下三个问题
昨天 pc 端网站上灰度,发现多个在 IE8 下的问题,描述和解决方案如下:
第一个问题是 css 文件过大
现象
把项目所有的 css 打包成单个文件,在现代的浏览器下是没有问题的,在 IE11 下的 IE8 模式也是没有问题。 但是在真实的 IE8 下,发现某个页面的 css 不能生效,百思不得其解。
然后,几个人在代码层面逐步排查问题,排查方法是:写一个 body 样式,放在不同的位置去试试,看看是否生效,同时把不能原来不生效的 css 全部注释掉。
已过几轮的调整,发现在主文件 index.css 引入新模块之后,再之后引入的 css 都不能起做用。为了验证,把新模块注释又可以使用,又把老的注掉新的模块也能使用。猜测 ie8 对 css 的大小是有限制的。
解决方案
将新的模块单独打包成一个文件,同 index.css 一起引入页面,解决该问题。
搜了一下网上,老外也有这个问题:目前不大清楚是 file size 引起的,还是 css selector 引起的。我觉得应该是 css selector 引起的,因为 file size 会被 gzip 压缩。改天实验一下。另外发现这个问题 ie9 也有。
链接
相邻兄弟选择器不能重绘的问题
现象
相邻兄弟选择器控制,也就是 +,来控制某个元素的显示,在 ie8 下不能生效。
解决方案
借鉴网上的思路,让浏览器强制重绘。方案是,在需要重绘的地方,在 body 元素,增加一个 css class,然后移除该 css class ,就达到这个目的。这个 css class 应该是没有任何效果的。
$('body').addClass('ietest');
$('body').removeClass('ietest');
链接:
伪类不能重绘的问题
现象
使用伪类 ::before ,发现不起作用。
解决方案
改变伪类的 content 的内容,改成 . 空格(容易被打包工具给处理掉)之类的来解决。
content: '.';
content: ' ';
总结
打包和压缩问题
打包要保证打包行为的一致性。就是说在测试环境打出来的包和生产环境打出来的包行为要一致。碰到好几次问题就是在两个环境大包出来的不一样。这里调试碰到的问题是空格在生产环境中被压缩成空字符串了。
不要使用 IE11 下的 IE8 模式进行验证
做过 IE 下兼容性问题的人都应该知道,在 IE11 开发者工具下面有个 IE8 的兼容模式,这很方便,一般情况下也够用。但是对前面所说的第一个问题(css 的大小问题),在这种兼容模式下是没有办法重现的。因此真的兼容 IE8 的话,还是要用真实的 IE8 环境来验证一下吧,模拟环境不可靠。
控制 css 的大小
对于 css 的大小的问题以后应该做模块化处理。相关页面请加载自己的 css 和基础的 css 。其他不相关的 css 不应该放在一起。这是对打包工具的要求。采用这种方案就能很好的解决 css 大小的问题。
希望不要去兼容 IE8
最根本的解决方案是,不去兼容 IE8 了。显然这是不可能的,因为网站流量中有一部分还是用的 IE8 ,没有到忽略不计的程度,IE8 还是逃不掉的。
最后
希望我说的对你有用,谢谢。
# bug 查找 (一) 快速记录 IE8 下三个问题的更多相关文章
- 快速记录 IE8 下三个问题
快速记录 IE8 下三个问题 昨天 pc 端网站上灰度,发现多个在 IE8 下的问题,描述和解决方案如下: 第一个问题是 css 文件过大 现象 把项目所有的 css 打包成单个文件,在现代的浏览器下 ...
- BUG笔记:Win XP IE8下HTML Parsing Error: Unable to modify the parent container element before the child
[Bug描述]Windows XP IE8的某些版本下页面只显示一部分,其余为空白.IE左下角有惊叹号报错标志,点开后显示字符如下: HTML Parsing Error: Unable to mod ...
- ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法
目前互联网对于网页效果要求越来越高,不可避免的用到PNG图片,PNG分为几种格 式,PNG8 PNG24 PNG32,其中最常用的,也是显示效果和大小比较适中的则是PNG24,支持半透明,透明,颜色也 ...
- angular在ie8下的一个bug
昨天拿项目在ie8下测试,发现不少bug,其中有一个bug让我很不解,报了一个thead开头的bug,因为已经切回到linux下了,我就不报具体是什么bug了,鼓捣了半天,发现引用angular的应用 ...
- IE8下JQuery clone 出的select元素使用append添加option异常解决记录
遇到一个怪现象,由于配置参数是多实例的, 故采用JQuery对模板HTML代码进行clone, HTML代码中包括select标签, 在克隆之后需要对select进行添加option. 在firefo ...
- ie8下$(document).on('mouseover mouseout','ul li',function(){})的bug
$(document).on('mouseover mouseout','ul li',function(){ if (event.type == 'mouseover') { c ...
- ueditor1.4.3 在IE8下的 BUG
ueditor1.4.3 .net 版 在IE8 下,多图片上传完成后,点击确认时报错,无法插入图片到编辑器中 原因是 ueditor.all.js 中的 24835 行 if (whitList[ ...
- Windows系统下三十款优秀开源软件
Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Fire ...
- 解决Socket.IO在IE8下触发disconnect时间过长
本文地址: http://www.cnblogs.com/blackmanba/p/solve-socketIO-IE8-emit-disconnect-too-long.html或者http://f ...
随机推荐
- Hibernate 模糊查询 ' %?% ' SQL执行异常
今天我在使用Hibernate 的SQL预编译之后注入参数的形式写了一条模糊查询语句.刚开始我是这么写的
- python中format()方法格式化字符串
format()是python2.6新增的一个格式化字符串的方法,功能非常强大,有可能在未来完全替代%格式化方法,相比 % ,format()的优点有: 1 .格式化时不用关心数据类型的问题,form ...
- Objective-C 中nil/Nil/NULL/NSNull
转自:http://nshipster.cn/nil/ 理解"不存在"的概念不仅仅是一个哲学的问题,也是一个实际的问题.我们是有形宇宙的居民,而原因在于逻辑宇宙的存在不确定性.作为 ...
- PHP/Javascript 数组定义 及JSON中的使用 ---OK
PHP数组定义 一维数组: 1.$a=array(1,2,4,5,6); 2.$a= Array("cec"=>"cecValue","logo ...
- docker容器的参数如何指定配额
docker容器的参数如何指定配额 1. 内存 现在让我看下内存限制. 第一件事需要注意的是,默认一个容器可以使用主机上的所有内存. 如果你想为容器中的所有进程限制内存,使用docker run命令的 ...
- PLSQL ORA-12154 TNS无法解析指定的连接标识符
若你的机子上Windows 64位操作系统, 将PL Sql 的默认安装目录 Program Files (x86) 文件夹改为Program Files 或者别的便可以了
- Prime Independence
题意: 对于给定集合,求解最大的子集合,使得集合内两两之商不为质数. 解法: 考虑对于每一个数字分解质因数可以得到 $O(nloglogNUM)$ 条两个数字不可以出现在同一集合的信息. 同时发现一条 ...
- opencv MatExpr MatOp
opencv提供了很多Mat的操作,其中涉及到两个重要的类:MatOp和MatExpr C++: MatExpr abs(const Mat& m) C++: void absdiff(Inp ...
- 2.5 Hive中外部表的讲解
一.外部表 1.hive中表的类型 管理表 托管表(外部表) #内部表 >内部表也称之为MANAGED_TABLE: >默认存储在/user/hive/warehouse下,也可以通过lo ...
- python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
简介 在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd.xlwt开源包来读写exce ...