2011-08-17 66 views
276

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

所以在这里我们收集所有的垫片,回退,并polyfills 为了在不 原本支持的浏览器植入HTML5功能。

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

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

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

+1

您可以检查以获得更好的理解http://blogs.msdn.com/b/jennifer/archive/2011/08/04/html5-part-4-using-html5-while-retaining-support-for-older -browsers.aspx – 2014-03-10 06:54:11

+0

@ user3400622感谢您的链接,链接中的解释非常清晰。 –

回答

278

一个填充工具是一个浏览器后退,在JavaScript中提出,允许你希望在现代浏览器工作在旧的浏览器,例如,合作,以支持画布(HTML5的功能),在旧的浏览器功能。因为它与HTML5一起使用,但它不是HTML5的一部分,并且您可以在没有HTML5的情况下使用polyfills(例如,以支持所需的CSS3技术)。这是一种HTML5技术。

这里有一个很好的职位:

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

这里的Polyfills和垫片的完整列表:

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

+4

所以这意味着ie7.js也是一个polyfill –

+1

是的:“许多修复包括PNG透明度,CSS样式/选择器,渲染错误修复等。”它通过浏览器不支持的javascript添加了这个功能。 –

+1

我认为在HTML5之后出现了Polyfills这个词。 Shim与Polyfills不同吗? –

43

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

术语polyfill本身是指“允许您在当前或”现代“浏览器中具有某些特定功能的代码,以便在其他不支持该功能的浏览器中也可以使用。”填充工具的

源和例如这里:

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

11

甲填充工具是一段代码(或插件),提供了技术,你,显影剂,期望浏览器本地地提供。

+0

很好解释。 –

11

一个填充是一个垫片,其中替换原来的电话与垫片的电话。

例如,假设您想使用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”。

+2

什么是垫片? –

+0

@Oliver Watkins如果您熟悉适配器模式,那么您知道垫片是什么。 Shims拦截API调用并在调用者和目标之间创建一个抽象层。典型的垫片用于向后兼容 –