经常使用IE开发者工具的同学,肯定见过浏览器模式和文本模式,对于这两个名词,综合相关文档解释如下:
浏览器模式(Browser Mode),用于切换IE针对该网页的默认文本模式、对不同版本浏览器的条件注释解析、决定请求头里userAgent的值。它在浏览器发出请求之前就已经确定,网站没有办法修改这个值。它代表的是用户以何种浏览器访问网站。IE9支持下列浏览器模式:
| userAgent | 默认文本模式 | |
|---|---|---|
| IE7 | MSIE 7.0 | IE7标准 |
| IE8 | MSIE 8.0 && Trident/4.0 | IE8标准 |
| IE9 | MSIE 9.0 && Trident/5.0 | IE9标准 |
| IE9兼容性 | MSIE 7.0 && Trident/5.0 | IE7标准 |
(IE9兼容性模式与IE7模式的区别是:前者在UA里加上了Trident版本,后者和IE7完全一致无Trident标识;IE8中,IE9兼容性模式对应为IE8兼容性模式,UA里Trident版本为4.0,其他没变化。另,IE8中没有IE9模式)
几天前MS发布了IE10 Platform Preview 2,又有一些新东西可以玩了。
首先是setImmediate Api。这个函数类似于setTimeout,但是强大了不止一点点。一般setTimeout的精度在16ms左右,也就是说就算写setTimeout(0),每次循环无法突破16ms,当然setTimeout(0)一般有其他用途,这里就不深入了。在HTML5里,setTimeout的精度被缩小到了4ms,fps提高了4倍。那setImmediate精度能到多少?写个简单的例子测试下:
var d1 = new Date();
var i = 0;
var f = function(e){
if(i > 100000) {
alert(new Date() - d1);
} else {
i++;
document.body.innerHTML = i;
msSetImmediate(f);
}
};
f(); 异步将零到十万依次打印出来,在我2年前的本本上只用了16S的时间,也就是这个例子中setImmediate大约0.16ms执行一次,fps超过6000,简直让人难以置信!接着测试IE10 Test Driver上快速排序的例子,setImmediate和16ms的setTimeout也有40多倍的差距,非常暴力。虽然目前还不知道这个函数的实现原理,但可以预见的是一旦普及,浏览器能做的事情更多了。
今天firefox4正式版提前泄漏,标志着几大浏览器又一次更新换代总算完成。除了更现代的UI,更快的性能,更好的标准支持度外,还有些好玩的东西。
首先是IE9的跳转列表(jump list)。这本来是win7提供给传统应用程序用的,可以让用户快速完成一些任务。现在网页也可以用,在页头定义这些格式的meta信息用IE9打开就行:
<meta content="网站名称" name="application-name" /> <meta content="name=任务名;action-uri=对应链接;icon-uri=icon图片" name="msapplication-task" /> ... ... <meta name="msapplication-navbutton-color" content="black"/>
我的博客也加上了这个功能,效果就是右边那样,对应的代码可以查看源文件。如果给每个任务单独设计icon可能要好看一些。
IE9在处理pinned网页与普通网页相比有不少变化,前者看起来更像一个app。前进后退按钮的颜色是根据favicon自动算的,也可以由页面来指定,相关细节可以查看这篇文章。
其他浏览器想要支持这个功能其实并不难,就看浏览器厂商愿不愿意了。还有人写了个Chrome插件,可以将网页jump list信息提出来以Chrome插件常见的形式来展现。
再说说出来没多久的Opera11.10。大家都知道Opera有个快速拨号的功能,现在各浏览器都拿过去用,Opera就是这样一直被模仿,一直在创新。新版Opera允许网站自定义这个快速拨号。