是否有工具可以扫描我的 Javascript 代码以查找所有浏览器中可能不存在的功能?
我的库完全是非 UI 的,所以我不在乎某些东西是如何“显示”的。我正在寻找类似于 Mozilla 的 Javascript MDN 中的内容。例如,对于 Array.prototype.indexOf,他们警告说它是最近添加的 ECMAScript,并非在所有浏览器中都存在(并且通常提供存根)。我正在寻找的是一个工具,它会在我的代码中列出属于这一类的函数。
是否有工具可以扫描我的 Javascript 代码以查找所有浏览器中可能不存在的功能?
我的库完全是非 UI 的,所以我不在乎某些东西是如何“显示”的。我正在寻找类似于 Mozilla 的 Javascript MDN 中的内容。例如,对于 Array.prototype.indexOf,他们警告说它是最近添加的 ECMAScript,并非在所有浏览器中都存在(并且通常提供存根)。我正在寻找的是一个工具,它会在我的代码中列出属于这一类的函数。
您可以使用eslint-plugin-compat,这是ESlint linting 实用程序的插件。您甚至可以使用Browserlist来配置您想要支持的浏览器。
安装非常简单。你必须安装 eslint 和这个插件:
npm install --save-dev eslint-plugin-compat
或者
yarn add --dev eslint eslint-plugin-compat
并添加一个 ESlint 配置文件:
// .eslintrc
{
"extends": ["plugin:compat/recommended"]
}
将支持的浏览器添加到您的package.json
文件中:
// sample configuration (package.json)
{
// ...
"browserslist": ["last 2 Chrome versions", "IE 11"],
}
然后运行 linter:
eslint yourfile.js
就我而言,这是输出:
92:9 error Promise.all() is not supported in IE 11 compat/compat
94:9 error Promise.all() is not supported in IE 11 compat/compat
更新:
看看Stephan Vierkant 的答案,它显示了一个解决这个问题的插件。
没有这样的工具,而且有很多浏览器。
我认为有一种替代方法可以扫描您的代码以与“所有”浏览器兼容,尽管这确实是一件有用的事情。大多数人会做以下两件事来确保一定程度的跨浏览器兼容性。
使用图书馆
您可以使用像underscore.js、jQuery、Dojo、Modernizr等这样的库来为您包装浏览器的不兼容性。因此,例如,您可以使用 jQuery.inArray,它将在 jQuery 涵盖的所有浏览器中工作,并提供一个通用界面供您使用。
限制浏览器支持
确定您的应用程序要支持哪些浏览器,在您的网站上声明,然后在这些浏览器中进行测试。如果您拥有它们,则可以在本机上进行测试,或者使用诸如 browserstack 之类的东西对您没有的浏览器进行测试。该答案还为此列出了更多替代方案。
最后,在编写代码时可以依赖最佳实践和个人经验。
更新:
可用于 Javascript 兼容性检查器的新链接:https ://seedmanc.github.io/jscc/
检查器不再可用。
搜索相同的问题(在这几年之后),我碰到了Javascript 兼容性检查器.
它提示了我的脚本与主要浏览器的兼容性。
您可以将代码粘贴到https://jshint.com/,它会告诉您任何需要注意的“新”语言功能。但是,它并没有指出哪些浏览器缺少哪些功能。