J'exécute un script externe, en utilisant un <script>
intérieur <head>
.
Maintenant, puisque le script s'exécute avant le chargement de la page, je ne peux pas accéder à <body>
, entre autres choses. Je voudrais exécuter du JavaScript une fois que le document a été "chargé" (HTML entièrement téléchargé et en RAM). Y a-t-il des événements auxquels je peux me connecter lorsque mon script s'exécute, qui seront déclenchés au chargement de la page?
javascript
html
dom-events
pageload
Le flash
la source
la source
document.onload=
est non intrusif en.wikipedia.org/wiki/Unobtrusive_JavaScriptMoyen raisonnablement portable et non-framework d'avoir votre script défini une fonction à exécuter au moment du chargement:
la source
Gardez à l'esprit que le chargement de la page comporte plusieurs étapes. Btw, c'est du pur JavaScript
"DOMContentLoaded"
Cet événement est déclenché lorsque le document HTML initial a été complètement chargé et analysé , sans attendre la fin du chargement des feuilles de style, des images et des sous-trames. À ce stade, vous pouvez optimiser par programme le chargement des images et des css en fonction de la machine utilisateur ou de la vitesse de la bande passante.
S'exécute après le chargement de DOM (avant img et css):
"charge"
Un événement très différent, la charge , ne doit être utilisé que pour détecter un page entièrement chargée . C'est une erreur incroyablement populaire d'utiliser la charge là où DOMContentLoaded serait beaucoup plus approprié, alors soyez prudent.
Exécute une fois que tout est chargé et analysé:
Ressources MDN:
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded https://developer.mozilla.org/en-US/docs/Web/Events/load
Liste MDN de tous les événements:
https://developer.mozilla.org/en-US/docs/Web/Events
la source
window.onload = ...
penser que mon script attendrait que tout soit entièrement téléchargé avant de s'exécuter, mais il semblewindow.onload
se comporter commedocument.addEventListener("DOMContentLoaded", ...
, alors que lewindow.addEventListener("load", ...
attend vraiment que tout soit entièrement téléchargé. J'aurais pensé que celawindow.onload
devrait être équivalent àwindow.addEventListener("load", ...
plutôt quedocument.addEventListener("DOMContentLoaded", ...
?? J'ai obtenu le même résultat dans Chrome et FF.Vous pouvez mettre un attribut "onload" à l'intérieur du corps
Ou si vous utilisez jQuery, vous pouvez le faire
J'espère que cela répondra à votre question.
Notez que le $ (window) .load s'exécutera après le rendu du document sur votre page.
la source
Si les scripts sont chargés dans le
<head>
document, il est possible d'utiliser ledefer
attribut dans la balise de script.Exemple:
De https://developer.mozilla.org :
la source
Voici un script basé sur le chargement js différé après le chargement de la page,
Où dois-je placer cela?
Qu'est ce que ça fait?
Voici un exemple du code ci-dessus - Différer le rendu de JS
J'ai écrit cela sur la base du chargement différé du concept google pagespeed de javascript et également à partir de cet article Différer le chargement de javascript
la source
Regardez le hooking
document.onload
ou dans jQuery$(document).load(...)
.la source
Fiddle de travail sur
<body onload="myFunction()">
la source
http://www.feedthebot.com/pagespeed/defer-loading-javascript.html
la source
Si vous utilisez jQuery,
$(function() {...});
est équivalent à
$(document).ready(function () { })
ou une autre main courte:
$().ready(function () { })
Voir sur quel événement JQuery $ function () se déclenche-t-il? et https://api.jquery.com/ready/
la source
regardez ici: http://msdn.microsoft.com/en-us/library/ie/ms536957(v=vs.85).aspx
la source
Je trouve parfois sur des pages plus complexes que tous les éléments n'ont pas été chargés par la fenêtre de temps. Si c'est le cas, ajoutez setTimeout avant que votre fonction de délai soit un instant. Ce n'est pas élégant mais c'est un simple hack qui rend bien.
devient...
la source
Il suffit de définir
<body onload="aFunction()">
cela sera appelé après le chargement de la page. Votre code dans le script est alors entouré deaFunction() { }
.la source
Ce code fonctionne bien.
Mais la
window.onload
méthode a différentes dépendances. Cela peut donc ne pas fonctionner tout le temps.la source
Utilisation de la bibliothèque YUI (je l'adore):
Portable et beau! Cependant, si vous n'utilisez pas YUI pour d'autres choses (voir son doc), je dirais que cela ne vaut pas la peine de l'utiliser.
NB: pour utiliser ce code vous devez importer 2 scripts
la source
Il existe une très bonne documentation sur la façon de détecter si le document a été chargé aide de Javascript ou de Jquery.
En utilisant le Javascript natif, cela peut être réalisé
Cela peut également être fait à l'intérieur de l'intervalle
Par exemple, par Mozilla
Utilisation de Jquery Pour vérifier uniquement si DOM est prêt
Pour vérifier si toutes les ressources sont chargées, utilisez window.load
la source
Utilisez ce code avec la bibliothèque jQuery, cela fonctionnerait parfaitement.
la source
.ready () fonctionne mieux pour moi.
.load () fonctionnera, mais il n'attendra pas que la page soit chargée.
Ne fonctionne pas pour moi, brise le script en ligne suivant. J'utilise également jQuery 3.2.1 avec d'autres fourches jQuery.
Pour masquer la superposition de chargement de mes sites Web, j'utilise les éléments suivants:
la source
Javascript
idem pour jQuery:
REMARQUE: - N'utilisez pas le balisage ci-dessous (car il écrase les autres déclarations de même type):
la source
Comme Daniel le dit, vous pouvez utiliser document.onload.
Les différents frameworks javascript hwoever (jQuery, Mootools, etc.) utilisent un événement personnalisé «domready», qui, je suppose, doit être plus efficace. Si vous développez avec javascript, je vous recommande fortement d'exploiter un framework, ils augmentent massivement votre productivité.
la source
la source
Mon conseil utilise l'
asnyc
attribut pour la balise de script qui vous aide à charger les scripts externes après le chargement de la pagela source
defer
plutôt dire , comme l'a mentionné @Daniel Price?utiliser la fonction onload d'auto-exécution
la source
onload
gestionnaires en utilisant cette approche. Au lieu de cela, vous devez ajouter un écouteur.