Estoy ejecutando un script externo, usando un <script>
interior<head>
.
Ahora, dado que el script se ejecuta antes de que se cargue la página, no puedo acceder a <body>
, entre otras cosas. Me gustaría ejecutar JavaScript después de que el documento se haya "cargado" (HTML completamente descargado y en RAM). ¿Hay algún evento al que pueda conectarme cuando se ejecute mi script, que se activará al cargar la página?
javascript
html
dom-events
pageload
El flash
fuente
fuente
document.onload=
no es molesto en.wikipedia.org/wiki/Unobtrusive_JavaScriptForma razonablemente portátil y no marco de hacer que su script establezca una función para ejecutarse en el momento de la carga:
fuente
Tenga en cuenta que cargar la página tiene más de una etapa. Por cierto, esto es JavaScript puro
"DOMContentLoaded"
Este evento se activa cuando el documento HTML inicial se ha cargado y analizado por completo , sin esperar a que las hojas de estilo, las imágenes y los subtramas terminen de cargarse. En esta etapa, podría optimizar mediante programación la carga de imágenes y css según el dispositivo del usuario o la velocidad del ancho de banda.
Se ejecuta después de cargar DOM (antes de img y css):
"carga"
Un evento muy diferente, cargar , solo debe usarse para detectar una página completamente cargada . Es un error increíblemente popular usar load donde DOMContentLoaded sería mucho más apropiado, así que tenga cuidado.
Ejecuta después de que todo se carga y analiza:
Recursos de MDN:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
Lista MDN de todos los eventos:
https://developer.mozilla.org/en-US/docs/Web/Events
fuente
window.onload = ...
pensar que mi script esperaría hasta que todo se descargara completamente antes de ejecutarse, pero parece quewindow.onload
realmente se comporta asídocument.addEventListener("DOMContentLoaded", ...
, mientras quewindow.addEventListener("load", ...
realmente espera que todo se descargue completamente. Hubiera pensado quewindow.onload
debería ser equivalente awindow.addEventListener("load", ...
más quedocument.addEventListener("DOMContentLoaded", ...
?? Obtuve el mismo resultado en Chrome y FF.Puedes poner un atributo "onload" dentro del cuerpo
O si está utilizando jQuery, puede hacer
Espero que responda tu pregunta.
Tenga en cuenta que $ (window) .load se ejecutará después de que el documento se muestre en su página.
fuente
Si los scripts se cargan dentro
<head>
del documento, entonces es posible usar eldefer
atributo en la etiqueta del script.Ejemplo:
Desde https://developer.mozilla.org :
fuente
Aquí hay un script basado en la carga diferida de js después de cargar la página,
¿Dónde coloco esto?
¿Qué hace?
Aquí hay un ejemplo del código anterior: aplazar la representación de JS
Escribí esto basado en la carga rechazada del concepto de google de velocidad de página de JavaScript y también provengo de este artículo Aplazar la carga de JavaScript
fuente
Mira enganchar
document.onload
o en jQuery$(document).load(...)
.fuente
Fiddle de trabajo en
<body onload="myFunction()">
fuente
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
fuente
Si está utilizando jQuery,
$(function() {...});
es equivalente a
$(document).ready(function () { })
u otra mano corta:
$().ready(function () { })
Consulte ¿ En qué evento se activa JQuery $ function ()? y https://api.jquery.com/ready/
fuente
mira aquí: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
fuente
A veces, en páginas más complejas, encuentro que no todos los elementos se han cargado por la ventana de tiempo. Si ese es el caso, agregue setTimeout antes de que su función demore un momento. No es elegante, pero es un truco simple que funciona bien.
se convierte en ...
fuente
Simplemente defina
<body onload="aFunction()">
que se llamará después de que se haya cargado la página. Su código en el script está encerrado poraFunction() { }
.fuente
Este código funciona bien.
Pero el
window.onload
método tiene varias dependencias. Por lo tanto, puede que no funcione todo el tiempo.fuente
Usando la biblioteca YUI (me encanta):
Portátil y hermoso! Sin embargo, si no usa YUI para otras cosas (vea su documento), diría que no vale la pena usarlo.
NB: para usar este código necesita importar 2 scripts
fuente
Existe una muy buena documentación sobre cómo detectar si el documento se ha cargado. usando Javascript o Jquery.
Usando el Javascript nativo esto se puede lograr
Esto también se puede hacer dentro del intervalo
Por ejemplo, por Mozilla
Usando Jquery Para verificar solo si DOM está listo
Para verificar si todos los recursos están cargados, use window.load
fuente
Use este código con la biblioteca jQuery, esto funcionaría perfectamente bien.
fuente
.ready () funciona mejor para mí.
.load () funcionará, pero no esperará hasta que se cargue la página.
No funciona para mí, rompe el siguiente script en línea. También estoy usando jQuery 3.2.1 junto con algunos otros tenedores jQuery.
Para ocultar la superposición de carga de mis sitios web, utilizo lo siguiente:
fuente
JavaScript
lo mismo para jQuery:
NOTA: - No utilice el marcado a continuación (porque sobrescribe otras declaraciones del mismo tipo):
fuente
Como dice Daniel, podría usar document.onload.
Sin embargo, los diversos marcos javascript (jQuery, Mootools, etc.) usan un evento personalizado 'domready', que creo que debe ser más efectivo. Si está desarrollando con javascript, le recomiendo explotar un marco, aumentan enormemente su productividad.
fuente
fuente
Mi consejo es usar el
asnyc
atributo para la etiqueta de script que le ayuda a cargar los scripts externos después de cargar la páginafuente
defer
, como mencionó @Daniel Price?utilizar la función de autocarga de carga
fuente
onload
controladores utilizando este enfoque. En cambio, debe agregar oyente.