❗ 本文最后更新于 4921 天前,文中所描述的信息可能已发生改变,请谨慎使用。
几天前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多倍的差距,非常暴力。虽然目前还不知道这个函数的实现原理,但可以预见的是一旦普及,浏览器能做的事情更多了。
IE10这次也增加了对requestAnimationFrame的支持,按惯例要写成msRequestAnimationFrame和msCancelRequestAnimationFrame。不得不说万恶的浏览器厂商前缀,又污染到了js。好在IE的实现还是非常标准的,不像moz只实现了一半。这部分详情可以看我之前写的使用浏览器原生函数优化动画,示例在这里。总之,稳定在60fps且自带优化的帧动画函数,当然是支持的浏览器越多越好了~
几年前,遇到个需求,要在页面最小化的时候不拉取服务器消息。记得当时是判断浏览器高度是否大于0来实现的。如今,W3C制订了Page Visibility API规范,之前Chrome已经支持,这次又多了IE10,这两类高端浏览器下类似需求再也不用自己山寨了。这个Api非常简单,没什么需要特别说的,用Chrome或IE10打开官方Demo自己看就好了。
本文链接:https://mailseason.com/post/ie10-platform-preview-2.html,参与评论 »
--EOF--
发表于 2011-07-04 00:20:30,并被添加「IE」标签。查看本文 Markdown 版本 »
专题「浏览器」的其他文章 »
- iOS 10 Safari 视频播放新政策 (Oct 07, 2016)
- Chrome 中 scrollingElement 的变化 (Apr 16, 2016)
- 域名小知识:Public Suffix List (Nov 28, 2015)
- window.opener.location 安全风险讨论 (Oct 09, 2015)
- 使用 SRI 增强 localStorage 代码安全 (Sep 26, 2015)
- Subresource Integrity 介绍 (Sep 23, 2015)
- 移动 Web 与 JavaScript 定时器 (Mar 27, 2014)
- Chrome 和 Web Fonts 二三事 (Mar 24, 2014)
- Webkit 异步加载 CSS 的奇怪现象 (Dec 25, 2013)
- 小成本实现部分选中的复选框 (Dec 22, 2013)
Comments
Waline 评论加载中...