J'ai un script jquery que je n'ai besoin d'exécuter qu'une fois que tout le reste de la page, y compris certains autres javascripts (sur lesquels je n'ai aucun contrôle) ont fini de faire leur travail.
J'ai pensé qu'il y avait peut-être une alternative à $ (document) .ready mais je n'ai pas pu la trouver.
javascript
jquery
dom
chrisme
la source
la source
$(window).on('load', function() { });
puisque $ (window) .load () est obsolète.Ce bloc de code résout mon problème,
la source
Multiple
$(document).ready()
se déclenchera dans l'ordre de haut en bas sur la page. Le dernier$(document).ready()
tirera en dernier sur la page. À l'intérieur du dernier$(document).ready()
, vous pouvez déclencher un nouvel événement personnalisé à déclencher après tous les autres.Enveloppez votre code dans un gestionnaire d'événements pour le nouvel événement personnalisé.
la source
D' ici :
Cela attendra que jQuery soit chargé pour l'utiliser, mais vous pouvez utiliser le même concept, en définissant des variables dans vos autres scripts (ou en les vérifiant si elles ne sont pas votre script) pour attendre qu'elles soient chargées pour les utiliser.
Par exemple, sur mon site, j'utilise ceci pour le chargement asynchrone de JS et j'attends qu'ils aient fini avant de faire quoi que ce soit avec eux en utilisant jQuery:
la source
Il s'avère qu'en raison d'un mélange particulier de frameworks javascript dont j'avais besoin pour lancer le script à l'aide d'un écouteur d'événements fourni par l'un des autres frameworks.
la source
Avez-vous essayé de charger toutes les fonctions d'initialisation à l'aide de
$().ready
, en exécutant la fonction jQuery que vous vouliez en dernier?Vous pouvez peut-être utiliser
setTimeout()
la$().ready
fonction que vous vouliez exécuter, en appelant la fonctionnalité que vous vouliez charger.Ou, utilisez
setInterval()
et faites vérifier l'intervalle pour voir si toutes les autres fonctions de chargement sont terminées (stockez le statut dans une variable booléenne). Lorsque les conditions sont remplies, vous pouvez annuler l'intervalle et exécuter la fonction de chargement.la source
$(window).load(function(){...})