uncaught - ¿Tiene coffeescript un evento onLoad like para el navegador?
uncaught syntaxerror: unexpected token<react (1)
¿Hay alguna manera de ejecutar código en el navegador después de que coffeescript compiló y ejecutó todos los archivos de script en el encabezado? Algo como:
coffee.onCompiled () -> console.log "He terminado de cargar todos los archivos de café"
¿De qué otra manera puedo obtener este comportamiento? (por favor no sugiera setTimeout)
Al principio pensé que estabas preguntando cómo adjuntar una devolución de llamada a window.onload
desde CoffeeScript (que es, por supuesto, muy sencillo, ya que "Es solo JavaScript"), pero ahora me doy cuenta de que estás preguntando cómo te aseguras de que el código se ejecuta después de todo
<script type="text/coffeescript" src="..."></script>
las etiquetas se han ejecutado al usar coffee-script.js
.
Una solución es poner una devolución de llamada en el último CoffeeScript que cargue. Desde 1.1.0, coffee-script.js
ha asegurado de que todas las etiquetas de script
CoffeeScript se ejecuten en orden (aunque tenga en cuenta que solo se ejecutarán después de que se hayan ejecutado todas las etiquetas de script
JavaScript). Entonces, por ejemplo, si pones
<script type="text/coffeescript">
onReady()
</script>
después de todas sus otras etiquetas de script
, y defina window.onReady
en otro lugar, entonces se llamará a esa función después de que se hayan cargado todas las secuencias de comandos. Si lo hiciste
$ -> onReady()
(con jQuery), entonces se aseguraría de que el DOM esté listo, así como todos los scripts.
Actualización: Publiqué que esta es "una solución" porque no estaba 100% seguro de si hay una devolución de llamada que invoque coffee-script.js
después de que se hayan ejecutado todos los scripts. Pero después de verificar la fuente , puedo decir con confianza que no, por lo que la única solución es poner el código en la última etiqueta <script type="text/coffeescript">
. (Ya sea en línea o en un archivo .coffee
no importa).