讓IE8支持DOM 2(不用框架!)
更新時間:2009年12月31日 21:47:36 作者:
眾所周知,IE8開放了對DOM原型的支持以及ECMA v5的兩個新方法——Object.defineProperty和Object.getOwnPropertyDexcriptor(單詞好長……),并且這兩個新方法居然只能用于DOM。
微軟此舉的意圖很明顯——以一種極小的代價“實現(xiàn)” 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的缺憾??赡躀E8開發(fā)時重寫了渲染引擎但是沒來及(我很樂觀……)發(fā)布新的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的缺憾??赡躀E8開發(fā)時重寫了渲染引擎但是沒來及(我很樂觀……)發(fā)布新的DOM接口(可能是為了兼容第三方應用程序),所以給出了這個方案。
相關文章
JavaScript 解決ajax中parsererror錯誤案例詳解
這篇文章主要介紹了JavaScript 解決ajax中parsererror錯誤案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08詳解JavaScript原生封裝ajax請求和Jquery中的ajax請求
在本篇文章中我們總結(jié)了關于JavaScript原生封裝ajax請求和Jquery中的ajax請求的知識點內(nèi)容,需要的朋友們學習參考下。2019-02-02JavaScript實現(xiàn)節(jié)點的刪除與序號重建實例
這篇文章主要介紹了JavaScript實現(xiàn)節(jié)點的刪除與序號重建方法,涉及javascript針對頁面節(jié)點的刪除與遍歷技巧,非常具有實用價值,需要的朋友可以參考下2015-08-08next.js初始化參數(shù)設置getServerSideProps應用學習
這篇文章主要為大家介紹了next.js初始化參數(shù)設置getServerSideProps的應用示例學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10