扫描Javascript以获得浏览器兼容性

时间:2013-03-29 12:00:54

标签: javascript ecmascript-5

是否有工具可以扫描我的Javascript代码以查找可能并非在所有浏览器中都存在的功能?

我的库完全不是用户界面,因此我不关心某些内容是如何“显示”的。我正在寻找的是类似于Mozilla的Javascript MDN。例如,对于Array.prototype.indexOf,他们警告说这是最近的ECMAScript添加,并非在所有浏览器中都存在(并且通常提供存根)。 我正在寻找的工具是列出我的代码中属于此类别的函数。

4 个答案:

答案 0 :(得分:3)

更新:

查看显示解决此问题的插件的answer from Stephan Vierkant


没有这样的工具,而且有a lot of browsers

我认为有一种替代方法可以扫描您的代码以兼容“所有”浏览器,尽管这确实很有用。大多数人都会做以下两件事来确保某种程度的跨浏览器兼容性。

使用图书馆

您可以使用包含浏览器不兼容性的underscore.jsjQueryDojoModernizr等库。所以你可以使用jQuery.inArray,它可以在jQuery覆盖的所有浏览器中使用,并提供一个通用的界面供你使用。

限制浏览器支持

确定您希望在应用程序中支持哪些浏览器,在您的网站上说明,然后在这些浏览器中进行测试。如果你有它们本身,或者使用像browserstack之类的东西来测试你没有的浏览器。 This answer还列出了更多替代方案。

最后,在编写代码时需要依靠最佳实践和个人经验。

答案 1 :(得分:2)

您可以使用eslint-plugin-compat,这是ESlint linting实用程序的插件。您甚至可以使用Browserlist来配置要支持的浏览器。

Nice animation about eslint-plugin-compat

安装非常容易。您必须安装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"],
}

然后运行lint:

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

答案 2 :(得分:1)

更新

无论好坏,检查器不再可用。

搜索相同的问题(在这几年之后),我碰到了 Javascript兼容性检查器

它给了我一个暗示我的脚本与主要浏览器的兼容性。

答案 3 :(得分:0)

您可以将代码粘贴到https://jshint.com/中,它将告诉您任何“新的”语言功能,请注意。但是,这并不表示哪些浏览器缺少哪些功能。