Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扫描Javascript以查看浏览器兼容性_Javascript_Ecmascript 5 - Fatal编程技术网

扫描Javascript以查看浏览器兼容性

扫描Javascript以查看浏览器兼容性,javascript,ecmascript-5,Javascript,Ecmascript 5,是否有一个工具可以扫描我的Javascript代码,以查找并非所有浏览器中都存在的函数 我的库是完全非UI的,所以我不关心如何“显示”某些内容。我要寻找的是Mozilla的Javascript MDN中的类似内容。例如,对于Array.prototype.indexOf,他们警告说这是最近添加的ECMAScript,并非所有浏览器都有(通常提供存根)。 我要找的是一个工具,它可以列出我代码中属于这一类的函数。更新: 看一看显示了解决此问题的插件的 没有这样的工具,也没有 我认为有另一种方法可以

是否有一个工具可以扫描我的Javascript代码,以查找并非所有浏览器中都存在的函数

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

更新:

看一看显示了解决此问题的插件的


没有这样的工具,也没有

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

使用库

您可以使用诸如、、等库为您包装浏览器不兼容。例如,您可以使用jQuery.inArray,它将在jQuery覆盖的所有浏览器中工作,并提供一个供您使用的通用界面

限制浏览器支持

决定应用程序支持哪些浏览器,在网站上声明,然后在这些浏览器中进行测试。如果你有浏览器的话,可以使用本机测试,也可以使用类似browserstack的东西来测试你没有的浏览器。还列出了更多的替代方案

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

更新:

可用于Javascript兼容性检查器的新链接:


检查器不再可用


为了寻找同样的问题(在这几年之后),我碰上了Javascript兼容性检查器

它给了我一个提示,说明我的脚本与主要浏览器的兼容性如何。

您可以使用linting实用程序的插件。您甚至可以使用来配置要支持的浏览器

安装非常简单。您必须安装eslint和此插件:

npm install --save-dev eslint-plugin-compat

并添加一个ESlint配置文件:

// .eslintrc
{
  "extends": ["plugin:compat/recommended"]
}
将支持的浏览器添加到
包.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

您可以将代码粘贴到中,它将告诉您需要注意的任何“新”语言特性。但是,它并不表示哪些浏览器缺少哪些功能。

这将非常有用。偏爱。虽然有点棘手,但使用的是非类型化语言。对于所有潜在的回答者:仅仅转储一个指向“我可以在浏览器y中使用x”网站的链接并不是一个答案@虽然这些都不是很好的答案,但很容易立即删除。让社区也说几句话。伟大的力量带来伟大的节制……如果还没有这样的工具,我会嗅到我的下一个项目。哈虽然我很难相信它还不存在。当然,我可以限制支持,但对于非图形库来说,这似乎是一个糟糕的选择。至于库,如果我想发布自己的代码(库),我必须将其作为依赖项添加,如果可能的话,我希望避免这种情况。而且,它们通常比我需要的多得多,即使它们支持定制的构建,我仍然需要弄清楚我到底需要什么。然后,您将不得不再次执行他们的工作/复制代码,这比依赖于维护良好的库更糟糕。但即使你这样做了,我很确定你的库不会支持Mosaic浏览器或一些特殊情况。但正如我所说的,我仍然需要弄清楚我到底需要涵盖哪些功能。是的,我不太乐意把自己填得满满的,因为这对我自己的图书馆来说是“肮脏的”。但如果它只是Array.prototype.indexOf,我宁愿自己添加它,也不需要整个第三方库。即使只是为了提供信息,我也会对我所寻找的那种工具感兴趣。是的,确实如此,但正如我所说,没有这样的工具。继续写你的库,并在你能找到的尽可能多的浏览器中测试它。在很长一段时间后,我再次随机地遇到这个问题,现在我觉得使用库将是最好的方法。所以我会接受这个答案,即使真的很晚:)谢谢!不幸的是,使用箭头符号和类似标记的快速测试报告为“未发现任何问题”,我觉得这不太可能。@IngoBürk的确,它有一个新的开始,但它可能会因此而发展。@raratiru链接断开。@crantok谢谢,服务已经停止,我更新了我的答案。@IngoBürk终于,结论是,这项服务过于笨拙,无法发展。
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