IE9的特性变化,(收集贴)
ie9 仍然未改变的一些不好的部分:
.未配置 Expires max-age , no-cache ,no-stroe 时 默认仍然有会话级的缓存.存在
.getElementsByName 仍然只对 表单元素有效.
.仍然不支持 window.XPathEvaluator 方法.
.仍然不支持 XPathResult
.仍然不支持 window.open 方式的postMessage 通信.
.仍然不支持 onpageshow onpagehide
.同ie8类似. el.setAttribute('onclick',''); 只能工作在非怪异模式或兼容模式下.
.仍然不支持正则对象的exec简单调用方式. /./('123')
.仍然不支持 __proto__ 或 __defineGetter__ 等好用的非标准的东西.
.仍然存在 iframe缓存bug...
.对于动态添加的scriptElement,仍然无法保证执行时序.
.仍然不支持 rgba.
ie9 改变的一些商榷的部分:
. for in顺序与chrome opera一样 使用了一种变态的ascii排序.
. 对于已存在的一个script节点,修改其src属性,后虽然仍然能发起一个http请求,但是新被请求的脚本却不会被执行.
. 不在支持document.createElement('<div id ="abc">123</div>');这种参数格式了.
.window.ScriptEngineMinorVersion();始终是0 . 引用莫的话: 返回值直接依赖于所使用的 Scripting 语言的动态链接库 (DLL) 中包含的版本信息
.不再支持IE系特有的可以访问调用者的arguments对象的接口,arguments.caller了.
.居然可以枚举arguments对象了.这真是一种历史的倒退啊.
ie9 改变的一些令人愉快的部分:
.支持 set get关键字鸟.(chrome1+ , safari3+ , firefox1.0+ , opera9.6+ 就都支持了.而IE9终于支持了.)
.开始支持ECMAScript262 Edition5 中的一些新方法了.如:
.Object.defineProperty (此接口只有chrome比较新的版本,ie8+,Firefox4+,Safair5 支持,Opera11仍然不支持..)
.Object.definePropertys ( 同defineProperty一样,这个IE9很光荣,先于Firefox4支持,且Opera11仍然不支持.)
.Function.prototype.bind
.
.Object.prototype.getPropertyOf
.
.
.
.终于支持'\v'垂直制表符了.
.终于[,].length ==2 鸟.
.终于支持 document.defaultView接口了
.也支持getComputedStyle接口了.
.支持getElementsByClassName了.
.frames === window 终于true了. 即 window.frames 终于不再是window的一个浅表copy了
.支持window.DOMParser XML转换对象了
.去掉了初次在global上查找window 宿主对象时的惰性绑定机制.
.修复for s in obj 时 obj为非静态 问题.
.window.a =1; delete a; //true.
.eval 和(1,eval) 的区别终于在IE9被实现了.
.抛弃了对老的dhtml接口的支持. 如 element.setExpression 等相关老接口.
.终于支持script 的onload 和onerror鸟
. window.x = 1; delete window.x;//终于是true,且不抛异常了. delete 1;//终于是true,而不抛异常了. 不论对错.至少统一了浏览器的行为.
.终于Array.prototype.toString->Array.prototype.join方法中 遇到元素为undefined的情况,不再会责任链查找到,Object.prototype[n]上面了.
.终于对new String()对象实现了索引器了.而不是像IE8那样,仅仅是string 直接量才能用索引器.
.new Image().complete 属性,终于如Safari,Chrome,Opera.那样仅仅在语义上表示图片是否被加载完成.而和是否被浏览器缓存无关了.但要注意此值受其模式影响,譬如怪异模式.则会变成老样子.
.终于支持 window.ondragenter dragover 鸟.(Opera11还不支持呢.)
.支持 addEventListener 等DOM2的API了. 但应该注意. addEventListener注册的事件侦听. 用fireEvent无法触发.必须使用对应的dispatchEvent.标准DOM API. 否则需要使用attachEvent去对应fireEventAPI.