HTML5中的polyfill是什么意思?我在许多有关HTML5的网站中都看到了这个词,例如HTML5-Cross-Browser-Polyfills。
因此,这里我们收集了所有的填充,后备和填充,以便将HTML5功能植入到本机不支持它们的浏览器中。
我实际上不了解polyfill的含义。
是新的HTML5技术还是JavaScript库?在HTML5之前我从未听说过这个词。
垫片,后备和填料之间有什么区别?
HTML5中的polyfill是什么意思?我在许多有关HTML5的网站中都看到了这个词,例如HTML5-Cross-Browser-Polyfills。
因此,这里我们收集了所有的填充,后备和填充,以便将HTML5功能植入到本机不支持它们的浏览器中。
我实际上不了解polyfill的含义。
是新的HTML5技术还是JavaScript库?在HTML5之前我从未听说过这个词。
垫片,后备和填料之间有什么区别?
Answers:
polyfill是用JavaScript制作的浏览器后备,它允许您希望在现代浏览器中使用的功能可以在较旧的浏览器中使用,例如,在较旧的浏览器中支持画布(HTML5功能)。
这是一种HTML5技术,因为它与HTML5结合使用,但它不是HTML5的一部分,您可以在没有HTML5的情况下使用polyfill(例如,支持所需的CSS3技术)。
这是个好帖子:
http://remysharp.com/2010/10/08/what-is-a-polyfill/
这是Polyfills和Shims的完整列表:
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
首先,让我们澄清一下polyfil不是什么:polyfill不是HTML5标准的一部分。即使您经常看到在这些上下文中引用了polyfill,polyfill也不仅限于Javascript。
术语polyfill本身是指一些代码,这些代码“允许您具有某些期望的功能,这些功能在当前或“现代”浏览器中也可以在不支持该功能的其他浏览器中使用。”
这里的polyfill的来源和示例:
http://www.programmerinterview.com/index.php/html5/html5-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)已经用自己的对象替换了该对象。
用它代替的是垫片。这将检测该功能是否受本机支持,如果支持,则使用它;如果不支持,则将使用其他API解决该功能。
因此,polyfill是一种“透明”垫片。这就是雷米·夏普(Remy Sharp,他是该术语的创造者)所说的意思:“ 如果删除了polyfill脚本,即使删除了polyfill,代码也将继续运行,而无需进行任何更改 ”。