有没有一种工具可以扫描我的Javascript代码,查找在某些浏览器上可能不存在的函数?
我的库完全不涉及UI,所以我不关心如何“显示”某些内容。我需要的是类似于Mozilla的Javascript MDN中的内容。例如,对于Array.prototype.indexOf,他们警告说这是一个最近的ECMAScript添加项,在某些浏览器中不存在(通常提供一个存根)。 我正在寻找的是一种工具,可以列出在我的代码中属于此类别的函数。
有没有一种工具可以扫描我的Javascript代码,查找在某些浏览器上可能不存在的函数?
我的库完全不涉及UI,所以我不关心如何“显示”某些内容。我需要的是类似于Mozilla的Javascript MDN中的内容。例如,对于Array.prototype.indexOf,他们警告说这是一个最近的ECMAScript添加项,在某些浏览器中不存在(通常提供一个存根)。 我正在寻找的是一种工具,可以列出在我的代码中属于此类别的函数。
安装非常容易。您需要安装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"],
}
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 兼容性检查器。
它让我了解了我的脚本在主要浏览器中的兼容性情况。