supported - thread sleep javascript
Cómo proporcionar ECMAScript 5(ES 5)-shim? (3)
La quinta edición de ECMAScript (lanzada en diciembre de 2009) presenta una serie de métodos nuevos (vea esta tabla para más detalles). Sin embargo, todavía hay navegadores más antiguos que no implementan esos nuevos métodos.
Afortunadamente, existe una secuencia de comandos conveniente (escrita en JavaScript) - ES5-shim - que implementa esos métodos manualmente en entornos donde no existen.
Sin embargo, no estoy seguro de cómo proporcionar ES5-shim ... ¿Debería simplemente "darle" a todos los navegadores, así:
<script src="es5-shim.js"></scipt>
O debería incluir un cheque para solo "molestar" a los navegadores que realmente lo necesitan, así:
<script>
if ( !Function.prototype.hasOwnProperty( ''bind'' ) ) {
(function () {
var shim = document.createElement( ''script'' );
shim.src = ''es5-shim.js'';
var script = document.getElementsByTagName( ''script'' )[0];
script.parentNode.insertBefore( shim, script );
}());
}
</script>
(Estoy usando Function.prototype.bind
para verificar si un navegador implementa todos los nuevos métodos de ECMAScript 5. De acuerdo con la tabla de compatibilidad que he vinculado anteriormente, bind
es el "último bastión" cuando se trata de implementar los métodos de ECMAScript 5).
Por supuesto, para que esta corrección sea efectiva, debe ejecutarse antes que todas las demás secuencias de comandos, lo que significa que queremos incluir los elementos SCRIPT mencionados anteriormente en las primeras páginas de la página (en HEAD, antes que todos los demás elementos SCRIPT).
Entonces, ¿sería este segundo ejemplo una buena forma de proporcionar ECMAScript 5-shim a los navegadores? Hay una mejor manera de hacerlo?
ES5-Shim solo calzará partes que los navegadores no implementan, así que simplemente délas a todos los navegadores. Se encargará de la detección de lo que debe ser recortado y lo que no.
Pero preste atención a las advertencias enumeradas sobre qué calzas no funcionan correctamente en algunos casos. He tenido problemas con eso en el pasado y causa un montón de dolor hasta que te das cuenta de que la respuesta fue muy simple ...
En la actualidad, la solución que mejor funciona con ES5-Shim es utilizar la biblioteca en todos los entornos y permitirle detectar qué características necesita parchear en tiempo de ejecución. Sería incluso mejor entregarlo desde un CDN de la comunidad para maximizar los éxitos de caché entre sitios.
Una vez dicho esto, existe una gran oportunidad para crear sistemas que combinen la detección de características, la toma de huellas dactilares del agente y la agrupación dinámica para generar y entregar automáticamente subconjuntos de calzas dirigidas. El alcance del problema se extiende más allá de ES5-Shim y podría aplicarse a todo tipo de calzas.
Esto parece funcionar para mí:
<!--[if lt IE 9]><script src="java/es5-shim.min.js"></script><![endif]-->