HTML5中的polyfills的含义是什么?

HTML5中的polyfills的含义是什么? 我在很多网站上看到了关于HTML5的这个词,例如HTML5-Cross-Browser-Polyfills。

所以在这里,我们正在收集所有的垫片,回退和polyfill,以便将HTML5function植入本来不支持它们的浏览器中。

我其实不明白polyfills是什么意思。

这是一个新的HTML5技术或JavaScript库吗? 在HTML5之前我从来没有听说过这个词。

垫片,后备和polyfills有什么区别?

polyfill是一种浏览器回退function,使用JavaScript编写,允许您在现代浏览器中使用旧function,例如在旧版浏览器中支持canvas(HTML5function)。

这是一种HTML5技术,因为它与HTML5一起使用,但它不是HTML5的一部分,并且可以在没有HTML5的情况下(例如,支持所需的CSS3技术)进行填充。

这是一个很好的post:

http://remysharp.com/2010/10/08/what-is-a-polyfill/

以下是Polyfill和Shim的完整列表:

https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

首先让我们澄清polyfil不是什么:polyfill不是HTML5标准的一部分。 即使您经常在这些情况下看到polyfill,也不是限于Javascript的polyfill。

术语“polyfill”本身指的是一些代码,“允许您在当前或”现代“浏览器中具有某些特定的function,并且可以在其他不支持该function的浏览器中使用。”

这里的polyfill的来源和示例:

http://www.programmerinterview.com/index.php/html5/html5-polyfill/

polyfill是一段代码(或插件),它提供了开发人员希望浏览器本地提供的技术。

填充是一个垫片, 垫片的呼叫代替原来的呼叫。

例如,假设你想使用navigator.mediaDevices对象,但不是所有的浏览器都支持这个。 你可以想象一个图书馆提供了一个垫片,你可以这样使用:

<script src="js/MediaShim.js"></script> <script> MediaShim.mediaDevices.getUserMedia(...); </script> 

在这种情况下,您正在明确调用一个填充而不是使用原始对象或方法。 另一方面,polyfill替代了原始对象上的对象和方法。

例如:

 <script src="js/adapter.js"></script> <script> navigator.mediaDevices.getUserMedia(...); </script> 

在你的代码中,看起来好像你正在使用标准的navigator.mediaDevices对象。 但实际上,polyfill(示例中的adapter.js)已经用它自己的replace了这个对象。

它已经取代了它是一个垫片。 这将检测function是否本机支持,如果是,则使用它,否则将使用其他API(如果不是)来使用它。

所以polyfill是一种“透明”的垫片。 这就是Remy Sharp(创造了这个术语)的意思,当说:“ 如果你删除了polyfill脚本,你的代码将继续工作,尽pipepolyfill被删除,不需要任何改变 ”。