Qué incorrecto es colocar la etiqueta del script después de la etiqueta de cierre del cuerpo ( </body>). ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Qué incorrecto es colocar la etiqueta del script después de la etiqueta de cierre del cuerpo ( </body>). ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Respuestas:
No se validará fuera de las etiquetas <body>o <head>. Tampoco hará mucha diferencia, a menos que esté haciendo manipulaciones DOM que podrían romper IE antes de que el elemento del cuerpo esté completamente cargado, para colocarlo justo antes del cierre </body>.
<html>
....
<body>
....
<script type="text/javascript" src="theJs.js"></script>
</body>
</html>
<script src="..." defer>, lo que funciona en todos los principales navegadores (aunque con un error potencialmente inminente en IE9 y versiones inferiores).
Si. Solo se permiten comentarios y la etiqueta final para el elemento html después de la etiqueta final para el cuerpo.
Los navegadores pueden realizar la recuperación de errores, pero nunca debe depender de eso.
Como Andy dijo que el documento no será válido, sin embargo, el guión seguirá siendo interpretado. Vea el fragmento de WebKit, por ejemplo:
void HTMLParser::processCloseTag(Token* t)
{
// Support for really broken html.
// we never close the body tag, since some stupid web pages close it before
// the actual end of the doc.
// let's rely on the end() call to close things.
if (t->tagName == htmlTag || t->tagName == bodyTag
|| t->tagName == commentAtom)
return;
...
IE ya no permite esto (desde la Versión 10, creo) e ignorará dichos scripts. FF y Chrome todavía los toleran, pero hay posibilidades de que algún día lo eliminen como no estándar.
Insertar procedimentalmente "script de elemento" después de que "cuerpo de elemento" sea "error de análisis" según el proceso recomendado por W3C . En "Construcción de árbol", cree un error y ejecute "tokenizar de nuevo" para procesar ese contenido. Entonces es como un paso adicional. Solo entonces se puede ejecutar "Ejecución de secuencia de comandos": consulte el proceso del esquema .
Cualquier otra cosa "error de análisis". Cambie el "modo de inserción" a "en el cuerpo" y reprocese el token.
Técnicamente por navegador es un proceso interno, cómo lo marcan y lo optimizan.
Espero haber ayudado a alguien.
Si. Pero si agrega el código fuera de él, lo más probable es que no sea el fin del mundo, ya que la mayoría de los navegadores lo arreglarán, pero sigue siendo una mala práctica.
Google realmente recomienda esto con respecto a la 'Optimización CSS'. Recomiendan en línea estilos críticos de plegado superior y diferir el resto (archivo css).
Ejemplo:
<html>
<head>
<style>
.blue{color:blue;}
</style>
</head>
<body>
<div class="blue">
Hello, world!
</div>
</body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>
Ver: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
bodyelemento. Ese artículo de Google no aconseja a nadie que haga tal cosa.
Los navegadores modernos tomarán etiquetas de script en el cuerpo de esta manera:
<body>
<script src="scripts/main.js"></script>
</body>
Básicamente, significa que el script se cargará una vez que la página haya terminado, lo que puede ser útil en ciertos casos (es decir, la manipulación DOM). Sin embargo, le recomiendo que tome el mismo script y lo coloque en la etiqueta de la cabeza con "aplazar", ya que dará el mismo efecto.
<head>
<script src="scripts/main.js" defer></script>
</head>
scriptetiquetas tuvieran un eventatributo que pudiera definirse para determinar cuándo analizar el script. Por lo tanto, debe event="load" event="DOMContentLoaded"ejecutar el script después de crear el DOM o event="beforeunload"en el beforeunloadevento de la ventana . Ejemplo, <script src="scripts/main.js" event="DOMContentLoaded"></script>.