En condiciones normales, los scripts insertados en la parte del HTML se invocan inmediatamente después de cargarlos. A veces, las secuencias de comandos comienzan a ejecutar instrucciones relacionadas con DOM incluso antes de que el navegador termine de analizar el HTML y configure la estructura DOM para que no puedan funcionar correctamente. Para evitar que esto suceda, tiene cuatro opciones.
- atributo
async
: puede agregar el atributoasync
a su etiqueta de script comoconsecuencia, el script externo se carga de forma asíncrona junto con el DOM. Ni la carga del script bloquea el análisis HTML ni tiene el efecto de una invocación prematura del script. Supongo que esto es lo mejor de ambos mundos.
- atributo de
defer
: puede agregar el atributo dea su etiqueta de secuencia de comandos como
consecuencia, la secuencia de comandos externa se carga solo después de analizar el HTML a pesar de estar incluido en la parte superior, en la sección
.
- Reubicar la etiqueta del script: este es el truco más antiguo para evitar esta situación. En este caso, incluye la etiqueta de secuencia de comandos en la parte inferior de su HTML, preferiblemente justo antes de
y se carga e invoca después de analizar el HTML.
- En caso de que el archivo de script sea local y no desee usar las opciones dadas anteriormente, otro enfoque sería envolver su script en una función y asignarlo como un controlador al detector de eventos
window.onload
como se muestra a continuación. Es como una cuña paradefer
atributo, supongo.
// su archivo script.js tiene este aspecto
window.onload = function () {
var el = document.getElementById (“type1”);
console.log (el);
};
- Si uso WordPress y lo agrego a mi sitio web, ¿Google lo indexará y le dará "crédito" a mi sitio por palabras clave y contenido nuevo?
- Cómo alojar sitios web JSP en GoDaddy
- Cómo crear una tabla con un marco de JavaScript
- Estoy pensando en comenzar a trabajar en el desarrollo de backend. ¿Qué idioma debo elegir con la base de datos?
- Quiero construir un sitio web de red social. ¿Debo usar Ruby (en Rails) o Python (Django)?