技术开发 频道

探秘IE8 JavaScript功能超乎想象

IE8引入XDomainRequest跨站数据获取功能

  这是一个非常有趣的进行跨站数据获取的功能,不过它与Firefox 3中的跨站 XMLHttpRequest的工作原理不太一样。它的跨域并不是无限制的。需要服务端返回http header中带有XDomainRequestAllowed=1才可以跨域,否则是不成功的。

  XMLRequest 不能跨站一直都是多子域服务器的硬伤。使得很多情况不得不考虑最原始的动态script和JSON的方式。不过IE8团队有意解决跨站访问数据的问题,这是IE8的一个进步。

  另外,IE8下的XMLHttpRequest增加了一个很重要的属性 timeout和ontimeout方法,它在对程序进行优化时极其重要。

DOM漏洞修补

  在IE 8中getAttribute/setAttribute已经进行了重大改进。简单来说,它们现在已经可以完成属于自己的任务,IE8和和其它浏览器在这方面的差距已经不大。臭名昭著的accessing relative/absolute href/src属性问题也已经得到解决,这是一个很大的进步。另外它们还增加了hasAttribute功能。

  其它新增和修复包括:
  •.ownerElement和.ownerDocument。我们现在终于有了一个统一的方法来处理子框架。
  •getElementById可以通过id来返回对象。这是一个我们期盼已久的功能。
  •getAttribute("checked") 现在返回“checked”而不是true。
  •动态创建(或修改)的单选按钮现在可以被选择了。

  对于这些修复我感到即高兴又生气,高兴的是微软终于对它们做出了正确的修改,生气的则是微软花了这么长时间才做出正确的修改。

W3C:事件

  这个功能是IE 8目前版本完全缺失的一个部分。我们依然需要继续使用IE的attachEvent系统,还看不到addEventListener的到来。我不确认这个功能的缺失对于IE 8的Acid3支持将带来多大的影响,不过在Acid3中已经包含了对addEventListener的测试,因此微软可能已经开始考虑增加对它的支持。

  从某种程度上我可以理解微软希望保留自己现有API的心情,但是我不能理解它们为什么没有兴趣也增加对addEventListener的支持。我猜测理由可能是微软不得不支持像事件捕获之类的概念。

  对于这一点我感到非常失望。我认为这是下一个版本中急需修正的一个地方。

JavaScript语言

  在完善垃圾收集、内存管理和性能等问题上,IE团队已经进行了一些重大的改进,这些改进对我们很多应用的开发都意义重大。

  尽管如此,我还是要纠正一点。尽管IE 8对于JavaScript开发者来说是非常伟大的一个浏览器,但如果更准确的说,高兴的或许只是“JavaScript+DOM”开发者。单就JavaScript来说,IE 8却比较令人失望:在这个版本的浏览器中并没有出现任何新的纯正JavaScript功能。我只能寄望于在下一个版本中增加更多的改进了。
 

0
相关文章