微软此举的意图很明显——以一种极小的代价“实现” dom2的全部接口。这里举两个例子:
复制代码 代码如下:
element.prototype.addeventlistener = function(evttype, evthandler) {
return this.attachevent('on' + evttype, evthandler);
}
object.defineproperty(event.prototype, 'target', {
get: function() { return this.srcelement },
set: function(v) { return this.srcelement = v }
});
这似乎和早年使用__definegetter__之流让firefox兼容ie的方法一致,不过这次使用的是完全标准(dom原型和ecma v5)的方法来弥补ie的缺憾。可能ie8开发时重写了渲染引擎但是没来及(我很乐观……)发布新的dom接口(可能是为了兼容第三方应用程序),所以给出了这个方案。
