Pregunta ¿

Hace un tiempo que tengo esta pregunta que me preocupa un poco de lo curioso y pensé pedirle a su experiencia colectiva una respuesta a esta pregunta.

Para profundizar en el título, di que tengo esto:

alerta ("Some JS outside");

Afuera de <head></head> etiquetas de mi archivo HTML. Mi pregunta es si está bien hacer esto o no, y cuánto se usa así.

Mis instintos me dicen que está bien, creo que los navegadores examinan todo el HTML para <script> etiquetas e interpretarlo cuando lo ven, por lo que debería estar bien, pero no soy tan bueno con el funcionamiento de los navegadores.

Estoy buscando una respuesta definitiva (o lo más cercana posible a la definitiva) aquí - ¿está bien hacerlo, o no?

EDITAR: Para ahorrarme publicar esto un montón de veces, lo diré una vez aquí. Muchas gracias por toda su gente de entrada. Votos a todos ustedes! Tendré que volver a entrenarme para poner a JS en la parte inferior de las páginas; ahora que lo pienso, es obvio que las secuencias de comandos en el fondo de la página es mucho mejor que la parte superior. Gracias por su ayuda a todos.


32
2017-11-30 16:26


origen


Respuestas:


El mejor lugar para las etiquetas de secuencia de comandos es antes de su etiqueta de cuerpo de cierre.

<html>
      <head>
      <title>Example</title>
      </head>
      <body>
            Your Content
      <script type="text/javascript" src="yourScriptHere.js"></script>
      <script type="text/javascript">//Inline scripts etc.</script>
      </body>
</html>

Dicho esto, pueden ser otros lugares sin ningún problema; sin embargo, la razón por la que los deseas es que quieras asegurarte de que la página se cargó antes de la ejecución y tampoco quieres detener el progreso de descarga del cliente, lo que los hace esperar en secuencias de comandos grandes.


22
2017-11-30 16:29



Sí, <script> bloques fuera de la <head> estan bien.

De hecho, muchos animan a colocarlos al final de la <body>. Poniéndolos justo antes </body>, difiere la búsqueda / carga hasta después del contenido de la página ... para acelerar el renderizado.

De la especificación W3C HTML4:

El elemento SCRIPT coloca una secuencia de comandos dentro de un documento. Este elemento puede aparecer varias veces en HEAD o BODY de un documento HTML.


12
2017-11-30 16:28



Sí. Está bien. De hecho, muy a menudo es necesario. En muchos casos, es posible que tenga un javascript de carga larga (léase: gran descarga) que no sea crítico para la página, por lo que desea que el resto del contenido de la página se cargue primero, por lo que debe colocar el <script> para ese javascript en la parte inferior de la <body> sección.


11
2017-11-30 16:27



Una secuencia de comandos en el cuerpo de su documento se ejecutará cuando se encuentre. Si se trata de una función, entonces "ejecutarla" simplemente significa definir la función, es decir, agregarla a la lista de funciones conocidas. Pero si no es una función, si es un bloque de declaraciones independientes, se ejecutarán donde se encuentren.

Por ejemplo, si escribiste:

<html><head>... whatever ...</head>
<p>Foo
<script>
document.write("bar")
</script>
<p>Plugh
</html>

El navegador mostrará:

Foobar
Plugh

Esto puede o no ser lo que quieres.


2
2017-11-30 17:21