J'utilise le code suivant pour exécuter certaines instructions après le chargement de la page.
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
Mais ce code ne fonctionne pas correctement. La fonction est appelée même si certaines images ou éléments sont en cours de chargement. Ce que je veux, c'est appeler la fonction lorsque la page est complètement chargée.
javascript
html
image
Neeraj Kumar
la source
la source
$(window).load()
alert
fonction avant que la fenêtre ne soit redessinée (ce qui donne l'impression qu'elle est appelée avant le chargement)? Le code semble correct et obliger les utilisateurs à télécharger de grandes bibliothèques ne résoudra probablement pas ce problème ou ne facilitera pas le diagnostic.Réponses:
cela peut fonctionner pour vous:
ou si votre confort avec jquery,
$(document).ready()
se déclenche sur DOMContentLoaded, mais cet événement n'est pas déclenché de manière cohérente entre les navigateurs. C'est pourquoi jQuery implémentera très probablement des solutions de contournement lourdes pour prendre en charge tous les navigateurs. Et cela rendra très difficile de simuler "exactement" le comportement en utilisant du Javascript brut (mais pas impossible bien sûr).comme Jeffrey Sweeney et J Torres l'ont suggéré, je pense qu'il vaut mieux avoir une
setTimeout
fonction, avant de déclencher la fonction comme ci-dessous:la source
ready
fera pas ce que l'OP a demandé.ready
se déclenche lorsque le DOM se charge, pas après le chargement des éléments.load
se déclenchera une fois le chargement / rendu des éléments terminé.load
).setTimeout
est une mauvaise idée. Il repose sur le chargement de la page en moins de 3 secondes (ou n secondes selon la valeur que vous choisissez.) Si le chargement prend plus de temps, cela ne fonctionnera pas, et si la page se charge plus rapidement, elle devra attendre sans raison.JavaScript
idem pour jQuery:
REMARQUE: - N'utilisez pas le balisage ci-dessous (car il écrase d'autres déclarations de même type):
la source
Si vous pouvez utiliser jQuery, regardez load . Vous pouvez ensuite configurer votre fonction pour qu'elle s'exécute une fois le chargement de votre élément terminé.
Par exemple, considérons une page avec une image simple:
Le gestionnaire d'événements peut être lié à l'image:
Si vous avez besoin de tous les éléments de la fenêtre actuelle à charger, vous pouvez utiliser
la source
load
méthode jQuery ne lie- t-elle pas simplement une fonction à l'événement load en utilisant Javascript? En quoi cela serait-il différent de ce que fait déjà le PO?addEventListener
plutôt que lier laonload
propriété DOM0 .Je ne comprends pas très bien ce que vous entendez par chargement de page terminé, "chargement DOM" ou "chargement de contenu" également? Dans une page HTML, le chargement peut déclencher un événement après deux événements de type.
Chargement DOM: ce qui garantit que tout l'arborescence DOM est chargée du début à la fin. Mais ne vous assurez pas de charger le contenu de référence. Supposons que vous ayez ajouté des images par les
img
balises, donc cet événement garantit que toutesimg
les images chargées mais pas les images correctement chargées ou non. Pour obtenir cet événement, vous devez écrire de la manière suivante:Ou en utilisant jQuery:
Après le chargement du DOM et du contenu: qui indiquent également le chargement du DOM et du contenu. Cela garantira non seulement la
img
balise, mais également toutes les images ou tout autre contenu relatif chargé. Pour obtenir cet événement, vous devez écrire de la manière suivante:Ou en utilisant jQuery:
la source
DOMContentLoaded
gestionnaire d'événements @Hanif ne semble rien faire pour moi mais leload
fait.Si vous voulez appeler une fonction js dans votre page html, utilisez l'événement onload. L'événement onload se produit lorsque l'agent utilisateur termine le chargement d'une fenêtre ou de tous les cadres d'un FRAMESET. Cet attribut peut être utilisé avec les éléments BODY et FRAMESET.
la source
De cette façon, vous pouvez gérer les deux cas - si la page est déjà chargée ou non:
la source
Vous pouvez également essayer ci-dessous.
Cela fonctionne dans tous les cas. Cela ne se déclenchera que lorsque la page entière sera chargée.
la source
Pour autant que je sache, il vaut mieux utiliser
La réponse n ° 1 de l'utilisation de l'
DOMContentLoaded
événement est un pas en arrière puisque le DOM se chargera avant que tous les actifs ne soient chargés.D'autres réponses recommandent
setTimeout
que je m'opposerais fortement car elles sont complètement subjectives aux performances de l'appareil du client et à la vitesse de connexion réseau. Si quelqu'un est sur un réseau lent et / ou a un processeur lent, une page peut prendre plusieurs à des dizaines de secondes pour se charger, vous ne pouvez donc pas prédire combien de tempssetTimeout
il faudra.Quant à
readystatechange
, il se déclenche chaque fois que desreadyState
changements qui selon MDN seront encore avant l'load
événement.la source
la source
Si vous n'utilisez aucun framework JS, ce projet est le meilleur moyen d'obtenir l'état prêt pour dom, avec une compatibilité entre navigateurs
https://github.com/ded/domready/blob/master/ready.js
la source
Si vous utilisez déjà jQuery, vous pouvez essayer ceci:
la source
Je peux vous dire que la meilleure réponse que j'ai trouvée est de mettre un script "pilote" juste après la
</body>
commande. C'est la solution la plus simple et probablement la plus universelle que certaines des solutions ci-dessus.Le plan: Sur ma page se trouve un tableau. J'écris la page avec le tableau dans le navigateur, puis je la trie avec JS. L'utilisateur peut le récupérer en cliquant sur les en-têtes de colonne.
Une fois la table terminée par une
</tbody>
commande et le corps terminé, j'utilise la ligne suivante pour appeler le JS de tri pour trier la table par colonne 3. J'ai récupéré le script de tri sur le Web afin qu'il ne soit pas reproduit ici. Pendant au moins l'année prochaine, vous pouvez le voir en fonctionnement, y compris le JS, àstatic29.ILikeTheInternet.com
. Cliquez "ici" en bas de page. Cela fera apparaître une autre page avec le tableau et les scripts. Vous pouvez le voir mettre en place les données puis les trier rapidement. J'ai besoin d'accélérer un peu mais les bases sont là maintenant.CréateurMikey
la source
Essayez ce jQuery :
la source
ready
fera pas ce que l'OP a demandé.ready
se déclenche lorsque le DOM se charge, pas après le chargement des éléments.load
se déclenchera une fois le chargement / rendu des éléments terminé.appeler une fonction après le chargement complet de la page.
la source
J'ai tendance à utiliser le modèle suivant pour vérifier le chargement du document. La fonction renvoie une promesse (si vous devez prendre en charge IE, incluez le polyfill ) qui se résout une fois le chargement du document terminé. Il utilise en
setInterval
dessous car une implémentation similaire avecsetTimeout
pourrait entraîner une pile très profonde.Bien sûr, si vous ne devez pas prendre en charge IE:
Avec cette fonction, vous pouvez effectuer les opérations suivantes:
la source
J'utilise des composants Web, donc cela fonctionne pour moi:
la source
Mettez votre script après la fin de la balise body ... ça marche ...
la source