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

