2012-07-05 15 views
5

Después de leer esto post (lectura recomendada) sobre no usar HTML5Shiv directo de la fuente como (casi) todos lo hacen, estoy tratando de incluir el html5shiv.js en mi aplicación usando Rails 3.2 Asset Pipeline.Rails 3.2 Asset Pipeline + html5shiv.JS en vendors/assets/javascript

He descargado tanto la versión minimizada como la no minificada del javascript. La convención le dice que agregue archivos de terceros en la carpeta proveedores/activos. Tengo dos preguntas ahora:

1) ¿Qué versión (miniaturizada o no miniaturizada) debo agregar a la carpeta proveedores/activos/javascrip?

2) Dado que es una referencia condicional <!--[if lt IE 9]>, ¿cómo debo llamar al script?

No quiero agregarlo al manifiesto de application.js, porque quiero mantenerlo como un archivo separado y quiero usar la condición. ¡Estoy perdido!

Cualquier ayuda sería muy apreciada.

Gracias

Respuesta

8

Puede utilizar la versión unminified de la JS si se quiere, Rails comprimirlo en el modo de producción a través de la tubería.

Para mantener el shiv como un archivo separado, puede darle su propio manifiesto creando un html5.js (o lo que sea) en su directorio /vendor/assets/javascripts/. En ese archivo, se requiere html5shiv (supongo que el manifiesto y el script están en el mismo directorio).

//= require html5shiv 

o

//= require html5shiv.min 

y después incluir el manifiesto en su diseño en el bloque condicional. En HAML algo como:

== "<!--[if lt IE 9]>" 
= javascript_include_tag 'html5' 
== "<![endif]-->" 

Recuerde reiniciar su servidor de aplicaciones antes de realizar las pruebas.

+0

He intentado lo que ha dicho, y el HTML generado es la siguiente: - Ambos archivos tienen el mismo contenido y si traté de acceder a usar el cuerpo = 1 el espectáculo está vacío. Si elimino? Body = 1, se muestran bien. Pero cuando intento rakear activos: precompilación, el html5shiv.js no está compilado y cuando ejecuto el servidor en modo de producción, aparece un error. ¿Qué me estoy perdiendo? –

+0

Supongo que mis activos no fueron servidos. Ahora todo parece funcionar. Muchas gracias. –

+1

Recuerde agregar manifiestos personalizados a su lista de precompilación en 'config/environments/production.rb' Tiene instrucciones, pero un ejemplo:' config.assets.precompile + =% w [html5.js] ' –

1

O puede utilizar directamente

/[if lt IE 9] 
    %script{ src: "http://html5shim.googlecode.com/svn/trunk/html5.js", type: "text/javascript" } 
Cuestiones relacionadas