En supposant que l'on a un code JavaScript inline dans un document HTML (le corps par exemple), est-ce que cette pièce de JavaScript est toujours exécutée avant JQuery Document-Ready Code?
Par exemple, est la sécurité suivante? P> < Pré> xxx pré>
sinon, comment puis-je le faire en sécurité savoir myvar code> est défini dans un code inline / bloc? p> p> p>
3 Réponses :
Oui, le code ci-dessus est sûr. En ligne JS est exécuté car il est rencontré lorsque le document est analysé de haut en bas. Le gestionnaire prêt au document est exécuté lorsque le document est prêt (évidemment), et il ne sera pas prêt tant que l'ensemble du document a été analysé y compris les scripts en ligne EM>. P>
Notez que vous n'avez pas besoin d'un gestionnaire prêt à l'emploi du document si vous incluez le code qu'il enveloppe comme la dernière chose dans le corps du document, car à ce stade ne sera pas seulement autre que d'autres JS en ligne ont exécuté, mais tous les éléments de document aura été ajouté à la DOM et sera donc accessible de JS. p>
Oui, JavaScript Inline est exécuté pendant que le HTML est analysé. P>
Il est prudent de faire cela, tant que vous n'essayez pas d'obtenir une référence à un élément DOM qui n'a pas encore été analysé (c'est-à-dire n'importe quel élément après le bloc de script dans le code HTML Soude). Vous pouvez également faire référence à toute variable définie sur des blocs de script antérieurs (tant qu'ils sont en portée). P>
Et, comme l'a souligné Matt Browne dans son commentaire, il est également généralement sûr de ne pas utiliser un écouteur DomContentOached (ou la solution de contournement Oldie ou Window.Onload) si vous mettez votre script qui s'appuie sur le DOM étant chargé juste avant la Fermeture corps> code> tag. À ce stade, tous les éléments HTML seront déjà dans le DOM (sauf si vous avez d'autres éléments après Corps> code>, qui serait invalide HTML). P>
NOTE CONNEXE: Il est également généralement sûr de ne pas utiliser $ (document) .Ready () code> Si vous mettez votre script qui s'appuie sur jQuery juste avant la fermeture corporel> code> étiqueter.
Une note sur la note: le script qui s'appuie sur jQuery peut être n'importe où après l'inclusion de JQuery.js. Mais nous savons ce que @mattbrowne signifiait: le script qui s'appuie sur le DOM étant prêt peut être placé à la fin du corps plutôt que dans un gestionnaire prêt.
Il est prudent de supposer que Si vous exécutez le code dans votre code HTML, myvar code> est accessible depuis dans le $ (document) .Ready (fonction (fonction () {}) code>. p>
myvar code> devient une propriété de la fenêtre code> objet code> JS global objet (i.e. fenêtre.myvar code>). Je ne pense pas qu'il soit nécessaire de le créer localement dans la fonction JQuery. P>