Au-delà du FileReader, tous les événements onload, par principe, sont asynchrones vu que leur fonction est d'être lancés quand la ressource est disponible. Si la ressource est disponible immédiatement, le onload n'a plus aucune utilité ni aucun sens !
D'ailleurs, onload existe pour un objet xhr (mais pas cross browser à ma connaissance).
Autre curiosité, un script présent dans la page se charge de façon synchrone (blocage du chargement du reste de la page), en revanche, un script appelé dynamiquement se charge de façon asynchrone et possède un événement onload !
Du coup
<script type="text/javascript" src="tres_gros_script"></script>
bloquera la page tant que le script n'aura pas été chargé et évalué, mais pas
1 2 3 4 5 6 7
| <script type="text/javascript">
var mon_gros_script = document.createElement('script');
mon_gros_script.type="text/javascript";
mon_gros_script.src = "tres_gros_script";
mon_gros_script.onload = function(){alert('Chargé !');};
document.getElementsByTagName('head')[0].appendChild(mon_gros_script);
</script> |
Partager