让IE8支持DOM 2(不用框架!)
微软此举的意图很明显――以一种极小的代价“实现” DOM2的全部接口。这里举两个例子:
这似乎和早年使用__definegetter__之流让Firefox兼容IE的方法一致,不过这次使用的是完全标准(DOM原型和ECMA v5)的方法来弥补IE的缺憾。可能IE8开发时重写了渲染引擎但是没来及(我很乐观……)发布新的DOM接口(可能是为了兼容第三方应用程序),所以给出了这个方案。
代码如下:
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接口(可能是为了兼容第三方应用程序),所以给出了这个方案。