Estoy usando el siguiente código para ejecutar algunas declaraciones después de cargar la página.
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
Pero este código no funciona correctamente. La función se llama incluso si se están cargando algunas imágenes o elementos. Lo que quiero es llamar a la función y la página se carga por completo.
javascript
html
image
Neeraj Kumar
fuente
fuente
$(window).load()
alert
función antes de que la ventana se vuelva a dibujar (haciendo que parezca que se llama antes de la carga)? El código se ve bien y obligar a los usuarios a descargar bibliotecas grandes probablemente no solucionará este problema ni hará que sea más fácil de diagnosticar.Respuestas:
Esto puede funcionar para usted :
o si tu comodidad con jquery,
$(document).ready()
se activa en DOMContentLoaded, pero este evento no se activa de forma coherente entre los navegadores. Esta es la razón por la que jQuery probablemente implementará algunas soluciones alternativas para admitir todos los navegadores. Y esto hará que sea muy difícil simular "exactamente" el comportamiento usando Javascript simple (pero no imposible, por supuesto).como sugirieron Jeffrey Sweeney y J Torres, creo que es mejor tener una
setTimeout
función, antes de activar la función como se muestra a continuación:fuente
ready
no hará lo que solicitó el OP.ready
se activa cuando se carga el DOM, no después de que se cargan los elementos.load
se disparará después de que los elementos terminen de cargarse / renderizarse.load
).setTimeout
es una mala idea. Se basa en que la página se cargue en menos de 3 segundos (o n segundos según el valor que elija). Si la carga demora más, no funcionará, y si la página se carga más rápido, tendrá que esperar sin motivo.JavaScript
lo mismo para jQuery:
NOTA: - No utilice el siguiente marcado (porque sobrescribe otras declaraciones del mismo tipo):
fuente
Si puede usar jQuery, mire load . Luego, puede configurar su función para que se ejecute después de que su elemento termine de cargarse.
Por ejemplo, considere una página con una imagen simple:
El controlador de eventos se puede vincular a la imagen:
Si necesita que se carguen todos los elementos de la ventana actual, puede usar
fuente
load
método jQuery simplemente vincula una función al evento de carga usando Javascript? ¿En qué se diferenciaría esto de lo que ya está haciendo el OP?addEventListener
lugar de vincular laonload
propiedad DOM0 .Estoy un poco confuso de que ¿qué quieres decir con carga de página completada, "Carga DOM" o "Carga de contenido" también? En una página html, la carga puede desencadenar un evento después de dos eventos de tipo.
Carga DOM: lo que garantiza que todo el árbol DOM se cargue de principio a fin. Pero no asegúrese de cargar el contenido de referencia. Suponga que agregó imágenes por las
img
etiquetas, por lo que este evento asegura que todasimg
las imágenes cargadas pero no las cargadas correctamente o no. Para obtener este evento debe escribir de la siguiente manera:O usando jQuery:
Después de DOM y carga de contenido: lo que indica el DOM y la carga de contenido también. Se asegurará no solo de
img
etiquetar, también asegurará que se carguen todas las imágenes u otro contenido relativo. Para obtener este evento debe escribir de la siguiente manera:O usando jQuery:
fuente
DOMContentLoaded
controlador de eventos @Hanif no parece hacer nada por mí, pero loload
hace.Si desea llamar a una función js en su página html, use el evento onload. El evento onload ocurre cuando el agente de usuario termina de cargar una ventana o todos los marcos dentro de un FRAMESET. Este atributo se puede utilizar con los elementos BODY y FRAMESET.
fuente
De esta manera puede manejar ambos casos, si la página ya está cargada o no:
fuente
Alternativamente, puede probar a continuación.
Esto funciona en todos los casos. Esto se activará solo cuando se cargue toda la página.
fuente
Lo mejor que puedo hacer es usar
La respuesta n. ° 1 de usar el
DOMContentLoaded
evento es un paso atrás, ya que el DOM se cargará antes de que se carguen todos los activos.Otras respuestas recomiendan lo
setTimeout
que me opondría firmemente, ya que es completamente subjetivo al rendimiento del dispositivo del cliente y la velocidad de conexión de la red. Si alguien está en una red lenta y / o tiene una CPU lenta, una página podría tardar de varios a decenas de segundos en cargarse, por lo que no podría predecir cuánto tiemposetTimeout
necesitará.En cuanto a
readystatechange
, se dispara cada vezreadyState
que cambian, lo que según MDN todavía será antes delload
evento.fuente
fuente
Si no está utilizando ningún marco JS, este proyecto es la mejor manera de obtener el estado listo para dom, con compatibilidad entre navegadores
https://github.com/ded/domready/blob/master/ready.js
fuente
Si ya está usando jQuery, puede probar esto:
fuente
Puedo decirles que la mejor respuesta que encontré es poner un script de "controlador" justo después del
</body>
comando. Es la más fácil y, probablemente, más universal que algunas de las soluciones anteriores.El plan: en mi página hay una mesa. Escribo la página con la tabla en el navegador y luego la ordeno con JS. El usuario puede recurrir a él haciendo clic en los encabezados de las columnas.
Después de que la tabla finaliza un
</tbody>
comando y el cuerpo finaliza, utilizo la siguiente línea para invocar el JS de clasificación para ordenar la tabla por columna 3. Obtuve el script de clasificación de la web para que no se reproduzca aquí. Durante al menos el próximo año, puede ver esto en funcionamiento, incluido el JS, enstatic29.ILikeTheInternet.com
. Haga clic en "aquí" en la parte inferior de la página. Aparecerá otra página con la tabla y los scripts. Puede ver que coloca los datos y luego los clasifica rápidamente. Necesito acelerarlo un poco, pero lo básico ya está ahí.MakerMikey
fuente
Prueba este jQuery :
fuente
ready
no hará lo que solicitó el OP.ready
se activa cuando se carga el DOM, no después de que se cargan los elementos.load
se disparará después de que los elementos terminen de cargarse / renderizarse.llamar a una función después de completar la carga de la página, establecer el tiempo de espera
fuente
Tiendo a usar el siguiente patrón para verificar que el documento se complete la carga. La función devuelve una Promesa (si necesita admitir IE, incluya el polyfill ) que se resuelve una vez que el documento completa la carga. Se usa
setInterval
debajo porque una implementación similar consetTimeout
podría resultar en una pila muy profunda.Por supuesto, si no tiene que admitir IE:
Con esa función, puede hacer lo siguiente:
fuente
Estoy usando componentes web, por lo que me funciona:
fuente
Coloque su script después de completar la etiqueta del cuerpo ... funciona ...
fuente