IE7、IE8、IE9、IE10后各版本的更新内容和各版本的差别

在程序员的眼里,万恶的IE6的结束对他们而言是一种解脱,IE7首次开始完整支持W3C标准,从此之后IE的标准化之路就开始越走越顺,以下总结了IE7以后各版本的更新内容,和各版本的差别,作为Web开发人员解决浏览器兼容性问题的参考。

IE7更新

微软官方更新说明http://www.microsoft.com/china/msdn/library/webservices/WebApp/IE7_RevGd.mspx?mfr=true

IE8更新

  • 解决了所有浮动bug(可能是所有CSS Bug都解决了),完全支持CSS2.1规则和选择器(这个是亮点,至少在CSS上完全符合W3C标准了) 具体见http://msdn.microsoft.com/library/cc304082.aspx
  • 去掉了CSS 表达式 使用 -ms-厂商前缀表示IE专有属性,这一点向webkit和firefox学习了,值得表杨
  • 修正了一系列DOM错误,更符合标准,但并没有新增支持 如getElementById的时候ID区分大小写,不会错把Name当ID,详细列表见 http://msdn.microsoft.com/library/dd433047.aspx
  • 支持link标签的charset属性 AJAX支持增强
  • 支持HTML5中的本地存储(挺先进的
  • 本地JSON对象支持(这个也挺先进)
  • 增加UA兼容模式
  • 增加了almost Stardards渲染模式
  • 然而IE8仍然没有实现DOM L2,DOM L3和DOM L2 和 L3 事件处理(包括冒泡模型)的完整支持

微软官方更新说明
http://msdn.microsoft.com/library/cc288472%28VS.85%29.aspx#html

IE9更新

微软更新说明
http://msdn.microsoft.com/zh-cn/ie/ff468705

IE10更新

  • ECMAScript 5 Strict 模式支持 HTML5和CSS3增强 CSS3 3-D transforms(需要-ms-前缀,因为W3C还未定稿)
  • Websocket,webwork,file api等等
  • SVG改进和增强 SVG滤境
  • DOM增强 大多是带ms前缀的增强(也是就IE专有的)
  • 如触屏操作,手势事件,等等
  • 不再支持IE10的UA兼容设置(因为从IE9开始已经完全符合W3C标准),但仍支持IE9和之前的UA兼容设置

微软更新说明
http://msdn.microsoft.com/en-us/ie/gg192966

概括的说IE7只是对IE6的小小增强,IE8完全支持CSS2.1和选择器,DOM操作更符合W3C标准,但DOM支持仍不完整IE9 完全支持DOM L1,DOM L2,Jscript更符合标准,ECMAScript5支持,HTML5,CSS3支持,SVG支持。

IE10采用新的HTML5解析规则

如果开发人员在不同的浏览器中使用相同的标记和代码可以得到相同的效果,这会让Web开发变得更简单有效。IE10在这方面的取得进展,完全支持 HTML5的标准化解析规则。HTML 5的重要变化之一便是引入了针对非标准HTML特别是错误格式HTML的标准化解析规则。浏览器在遇到存在错误的HTML如缺少结束标记时通常表现得很宽 松。这种大度被广受赞誉,因为相比对手XHTML来说,HTML​在此种情况下会继续正常处理。 HTML最新待定标准提到:​

本规范定了HTML文档的解析规则,无论它们语法是否错误。解析算法中的某些地方被视为解析错误。针对解析错误的处理明确定义:用户代理(浏览器)在遇到这些问题时要么按照如下描述处理,要么必须在遇到第一个不想遵循如下处理规则的错误时终止处理。

下面的示例说明某些情况下的改进:

互操作的innerHTML

这些改进也适用于innerHTML。代码模式就像现在这些工作,你会期待IE10

var select = document.createElement("select");

select.innerHTML = “<option>one</option><option>two</option>”;

var table = document.createElement(”table”);

table.innerHTML = “<tr><td>one</td><td>two</td></tr>”;

更好的错误报告

HTML5确保标记将始终解析。它还是一个帮助开发人员一开始便避免无效标记的方法。编写有效的标记可以使您的网站按照期望的方式工作,并更好的与旧版浏览器兼容。

为了在这方面帮助开发人员,IE10现在可以通过F12开发人员工具报告HTML解析错误。

删除旧特性

因为某些在早期IE浏览器版本中的特性已不符合HTML5解析,我们已经将他们从IE10模式中删除。这些过时的特性在传统模式下仍然有效。

1、条件注释

<!–[if IE]>
在IE10和其他的浏览器中,此内容被忽略。
在旧版本的IE浏览器中,它呈现为页面的一部分。
<![endif]–>

这意味着仍然可以使用条件注释,但将只针对旧版本的IE浏览器 。如果你需要区分较新的浏览器,请使用功能检测

2、元素行为

<html xmlns:my>
<?import namespace=”my” implementation=”my.htc”>
<my:element>
在IE10和其他的浏览器中,这解析为未知的元素
在旧版本的IE浏览器中,它绑定到 “my.htc”
</my:element>
</html>

3、XML Data Islands

<xml>
在IE10和其他的浏览器中,这解析为<b>HTML</b>
在旧版本的IE浏览器中,它解析为XML
</xml>