HTML5中的腻子是什么意思?我在很多关于HTML5的网站上看到过这个词,比如HTML5- cross - browser - polyfills。

所以我们在这里收集所有的垫片,备用材料和填充物 以便在浏览器中植入HTML5功能 原生支持他们。

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

它是一种新的HTML5技术还是JavaScript库?在HTML5之前我从未听说过这个词。

垫片、备用材料和填充材料之间的区别是什么?


polyfill是一种浏览器的后退,由JavaScript制成,它允许你期望在现代浏览器中工作的功能在旧浏览器中工作,例如,在旧浏览器中支持canvas (HTML5特性)。

这是一种HTML5技术,因为它与HTML5一起使用,但它不是HTML5的一部分,你可以在没有HTML5的情况下使用腻子(例如,支持你想要的CSS3技术)。

这里有一个很好的帖子:

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

这里是一个全面的填料和垫片列表:

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

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

术语polyfill本身指的是一些“允许您在当前或“现代”浏览器中拥有某些特定功能的代码,这些功能也可以在其他不支持内置该功能的浏览器中运行”。

polyfill的来源和示例如下:

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

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

填充物是一种垫片,它用对垫片的调用代替原来的调用。

例如,假设您想使用导航器。mediaDevices对象,但并非所有浏览器都支持。你可以想象一个图书馆提供了一个垫片,你可以这样使用:

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

在这种情况下,您显式地调用了一个shim,而不是使用原始对象或方法。另一方面,polyfill替换原始对象上的对象和方法。

例如:

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

在您的代码中,看起来好像您正在使用标准导航器。mediaDevices对象。但实际上,polyfill(本例中的adapter.js)已经用自己的对象替换了这个对象。

取而代之的是垫片。这将检测该特性是否本机支持并使用它,如果不支持则使用其他api。

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

除了其他答案之外,这里有一些高层次的想法和信息可能会有所帮助。

polyfill就像特定浏览器的兼容性补丁。 Shims是对特定参数的更改。 如果@mediaquery与浏览器不兼容,可以使用回退。

这取决于你的应用/网站需要兼容什么。

您可以在这个网站上查看特定库与特定浏览器的兼容性。 https://caniuse.com/

web开发中的polyfill是指在不支持该功能的web浏览器上实现该功能的代码。它通常指的是在现有浏览器上实现HTML5或CSS web标准的JavaScript库,要么是已建立的标准(一些较老的浏览器支持),要么是拟议的标准(任何浏览器都不支持)。根据定义,“polyfill是浏览器API的垫片”。

HTML5标准不包括一个填充。polyfill并不局限于Javascript,尽管事实上它们经常在Javascript上下文中被提及。