網(wǎng)頁和瀏覽器兼容性問題匯總(draft1)
更新時(shí)間:2009年06月01日 16:28:51 作者:
由于IE擴(kuò)展了許多私有的DOM、CSS等導(dǎo)致許多網(wǎng)頁的開發(fā)者都根據(jù)IE開發(fā),才導(dǎo)致許多網(wǎng)頁的不規(guī)范,從而導(dǎo)致現(xiàn)在的瀏覽器瀏覽相同網(wǎng)頁效果不盡相同。
一.Javascript
1.日期對(duì)象的getYear方法
IE getYear()返回的結(jié)果和getFullYear()結(jié)果是相同的,但是ECMA262明確規(guī)定了getYear返回的是“年份-1970”。而有些網(wǎng)站采用getYear返回年份,導(dǎo)致IE瀏覽器和FF等比較規(guī)范的瀏覽器出現(xiàn)邏輯上的不同。
二.DOM
1.事件模型
2.document.elementFromPoint
document的該方法是IE擴(kuò)展的,可以根據(jù)視口的客戶區(qū)坐標(biāo)返回元素的DOM節(jié)點(diǎn)。safari也支持該方法,但是坐標(biāo)表示的是網(wǎng)頁內(nèi)容布局后的坐標(biāo)(該坐標(biāo)是瀏覽器窗口的客戶區(qū)坐標(biāo))。兩者的區(qū)別導(dǎo)致了如果想通過鼠標(biāo)的指針的位置獲取元素節(jié)點(diǎn),IE是可以直接事件的客戶的客戶區(qū)坐標(biāo)(clientX,clientY)返回元素,但是safari需要用scrollX和scrollY來返回。從該接口的意義上說兩者都是合理的。MSDN里面也沒有明確定義該坐標(biāo)的意義,但是從接口的使用上說IE更加簡(jiǎn)單,而safari卻需要轉(zhuǎn)換坐標(biāo)。
三.CSS
四.layout
五.插件與ActiveX
眾所周知,IE兼容第三方程序采用的是ActiveX技術(shù);而Firefox,safari,Chrome,opera采用的是NPAPI的插件技術(shù)。兩者在接口層次上而言插件接口層次更低(都是C函數(shù)指針),采用抽象的接口和數(shù)據(jù)類型封裝瀏覽器和第三方程序的交互邏輯,但是瀏覽器和插件程序是緊耦合的;而ActiveX屏蔽了進(jìn)程和線程模型,是一種較松耦合的交互方式。這也是為什么合法 的ActiveX在IE中不會(huì)使得IE崩潰,但是同功能的插件有可能使得瀏覽器崩潰。在這個(gè)特性的區(qū)別是也是瀏覽器兼容性方面較大區(qū)別之一。
六.其他
1.論壇根據(jù)UserAgent中瀏覽器的子版本設(shè)置Cookie,這不太合理,因?yàn)閁serAgent會(huì)隨著瀏覽器版本變化,而導(dǎo)致原來的Cookie實(shí)效。
1.日期對(duì)象的getYear方法
IE getYear()返回的結(jié)果和getFullYear()結(jié)果是相同的,但是ECMA262明確規(guī)定了getYear返回的是“年份-1970”。而有些網(wǎng)站采用getYear返回年份,導(dǎo)致IE瀏覽器和FF等比較規(guī)范的瀏覽器出現(xiàn)邏輯上的不同。
二.DOM
1.事件模型
2.document.elementFromPoint
document的該方法是IE擴(kuò)展的,可以根據(jù)視口的客戶區(qū)坐標(biāo)返回元素的DOM節(jié)點(diǎn)。safari也支持該方法,但是坐標(biāo)表示的是網(wǎng)頁內(nèi)容布局后的坐標(biāo)(該坐標(biāo)是瀏覽器窗口的客戶區(qū)坐標(biāo))。兩者的區(qū)別導(dǎo)致了如果想通過鼠標(biāo)的指針的位置獲取元素節(jié)點(diǎn),IE是可以直接事件的客戶的客戶區(qū)坐標(biāo)(clientX,clientY)返回元素,但是safari需要用scrollX和scrollY來返回。從該接口的意義上說兩者都是合理的。MSDN里面也沒有明確定義該坐標(biāo)的意義,但是從接口的使用上說IE更加簡(jiǎn)單,而safari卻需要轉(zhuǎn)換坐標(biāo)。
三.CSS
四.layout
五.插件與ActiveX
眾所周知,IE兼容第三方程序采用的是ActiveX技術(shù);而Firefox,safari,Chrome,opera采用的是NPAPI的插件技術(shù)。兩者在接口層次上而言插件接口層次更低(都是C函數(shù)指針),采用抽象的接口和數(shù)據(jù)類型封裝瀏覽器和第三方程序的交互邏輯,但是瀏覽器和插件程序是緊耦合的;而ActiveX屏蔽了進(jìn)程和線程模型,是一種較松耦合的交互方式。這也是為什么合法 的ActiveX在IE中不會(huì)使得IE崩潰,但是同功能的插件有可能使得瀏覽器崩潰。在這個(gè)特性的區(qū)別是也是瀏覽器兼容性方面較大區(qū)別之一。
六.其他
1.論壇根據(jù)UserAgent中瀏覽器的子版本設(shè)置Cookie,這不太合理,因?yàn)閁serAgent會(huì)隨著瀏覽器版本變化,而導(dǎo)致原來的Cookie實(shí)效。
相關(guān)文章
淺析js實(shí)現(xiàn)網(wǎng)頁截圖的兩種方式
這篇文章主要介紹了淺析js實(shí)現(xiàn)網(wǎng)頁截圖的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11JS中函數(shù)科里化的背景與應(yīng)用實(shí)例教程
在數(shù)學(xué)和計(jì)算機(jī)科學(xué)中,柯里化是一種將使用多個(gè)參數(shù)的一個(gè)函數(shù)轉(zhuǎn)換成一系列使用一個(gè)參數(shù)的函數(shù)的技術(shù),下面這篇文章主要給大家介紹了JS中函數(shù)科里化的背景與應(yīng)用實(shí)例的相關(guān)資料,需要的朋友可以參考下2022-06-06來自國(guó)外的頁面JavaScript文件優(yōu)化
外部JavaScript文件塊下載和傷害你的頁面的性能,但有一個(gè)簡(jiǎn)單的方法來解決此問題:并行使用動(dòng)態(tài)腳本標(biāo)記和加載腳本,提高頁面加載速度和用戶體驗(yàn)。2010-12-12JavaScript中Null與Undefined的區(qū)別解析
這篇文章主要介紹了JavaScript中Null與Undefined的區(qū)別解析,本文給出了多個(gè)代碼實(shí)例講解它們之間的區(qū)別,需要的朋友可以參考下2015-06-06深入聊聊Array的sort方法的使用技巧.詳細(xì)點(diǎn)評(píng)protype.js中的sortBy方法
深入聊聊Array的sort方法的使用技巧.詳細(xì)點(diǎn)評(píng)protype.js中的sortBy方法...2007-04-04