2011-08-17 23 views
276

¿Cuál es el significado de los polyfills en HTML5? Vi esta palabra en muchos sitios sobre HTML5, p. Ej. HTML5-Cross-Browser-Polyfills.¿Cuál es el significado de los polyfills en HTML5?

Así que aquí estamos recogiendo todas las cuñas, retrocesos, y polyfills con el fin de implantar la funcionalidad de HTML5 en los navegadores que no soportan de forma nativa no ellos.

De hecho, no entiendo cuál es el significado de los polyfills.

¿Es una nueva técnica de HTML5 o una biblioteca de JavaScript? Nunca escuché esta palabra antes de HTML5.

¿Y cuál es la diferencia entre cuñas, retrocesos y polyfills?

+1

Puede verificar para una mejor comprensión http://blogs.msdn.com/b/jennifer/archive/2011/08/04/html5-part-4-using-html5-while-retaining-support-for-older -browsers.aspx –

+0

@ user3400622 Gracias por el enlace, la explicación en el enlace es muy clara. –

Respuesta

278

Un polyfill es un reemplazo de navegador, hecho en JavaScript, que permite que la funcionalidad que espera trabajar en navegadores modernos funcione en navegadores más antiguos, por ejemplo, para admitir canvas (una función HTML5) en navegadores más antiguos.

Es una especie de técnica HTML5, ya que se usa junto con HTML5, pero no forma parte de HTML5, y puede tener polyfills sin tener HTML5 (por ejemplo, para admitir las técnicas CSS3 que desee).

Aquí es un buen mensaje:

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

He aquí una lista completa de polyfills y cuñas:

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

+4

Así que es mean ie7.js también es un polyfill –

+1

Sí: "Muchas correcciones, incluida la transparencia PNG, estilos/selectores de CSS, correcciones de errores de representación, etc." Está agregando esta funcionalidad a través de javascript que el navegador no admite. –

+1

Creo que surgió la palabra Polyfills después de HTML5. ¿Es Shim diferente de Polyfills? –

43

En primer lugar vamos a aclarar lo que un polyfil no es: Un polyfill no es parte del estándar HTML5. Tampoco está un polyfill limitado a Javascript, aunque a menudo se ve a los polyfills referidos en esos contextos.

El término polyfill se refiere a un código que "le permite tener algunas funcionalidades específicas que espera que los navegadores actuales o modernos también funcionen en otros navegadores que no tienen soporte para esa funcionalidad incorporada".

Fuente y el ejemplo de polyfill aquí:

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

11

un polyfill es una pieza de código (o plug-in) que proporciona la tecnología que usted, el desarrollador, espera que el navegador para proporcionar de forma nativa.

+0

Bien explicado. –

11

Un polyfill es un calce que reemplaza la llamada original con la llamada a un calce.

Por ejemplo, supongamos que desea utilizar el objeto navigator.mediaDevices, pero no todos los navegadores lo admiten. Se podría imaginar una biblioteca que proporciona una cuña que se puede utilizar de esta manera:

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

En este caso, a la que llama explícitamente una cuña en lugar de utilizar el objeto o método original. El polyfill, por otro lado, reemplaza los objetos y métodos en los objetos originales.

Por ejemplo:

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

En su código, parece como si usted está Utilizando el objeto navigator.mediaDevices estándar. Pero realmente, el polyfill (adapter.js en el ejemplo) ha reemplazado este objeto con el suyo propio.

El que lo ha reemplazado es una cuña. Esto detectará si la característica es compatible de forma nativa y la usará si es así, o funcionará con otras API si no lo es.

Por lo tanto, un polyfill es una especie de cuña "transparente". Y esto es lo que Remy Sharp (quien acuñó el término) quiso decir "si eliminó el script de polyfill, su código continuará funcionando, sin ningún cambio requerido a pesar de que se eliminó el polyfill".

+2

¿Qué es un calce? –

+0

@Oliver Watkins Si está familiarizado con el patrón del adaptador, entonces sabe lo que es una cuña. Shims intercepta las llamadas API y crea una capa abstracta entre el que llama y el objetivo. Por lo general, los suplementos se utilizan para compatibilidad con versiones anteriores –