javascript - react - Meteor.js: la etiqueta<script> no funciona dentro de<body>
meteor react (5)
Deberia de funcionar.
Acabo de pegar esto dentro de uno de mis proyectos y funcionó.
Tu {{> principal}} es extraño para mí, duro. También asegúrese de que <body>
esté dentro de la etiqueta <html>
.
Una etiqueta de script simple dentro de la etiqueta de cuerpo no parece funcionar. La alerta no se activa en el siguiente código:
<body>
<script type="text/javascript">
alert(''Hello'');
</script>
{{>main}}
</body>
¿Alguna idea de por qué?
Editar: Acabo de probarlo con una nueva aplicación de meteoritos, sin etiqueta de alerta todavía:
<head>
<title>test</title>
</head>
<body>
<script type="text/javascript">
alert(''Hello'');
</script>
{{> hello}}
</body>
<template name="hello">
<h1>Hello World!</h1>
{{greeting}}
<input type="button" value="Click" />
</template>
Lo extraño es que cuando copio pego la fuente del html, hago una nueva página html y la alerta funciona.
Edit3: Implementé esta aplicación aquí: http://alert-in-body-test.meteor.com/ ¿Obtiene un cuadro de alerta?
Meteor está construyendo todo el DOM de Javascript haciendo que tu página sea una plantilla: la ''fuente'' de tu página, tal como la ve el navegador, es básicamente:
<script type="text/javascript" src="/5a8a37bef5095c69bcd3844caf3532e1ba6d49bf.js"></script>
No puedo encontrar una página definitiva que indique que insertar una etiqueta de script en una plantilla como esta no hará que se ejecute, pero definitivamente se siente en contra del espíritu de lo que el marco está tratando de lograr.
Si el objetivo es lograr una separación clara entre su marcado y la lógica, entonces, ¿por qué ponerlo en la plantilla? Una mejor solución sería usar la llamada meteor.startup
En lugar de buscar el html representado en las herramientas del desarrollador, intente buscar el html real descargado. Encontrará una etiqueta (probablemente) vacía, con toneladas de etiquetas de script dentro de.
En otras palabras, el cuerpo de su aplicación de meteorito no es el cuerpo del html final, es solo su plantilla principal.
En cambio, esta tonelada de scripts enviados por Meteor cargará sus plantillas. Por lo tanto, su código no se ejecutará, porque ha sido colocado allí. Es como cuando manipulas DOM (con jQuery, por ejemplo), colocando una etiqueta de script en DOM, después de que se carga. Esta etiqueta de script no se ejecutará.
Funciona para mí
en la entrega llama a esto jquery
$ .getScript (''tu url'')
Esta pregunta todavía es relevante en la versión actual de Meteor (versión 0.5.4) por lo que quería describir cómo incluir un script al final del cuerpo.
Para ejecutar javascript al final del cuerpo, registre un ayudante de Handlebars y coloque el código relevante allí, así:
En client.html:
<body>
{{renderPage}}
{{afterBody}}
</body>
...
En client.js:
if (typeof Handlebars !== ''undefined'') {
Handlebars.registerHelper(''afterBody'', function(name, options) {
$(''body'').append(''AFTER BODY'');
});
}
(Para obtener una descripción detallada de por qué es necesario, consulte la respuesta de Rahul a una pregunta similar aquí: https://.com/a/14002991/219238 )