網(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)文章
javascript驗(yàn)證上傳文件的類型限制必須為某些格式
驗(yàn)證上傳文件類型的方法有很多,在本文為大家詳細(xì)介紹下js中是如何實(shí)現(xiàn)的2013-11-11
JS運(yùn)動(dòng)特效之完美運(yùn)動(dòng)框架實(shí)例分析
這篇文章主要介紹了JS運(yùn)動(dòng)特效之完美運(yùn)動(dòng)框架,結(jié)合實(shí)例形式分析了javascript針對(duì)運(yùn)動(dòng)中的元素屬性檢測(cè)與判斷相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
JavaScript實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
JavaScript中實(shí)現(xiàn)map功能代碼分享
這篇文章主要介紹了JavaScript中實(shí)現(xiàn)map功能代碼分享,本文直接給出實(shí)現(xiàn)代碼,給出一個(gè)MAP類,類中包含大多數(shù)的常用方法,還可以自己擴(kuò)展,需要的朋友可以參考下2015-06-06

