2016-01-20 173 views
-1

我們正在啓動一個項目並希望與瀏覽器兼容 - 這似乎表明我們需要確保我們使用的JavaScript版本適用於所有我們打算的瀏覽器支持。下面是一個合理的方法來測試每個瀏覽器中JavaScript級別的工作原理嗎?對JavaScript版本的瀏覽器支持

<script language="javascript1.0">alert("Your browser at least supports JavaScript 1.0");</script> 
<script language="javascript1.1">alert("Your browser at least supports JavaScript 1.1");</script> 
<script language="javascript1.2">alert("Your browser at least supports JavaScript 1.2");</script> 
<script language="javascript1.3">alert("Your browser at least supports JavaScript 1.3");</script> 
<script language="javascript1.4">alert("Your browser at least supports JavaScript 1.4");</script> 
<script language="javascript1.5">alert("Your browser at least supports JavaScript 1.5");</script> 
<script language="javascript1.6">alert("Your browser at least supports JavaScript 1.6");</script> 
<script language="javascript1.7">alert("Your browser at least supports JavaScript 1.7");</script> 
<script language="javascript1.8">alert("Your browser at least supports JavaScript 1.8");</script> 

很明顯,隨着更多JavaScript版本的發佈,測試列表可能會擴展。

有沒有更好的方式(或來源)這些信息?

順便說一下,我確實看到了Wikipedia page on JavaScript versions,它似乎不符合我在運行上面的代碼片段時得到的結果。

我的結果是:

火狐43.0.4 - 報告通過1.5
JavaScript支持1.0 IE 10.0.9200.17566 - 報告通過1.3
鉻版47.0.2526.111 JavaScript支持1.1 m - 支持JavaScript 1.0到1.7的報告
Safari 5.1.7(7534.57.2) - 支持JavaScript 1.0到1.7的報告
歌劇院34.0.2036.50 - 報告通過1.7

+0

P.S.鑑於我的測試結果,似乎JavaScript 1.3是上述瀏覽器最新版本的共同點...... – Neoheurist

+1

https://kangax.github.io/compat-table/es6/ –

+0

在你做這件事之前,試試問自己這個問題:所有這些JavaScript版本之間有什麼不同?所有瀏覽器現在基本上支持所有

回答

7

JavaScript支持1.0以下合理的方法來測試,看看有什麼JavaScript的水平在每個瀏覽器的工作原理?

不要使用[language]屬性,它一定會引起你不兼容,特別是隨着時間的推移和新的瀏覽器決定他們只支持javascript3.8或任何版本篤怨婦發生成爲。如果你想寫一個腳本,只需寫一個腳本:

<script src="filename.js"></script> 

就檢測版本而言,你不需要檢測JS版本。沒有開發人員值得他們的鹽檢查版本,他們檢查功能。 Modernizr是一種這樣的特徵檢測資源。 caniuse是另一個描述哪些瀏覽器支持哪些功能,以便您可以確定是否可以使用任何特定功能。

在很多情況下,爲了最大程度地向後兼容,需要使用一組polyfills來複制您希望用於舊版瀏覽器的任何新功能。

+0

當某些已知瀏覽器中的功能被破壞/部分破壞時,值得他們使用鹽檢查版本的開發人員,誘騙特徵檢測。像IE7的狀態下的'file:///'上的XMLHttpRequest不工作​​,或者Safari 5 + 6上需要額外的DOMMutation訂閱的MutationObservers。那就是說,IE瀏覽器已經有一段時間了,這就是大部分規格差異所在。 – dandavis

+0

@dandavis,唯一一次應該使用hacky版本檢查的時候是沒有其他功能可以檢測的時候。 – zzzzBov

+0

不,功能檢測在實施出現您需要的功能時出現錯誤。例如,只要詢問老式safari中的if(window.MutationObserver)是否不會告訴你,如果沒有額外的解決方法,使用在其他地方工作的MutationObservers的代碼將無法按預期工作。深入研究任何大型流行的框架或dom庫,您將看到大量針對特定瀏覽器的修補程序,以涵蓋特定的子功能問題。 \t 我110%的同意,好的開發人員不寫代碼,就像你在2008年看到的那樣,開始了'if(ie){...} else {...}'... – dandavis