JavaScript:IE8新特性 -- JavaScripter简报

来源:互联网 发布:手机动态主题软件 编辑:程序博客网 时间:2024/04/28 23:47

在FireFox3Beta3放出几周之后,IE8终于按耐不住发布了Beta1版本。
周末终于有时间粗略的试用下IE8,下面从一个JavaScripter的角度对我关心的和看到的做个简报。

首先b4下微软,竟然只能在Xp下运行IE8,前几天刚的瑟的瑟的装上Vista,已经不止一次被b4了,没想到这次竟然是IE8。

然后也要先讲下下,我对CSS的认知一般只能说勉强会用,IE8说兼容标准CSS2.1,具体到什么程度还不了解,CSS Hacker们该起早了,你们的大表又多2列,看好你们哦:)。不过IE8再好,六成以上使用者还是再IE6,所以需要兼容的更多了,开发变的更烦,IE7的出现不是这样么。

下面介绍一下IE8着重介绍的4个产品,Activities,WebSlices,Developer Tools 和 AJAX Navigation。看了http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx 页的视频介绍之后还是有不小的感触,嗯,微软干的不错。

Activities:
它说到底像一些上网助手提供的划词搜索功能,在你选择了一段文本之后,在文本附近出现一个小图标,点击小图标会有一个菜单出来,里面有“加入生词本”、“在Yahoo搜索”、“发送给好友”,“查看地图”等等所有你装过的Activities。微软提供了这样的位置,让你提供插件帮助你的服务延伸到别人的网页。

这样的服务通过一段纯JavsScript也能实现,得到选择文本然后在附近显示个浮层很容易,在FireFox得到选中文本内容也早已经不是问题了。但是如何让这段js跑在任何页面呢?当然纯Js做不到了,用GreaseMonkey么,上网助手么,ScriptShell么,其实都一样。

WebSlices:
现在的Web页已经过于丰富了,视频例子是Ebay一个在拍卖手表的出价页,核心信息就是手表和价格。你的需求是最快速度得到最新出价,决定是否跟着出价。不断刷新页面么?你累,服务器也累。WebSlices就像一个订阅数据的RSS,服务商把核心信息做成一个WebSlices其实就是一个数据接口,在页面通过特殊标记表明订阅源,浏览器提供一个图标来供你订阅,放在连接栏上你就可以实时关注必要的信息了。
明年春节前,我的链接栏出现“嘿,回家的二手火车票又出现一张,快抢”,你不要奇怪。

开发人员可能还想知道,这样的信息是客户端轮询还是服务端推送,这其实标志实时性的真伪,我猜应该还是传统的Http接口,通过浏览器自动轮询吧,如果IE8始终有根常链接连到微软服务器,那他还是浏览器么。不过WebSlices源可以告诉浏览器数据更新频率,免得轮询过于频繁,不知有没有这个功能。

Developer Tools:
不知道和已有的IEDeveloperTools是不是一个东东,因为图标都是尖括号括个小箭头。
一直以来的ie调试环境是这样,Js用Office、.Net提供的Script Debugger,CSS布局则用IEDeveloperTools这样的插件来查看布局情况,再加上一个HttpWatch,三者基本上覆盖了FireBug提供的服务。
问题有几个,一个是调试器打开太慢,还有IEDeveloperTools只能Inspect最上层文档对象无法深入到Frame内部,所以一般我都是在FireFox下开发FireBug调试,在ie下看有问题再用上面三个东东。
Developer Tools乍看上去还是没有FireBug强大,但至少打开不太慢,其实FireBug在那里摆着,如果微软放下架子做到人家做到的,这样对大家都好。
无论怎么讲,这个工具对于初级开发人员深入进来,对于开发ie环境下bs系统的企业开发人员的帮助是不言而喻的。

AJAX Navigation:
起初我并没在意这个功能,从字面上理解和我刚看到的DeveloperTools的原因,猜这是个类似HttpWatch跟踪Ajax请求的东西。只是习惯性打开了一下视频看了看,结果大吃一惊。

他做的是Ajax对于浏览器前进、后退、刷新的支持。

