基本概念:
Polyfill是一种JavaScript库,主要是抚平不同浏览器之间对js实现的差异。它提供了原生的替代实现,使得现代Web特性在老旧浏览器中得以正常工作。
Polyfill的主要目的是解决浏览器兼容性问题,确保代码在多种浏览器中正常运行。
什么是Polyfill?--官方
polyfill ( polyfiller ),指的是一个代码块。这个代码块向开发者提供了一种技术, 这种技术可以让浏览器提供原生支持,抹平不同浏览器对API兼容性的差异。
比如说 polyfill 可以让 IE7 使用 Silverlight 插件来模拟 HTML Canvas 元素的功能,或模拟 CSS 实现 rem 单位的支持,或 text-shadow,或其他任何你想要的功能。 (Remy Sharp,Polyfill概念发明者)
Polyfill源于什么?
这个词是在2009年,我编写《介绍HTML5》一书时创造的。当时我坐在一家咖啡馆里(和你一样),突然间想到,我需要一个能够很好地概括 "使用JavaScript或Flash或其他的一些手段来支持一些浏览器不原生支持的API" 这种行为的词汇。
Shim(垫片)于我而言,意味着一个可以帮助你修复一些功能的代码块,但是这种技术通常会拥有自己的API。我想要的是一种可以随时使用,而且对代码中的其他部分影响不大甚至没有影响的一种技术。记得老版本的shim.gif吗?它需要你真正地插入一张图片来修复空的td单元格,我想要的是一种能够自动帮我做这些事情的技术。
我明白我所追求的是不是渐进式增强,因为我正在努力做的baseline需要使用JavaScript和最新技术。所以现有的术语无法满足我的要求。