【发布时间】:2016-01-04 16:47:39
【问题描述】:
我有一大堆 JS 库需要重写,因为它真的很旧而且过时了。因此,我决定提出一个解决方案,我将只使用大部分 ES2015 功能,例如 rest parameters。
问题是,我确信所有客户的浏览器都不会是最新的,我很困惑是否会面临有关他们的浏览器与我的新 JS 库兼容的任何问题。
所以,我想知道是否可以检测客户端浏览器是否与 ES2015 兼容。如果没有,我将只包含我的旧 JS 库。
我正在寻找像 Conditional comments 这样的解决方案,但我无处可去。
感谢您对 HTML、JS 或 PHP 的任何帮助。请提出您的建议。
【问题讨论】:
-
目前根本没有兼容整个 ES2015的浏览器。见kangax.github.io/compat-table/es6
-
好问题。对于初学者,我认为这最好用作依赖管理器配置,以便加载脚本的替代版本。至于检测,我想知道最简单的方法是不是像
eval("function(a,b,...args) { }");,并检查语法错误。当然,提醒一下“eval 是邪恶的”,但如果您记住只将它用于精确的内联字符串,它可能会更安全一些。 -
很多 ES6 特性不能简单地填充,因为它是新的语法,所以你需要所有代码的两个版本;一个 ES6 版本和一个 Legacy 版本(可能是使用 Babel 从 ES6 版本编译而来的?)。特征检测必须在
try..catch中完成,因为如果不支持它将抛出错误。不过,您可以改为使用 shim 将代码升级到 ES5,这意味着您只有一个代码库。