2016-01-20 137 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