这也正是我在去年在Alimama开发的Ajax历史和状态服务所做的事情。基于浏览器的Hash值改变,生成不同的Ajax请求,决定展现内容。说实话,我在ie8上运行的第一个页面即和这个有关,测试ie浏览器访问页面hash值改变是否记录历史?结论和ie6 7 一致,还是不记历史,对我和我们的应用来说这是一个又关键又让我即爱切恨的feature。
AJAX Navigation简单的来说IE提供了一个类库,而你则要规划一套hash值和Ajax请求的对应关系,比如以一个查询串作为hash,当浏览器的hash发生改变,ie会触发(fire)一个事件onHashChange,调用你注册的服务,根据当前hash值驱动一个Ajax查询,最后你再将查询结果和hash值相对应的页面状态和数据表现出来。
之前我的开发中,由于ie的hash改变不记录历史,我只好用一个辅助的隐藏iframe来记录历史,把不同的hash值作为辅助iframe的query值传入iframe,通过iframe的历史记录来激活上层页面的hash改变。
IE8提供的服务不知道怎样,因为我只看到了视频,不过既然ie8的hash改变依然不记录历史,无法验证当浏览器离开这个页面只后,历史记录会放在哪儿?如果Hash历史维持在A页面的js对象或隐藏iframe中,那么当浏览器前进到B页面时A维持的内容会消失,再回退A页面时如何恢复,这应该是个跳出JS层面浏览器自身来提供机制才能解决的问题。

上面四个新特性的视频都可以在http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx看到

除此AJAX Navigation之外IE8在优化Ajax支持,提高站点性能还做了一系列的改进
DOM Storage:

相当于扩展了Cookie的容量,一来解决Cookie大小和个数的限制,二来增加操作的简洁性。Cookie的操作更多是面向服务器的,用js操作过cookie的都知道那是非常的复杂。DOM Storage允许为当前session或永久的存储较大量的数据(每个域名包括子域名10M),这个能让客户端的缓存更加好控制和可靠,不用担心缓存被用户清掉。

说道这里期待一下JS对象的序列化,持久化,像Prototype的toJSON一样的JS原生支持。

XMLHTTPRequest Enhancements:
对于XMLHTTPRequest进行了扩展,提供了timeout属性。
Connectivity events:
提供一个网络连接发生变化(比如断线)会触发一个事件,但不知道是否只支持windows操作系统。

做Ajax应用的朋友都知道,使用XmlHttp的异步请求要防止用户在请求数据返回之前,用户点击其他功能,造成页面状态混乱。我们常常用搞一个灰色半透明层来屏蔽用户点击,但是一但等待过程中网络出现问题,或者服务器不再响应,那么这个层就永远揭不掉了。而如果改用同步请求,他会Hold住页面,等待数据,但是,在等待的过程中页面是死住的,那么一但网络链接出现问题会造成浏览器失去响应(IE,FireFox都是如此)。所以网络断线的事件和链接timeout事件会让服务变得更加流畅,避免进程死掉的危险,这样看来,以后同步请求会成为主流,而且率先应验在企业应用中。

IE8对于跨域问题也给出两个新的解决方案
Cross-domain Request (XDR):

解决跨域数据发布问题,基本上可以理解为基于一定安全策略的XmlHttpRequest跨域名扩展。
Cross-document Messaging (XDM):
解决跨域名frame之间的安全数据通信,现在不同域名的iframe之间是不能访问的,主要是出于安全着想。因为同域名的互访是毫无障碍的你可以在同域名frame下进行任何js操作。但是,如现阶段完全将不同域名的frame完全割裂开,也是不太人道。其实我只想告诉其他frame一些消息,这并不会对其他域名下的内容安全造成影响,通过消息播放机制,接收端决定动作,这个是越来越多域名间合作的好办法。

还有一些小的试验,以后会持续的补充呵呵。
 IE8的js引擎版本号还是和ie7一样的5.7,只是小版本略有升级,猜测JS的核心较多优化较少变化
 
 IE8的Array对象还是没有indexOf等等方法
 
 IE8的div还是没有默认的name属性,document.getElementsByName()同样得不到指定name的div。
 
 IE8的a还是套不住table,<a href="http://www.yahoo.cn"><table><tbody><tr><td>can goto yahoo?</td></tr></tbody></table></a>还是点不到目的地
 
 外层的滤镜还是会影响iframe内部。
 
 等等等等。。。

前几天BG说Google不懂企业客户需求,我想有他的一些道理,IE8推出的这些好的服务,对于更好的服务企业客户,意义是重大的。比如一个和微软合作的集团企业,可以方便的将所有ERP系统上的浏览器升级到IE8,同时加上SilverLight呵呵,这样,很多好的服务可以当即转化位生产力。即便你做J2EE项目,要求IE浏览器又有什么难的呢,从这一点上讲,企业系统的开发者你们是幸福的,羡慕你们。

英语很差,微软视频看过了只是感性认识,如果有说的不对的还望指正。

原创粉丝点击