0 前言
公司要求网页要支持ie6、7、8,结果我的设备在ie7、8、9均工作正常,而在ie6时就出现各种奇怪的错误,在这个背景下,开始动手解决网页不兼容ie6的情况。
1 搭建ie6的实验平台
1.1 使用ietester,结果发现在win7下ietester使用ie6时,完全显示不出来,而在winxp下则没有问题,在网上一搜,发现ietester有各种奇怪的问题,于是放弃了该方法;
1.2 使用winxp的虚拟机,由于winxp的默认浏览器是ie6,我觉得这样测试出来的也是最准确的;
1.3 安装好winxp虚拟机和确定ie6可以正常运行后,由于ie6没有F12网页调试工具,所以搭建网页调试工具companion.js+ Microsoft Script Debugger(参考http://www.cnblogs.com/tangge/archive/2011/06/17/2083532.html),配置后如下:
这样调试和F12工具大概差不多。
2 分析出现问题的网页
2.1 进入ie6不能正常工作的网页,出现的错误如下:
跟踪错误,发现在中文注释的地方出现了乱码,注释的内容也被解析了,所以后面的函数也被解析为注释内容,所以运行起来当然出错。然后在网上搜索,发现关于中文注释在ie6中运行的各种情况,当然也有很多解决方法,如:写中文的时候注意不能奇数个,注释不用中文只用英文等等;
但我觉得问题点应该不是在这里,因为不仅仅是注释,对于程序中使用的中文字符串也出现了问题,如下:
标注的地方,是一个中文字符串,但字符串“”被解析错误,直接将后面的内容全部包含到了字符串,所以这里解析也出现错误,而且按照之前网上的方法,这样所有的中文字符都解决,明显工作量巨大而且不大合理,肯定是哪里出现了问题。
2.2 经过一番思考,对于中文出现乱码这种情况肯定是字符编码出现了错误,于是查看了ie6的编码,发现是utf-8,而我的网页中也指定了字符集是UTF-8,那按道理是没有问题的啊,截图如下:
那问题出在哪里呢?只有文件的编码格式了,而这也是最开始没有考虑到的,于是我用notepad查看了一下出问题的几个文件:
果然,文件的编码方式是ANSI的,于是我将所有的非UTF-8编码格式的文件转换成UTF-8的格式,在ie6上运行,全部正常。、
3 总结
3.1 对ie6,如果文件编码格式和指定的编码格式不一样,它并不会自动转换格式,而是硬转,所以出错,而ie7及以上会自动转换文件;
3.2 在编写web前端的代码的时候一定要注意文件的编码格式,特别是要用到非英文字符时,有可能就是因为编码格式不一样导致出现奇怪的问题;
3.3 出现问题,不能完全相信网络,必须得动手去做和思考,否则永远找不到问题的根本;
3.4 由于我是用的vs进行的网页设计,新建的文件不能手动设置编码格式,这一块还需要去看一下如何解决。