是否有工具可以扫描我的Javascript代码以查找可能并非在所有浏览器中都存在的功能?
我的库完全不是用户界面,因此我不关心某些内容是如何“显示”的。我正在寻找的是类似于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
更新:
看看显示插件来解决这个问题的answer from Stephan Vierkant。
没有这样的工具,并且有a lot of browsers。
我认为有一种替代方法可以扫描代码以兼容“所有”浏览器,尽管这确实是一件有用的事情。大多数人都会做以下两件事来确保某种程度的跨浏览器兼容性。
使用图书馆
您可以使用像underscore.js,jQuery,Dojo,Modernizr等库来为您包装浏览器不兼容性。因此,您可以使用jQuery.inArray,它可以在jQuery覆盖的所有浏览器中使用,并提供通用接口供您使用。
限制浏览器支持
确定要在应用程序中支持哪些浏览器,在您的网站上说明,然后在这些浏览器中进行测试。如果你有它们本身,或者使用像browserstack之类的东西来测试你没有的浏览器。 This answer还列出了更多替代品。
最后,在编写代码时需要依赖最佳实践和个人经验。
更新:
无论好坏,检查器都不再可用。
寻找同样的问题(在这几年之后),我碰到了 Javascript兼容性检查器 。
它给了我一个关于我的脚本与主要浏览器的兼容性的提示。