J'écris un bookmarklet javascript. Le problème ici est qu'il peut être invoqué par l'utilisateur avant et après le chargement d'une page. Je veux m'assurer que le script n'est exécuté qu'après le chargement de la page. Comment faire ça?Vérifiez (à partir du bookmarklet) si la page est chargée?
Répondre
Une façon de vérifier si le document a été chargé est de vérifier la propriété document.readyState. IE, Firefox 3.6+, Webkit et Opera le supportent.
if (document.readyState === "complete") {
// do sth
}
Une autre chose est, si vous voulez attendre le chargement du document. Dans ce cas, vous devez écouter certains événements, comme DOMContentLoaded sur le document, load on window ou readyStateChange sur le document.
BTW. certaines personnes vérifient également (document.readyState === "complete" || document.readyState === "loaded"). Je ne sais pas quel navigateur utilise la valeur "chargée", mais cela doit être un problème de compatibilité avec les anciens navigateurs. – Rafael
'loaded' arrive avant 'complete' avant que l'élément ne soit réellement ajouté au DOM. Ça m'a gâché quand j'ajoutais dynamiquement des éléments 'script', et que je ne pouvais pas accéder à leur contenu. – zzzzBov
<body onload="start()">
</body>
Lors du démarrage de la fonction, le chargement du DOM est garanti.
L'accrochage d'une fonction à la fonction de chargement/chargement du document assure nulle part dans votre code peut être exécuté avant que le DOM soit chargé.
<html>
<body onload="documentLoad()">
<script type="text/javascript">
function documentLoad() {
alert("Document is ready now.");
}
</script>
</body>
</html>
Si vous voulez utiliser jQuery, vous pouvez utiliser une méthode manuelle très courte pour attacher tout votre code à la fonction prêt.
$(document).ready(function() {
// All code in here - will trigger when DOM is loaded.
}
Et voici une méthode à court main encore plus court, en utilisant jQuery, pour obtenir le même.
$(function(){
// All code in here - will trigger when DOM is loaded.
});
var firstLoad = true;
$(document).ready(function(){
if (firstLoad){
firstLoad=false;
//your code to run once
}
});
La plupart des réponses sont ici répondent comment attacher une fonction au document fonction prêt, ce qui est ce que davidgale demande ...
L'objet document
a une propriété de readyState
qui sera défini sur "complete"
une fois le chargement terminé.
<html>
<body>
<script type="text/javascript">
function someFunction() {
// Called various times throughout page's life.
if(document.readyState == "complete") {
// Perform DOM actions - will only attempt after DOM is loaded.
}
}
</script>
</body>
</html>
Depuis l'OP: Je veux m'assurer que le script n'est exécuté qu'après le chargement de la page. On dirait que c'est exactement ce qu'il demande. – SRM
- 1. Vérifiez si une bibliothèque DLL est déjà chargée? (Java)
- 2. Vérifiez si une balise de gabarit est chargée dans Django
- 3. Ma page est-elle chargée à partir du cache du navigateur?
- 4. Vérifiez si l'Agent SQL Server s'exécute à partir du code?
- 5. Vérifiez si la connexion est fermée!
- 6. Vérifiez si le fichier/l'image est en cours de chargement à partir du cache?
- 7. Skin personnalisé par MediaWiki: vérifiez si la page en cours est la page principale
- 8. Vérifiez si Char est dans la gamme
- 9. VBA Vérifiez si la variable est vide
- 10. Vérifiez si la superclasse est java.lang.Object
- 11. Vérifiez si l'utilisateur est connecté
- 12. Vérifiez si UIView est touché?
- 13. Vérifiez si le programme shell est ouvert
- 14. jquery-ui à partir d'un bookmarklet
- 15. Vérifiez si la page est en mode de rendu partiel ASP.NET 2.0 + AJAX.NET
- 16. Vérifiez si _tmkdir réussit
- 17. JQuery Vérifiez si Div est Montré
- 18. Vérifiez si Adobe Reader est installé sur la machine client
- 19. Haut de la page Javascript bookmarklet
- 20. Redirection sauf si la page est appelée depuis jQuery
- 21. Bookmarklet forcer IE6 à démarrer la restauration automatique d'une page?
- 22. Zend Framework: Vérifiez si l'espace réservé à Zend View est
- 23. javascript Vérifiez si clé du tableau est réglé
- 24. Vérifiez si le volume du système est coupé.
- 25. Vérifiez si l'utilisateur du processus est un administrateur C++
- 26. La page de détection est chargée dans Sharepoint Designer
- 27. Vérifiez si la fenêtre contextuelle est déjà ouverte
- 28. Vérifiez si des conseils est appliqué
- 29. Comment tester si la collection JPA chargée paresseuse est initialisée?
- 30. PHP: Vérifiez si URL redirige?
Jusqu'à présent, personne n'a compris la question. ** Il veut savoir si le document a encore fini le chargement. ** – SLaks
Je suis d'accord, voir ma réponse ... – Greg
lol, u jerk, merci pour le down vode ... document ready ne comprend pas quand le document a fini de charger ... que penseriez-vous d'autre ... faire du thé? – CrazyDart