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进行的网页设计,新建的文件不能手动设置编码格式,这一块还需要去看一下如何解决。
 

最新文章

  1. js鼠标滚轮滚动图片切换效果
  2. meta 标签 详细说明
  3. C# 自定义特性
  4. ontouchstart
  5. 到底为什么你的APP项目烂尾了?
  6. hiho #1050 : 树中的最长路 树的直径
  7. php 高效分页
  8. 判断鼠标从哪个方向进入--jQuery
  9. SQL高级查询
  10. android 安全未来怎么走
  11. 基本的编程原则SOLID
  12. C++sort函数使用总结
  13. Latex 经常见到的问题和解决方法
  14. layer结合art实现弹出功能
  15. k8s1.13.3安装istio(helm方式)
  16. 分布式系统的唯一id生成算法你了解吗?
  17. PAT L2-013 红色警报(并查集求连通子图)
  18. IBM研究院找到度量安全性方法:容器与虚拟机,谁更安全?
  19. UITextField使用的一些细节
  20. P1757 通天之分组背包 / hdu1712 ACboy needs your help (分组背包入门)

热门文章

  1. Redis 应用场景【商品拼团抢购】
  2. string.Format 格式化日期格式
  3. POJ 1694 An Old Stone Game
  4. poj 3177&&poj 3352加边构双联通(有重边)用tarjan 模板求的
  5. csu1395模拟
  6. Optimization on content service with local search in cloud of clouds
  7. ASP.NET--MVC--伪静态
  8. C#--async-await的用法
  9. junit4单元测试基础
  10. 【传智播客VIP用户专享】Swift教程最新更新