IE8 3月20日正式发布
IE8浏览器于北京时间3月20日零时正式发布。
各大媒体头版头条,争相介绍IE8的新特性。其中一个特性是IE8 增加了对W3C Selector API的支持,Javascript 增加了两个函数 querySelector() 和 querySelectorAll() 。听都都引用了这个例子:
1 2 3 4 5 6 7 8 9 10 | <html> <body> <div><div><span>InnerSpan</span></div></div> <div><span class="myClass">ClassSpan</span></div> <script type="text/javascript"> alert(document.querySelector("div div span").innerHTML); alert(document.querySelector("span.myClass").innerHTML); </script> </body> </html> |
当你真的把这段代码,Ctrl-C Ctrl-V运行的时候你会发现IE8直接提示JS错误。不是IE8已经支持querySelector()和querySelectorAll了吗?
原来IE8少了DOCTYPE定义就不认这两函数了。
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
Jquery的强大之处正是这种Selector的写法,如果各浏览器都能实现W3C Selector API,作为Javascript的一个基本特性,那么提高性能的同时也方便了Javascript的开发者。反过来Jquery如果整合了内建的Selector,到时候在支持W3C Selector API的浏览器上将如虎添翼,性能提高的同时还能省去一大部分核心代码。
根据Robert Biggs 在blog上发布的性能测试报告,我们可以看到 IE8内建的Selector性能比Jquery快了近100倍。
几个框架的测试结果如下:
全部Selector跑完
IE8: 924ms
Ext 2.0: 41823ms
Jquery 1.2.3: 97696ms
Prototype 1.6.0.2: 230289ms
注:IE8+ Firefox3.1+ Safari 3.1+都支持W3C Selector API。
另外IE8在向后兼容上也费尽心机。多了个兼容模式的按钮不说。
还可以通过在页面head上加个:
1 | <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> |
让IE8自动用IE7兼容模式解析。如果你的应用不想针对IE8调整,那么在你的页面上加上这段试试。
对于UE(User Experience)来说,新版本浏览器的发布最需要关心的莫过于兼容的问题,大部分的前端开发主要考虑IE6 IE7 Firefox 兼容,从IE8正式发布的那刻起IE8便加入了主要兼容行列。前端开发要兼容的浏览器越多,成本越大这是毋庸置疑的事实。浏览器之战爽了大家苦了UE Developer。。。
IE8兼容模式和兼容IE7的可以看IEBlog的上的这两篇文章:
Compatibility and IE8
Introducing IE=EmulateIE7