歡迎來到 常識詞典網(wǎng) , 一個專業(yè)的常識知識學習網(wǎng)站!
[ Ctrl + D 鍵 ]收藏本站
答案 1:
首先,要假設這裡提到的是純 JS,如果連 DOM 一起考慮會非常複雜。大家應該了解瀏覽器差異不同的原因有不同的種類,避免問出難以回答的問題、了解標準的極限並不對標準有不實際的幻想。這裡將瀏覽器 JS 實作差異種類分為三種:新特性、錯誤的實現(xiàn)、規(guī)範未定義造成的歧異。新特性:很多兼容性的問題僅僅是有些新特性有無實現(xiàn)的問題。在討論 ECMAScript 兼容性時候,必須先釐清 ECMAScript 的版本,現(xiàn)在最新的 ECMAScript 版本是 5。ECMAScript 5 新特性的實現(xiàn)情形,可以參考[1]的表格,可以注意到在 IE6、FF3.5 以上還是有不一樣的實現(xiàn)情形。超過 ECMAScript 5 的新特性的兼容更是無法避免,F(xiàn)F 有很多這種實驗性的特性,例如說 var {name, age} = person; (這叫 destructuring assignment[2],等同於 var name = person.name; var age = person.age; )也就是必須了解很多時候?qū)崿F(xiàn)走在標準前面,而標準制定是實現(xiàn)標準化的過程,所以在這個過程中實現(xiàn)不一致是很一般的情形。錯誤的實現(xiàn):理論上瀏覽器應先修復既有的實現(xiàn)才實現(xiàn)新特性,但是很多既有實現(xiàn)的錯誤僅發(fā)生在非常極端的情況下,因此考量到成本跟利益的情形有時候瀏覽器會先選擇實現(xiàn)新特性。ECMAScript 的上一個版本是第三版,其兼容性可以參考[3],各瀏覽器通過的測試比例分別是:Opera 10.50 - 98.5%、Safari 4 - 97.0%、C-rome 4 - 95.8%、FF 3.6 - 95.0%、IE8 - 91.2%(2010年3月當時的最新瀏覽器)。規(guī)範未定義造成的歧異:有些 ECMAScript 特別指出的未定義行為造成的歧異。舉個例子來說,ECMAScript 5 沒定義 Mat-.random() 的算法造成 WebKit 使用的位數(shù)較少[4]。其他例子可以從 ECMAScript 5 的規(guī)範[5]裡面搜尋 "implementation-dependent" 得到。這種問題嚴格上不能責怪瀏覽器實現(xiàn)者,真要說的話應該算是規(guī)範不應該留下這些「未定義漏洞」,HTML5 規(guī)範裡面基本上沒有這些「 未定義漏洞」。另一方面,留一些漏洞是留給瀏覽器實現(xiàn)者一些自由以優(yōu)化代碼等等。但以現(xiàn)在的觀點來看,這些漏洞造成 Web 開發(fā)者的困擾更大。== 結(jié)論 ==現(xiàn)在寫 JavaScript 還要考慮對不同瀏覽器的支持嗎?要。特別需要注意 IE 錯誤實現(xiàn)很多,當然目前看來 IE 10 在 ECMAScript 5 的錯誤是最少的,但是 IE 10 要廣泛使用要等幾年?可以參考 ECMAScript 5 的兼容表格[1]以決定要使用的 JS 特性。對于 IE6 以上,F(xiàn)F3.5 以上等瀏覽器,對JavaScript的支持還有多大的差異?新特性:很大。錯誤的實現(xiàn):還可以。規(guī)範未定義造成的歧異:一般不會碰到但是要注意。它們的發(fā)展趨勢是不是逐漸符合 ECMA 的 ECMAScript 標準?這個問題很難回答,因為 FF 在新特性上做了很多實驗而這些實驗其實是可以視為是超出標準的。一般錯誤的實現(xiàn)是有在減少。[1]kangax.git-ub/es5-comp...[2]wiki.ec-script.org/doku...[3]sputnik.googlelabs/compare[4]lists.w3.org/Arc-ives...[5]people.mozilla.org/~jorendo...答案 2:
JavaScript語言本事的目前在主流瀏覽器中不存在兼容性問題(當然es3與es5間是有差異的),兼容性問題主要在與JavaScript操作DOM和BOM部分,但這部分的兼容性問題jQuery已經(jīng)做的相當完善了,如果使用JQuery通常也無效考慮太多JavaScript方面兼容性問題。答案 3:
這個問題問的過早,現(xiàn)在對于書寫js最大的問題恰恰就是兼容。不要說不同的瀏覽器,即使是同一個瀏覽器,在不同的版本就會有兼容問題。同一個核心的不同瀏覽器也有兼容問題。答案 4:
悲觀的說,這應該只是個夢....現(xiàn)在主流瀏覽器對ECMAScript標準有各自的實現(xiàn),為了各自的利益我相信不可能所有的瀏覽器會完完全全的按照標準實現(xiàn)......只可能是大部分的子集。舉個例子:在2010年,Ec- international 做了一次關于各實現(xiàn)對Ec- 262 Ec-script標準的測試。Product Current version Test262 failed Beta/Preview version Test262 failed Test suite version (date)Internet Explorer 9.0 276/10872 10.0 Preview 1 3/10872 0.7.2 (2011-04-20)Firefox 4.0.1 298/10872 Nig-tly (2011-05-03) 232/10872 0.7.2 (2011-04-20)C-rome 11.0.969.60 521/10872 12.0.742.12 dev-m 486/10872 0.7.0 (2011-04-08)Opera 11.10 3840/10872 0.7.0 (2011-04-08)參考 en.-.org/wiki...答案 5:
需要注意是肯定的,但并沒有多恐怖?,F(xiàn)在的js庫(如mootools, jquery)在很大程度上解決了這個問題。一般在firefox或c-rome下開發(fā)完成后,稍微去ie里測一下就行。想想遇到最多的兼容性問題大約是json末尾的逗號忘了刪。。。答案 6:
現(xiàn)實就是個噩夢!可能永遠都要考慮吧,瀏覽器多了必然有問題,瀏覽器也在不斷升級,新功能、特性不斷出現(xiàn),標準也在不斷的完善。不過兼容性問題可以讓jquery/mootools等類庫解決。答案 7:
1,要。2,很大。3,是。答案 8:
跟css一樣要考慮不同瀏覽器不同版本之間的兼容性,JavaScript的兼容性也是一個令人頭疼的事情。答案 9:
手持設備上很多JS的鼠標效果是無法實現(xiàn)的。網(wǎng)頁簡單就好。下一篇:《福布斯》評-創(chuàng)新能力居全球第四,超越蘋果和谷歌,這個如何理解? 下一篇 【方向鍵 ( → )下一篇】
上一篇:有多少團隊是用Git做版本管理的? 上一篇 【方向鍵 ( ← )上一篇】
快搜