Ordre de chargement des règles

Ordre de chargement de la gestion dynamique des balises par rapport à l’ordre de chargement JavaScript.

Le diagramme suivant montre l'ordre général de chargement des pages.

REMARQUE

Le texte rouge sur le diagramme ci-dessus représente une activité non séquentielle. Le texte vert représente l’activité séquentielle.

La section suivante explique comment les différentes options de script de balises JavaScript/tierces sont utilisées au cours des quatre phases de chargement de page :

  • Haut de la page

    • HTML séquentiel : Injecté dans <HEAD/> sous le script d’inclusion de la bibliothèque DTM si <SCRIPT/> des balises sont utilisées, sinon injecté en haut de <BODY/>
    • JavaScript séquentiel global : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript séquentiel local : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript non séquentiel : Injecté en tant que asynchrone <SCRIPT/> sous <HEAD> le script d’inclusion de bibliothèque DTM
    • HTML non séquentiel : Injecté comme masqué IFRAME et n’affecte pas le code HTML de la page
  • Bas de page

    • HTML séquentiel : Injecté après le script de _satellite.pageBottom() rappel avec document.write() avant DOMREADY afin qu’il n’y ait aucune destruction de la page visible

    • JavaScript séquentiel global : Injecté après _satellite.pageBottom() l’inclusion JavaScript <SCRIPT/>

    • JavaScript séquentiel local : Injecté après _satellite.pageBottom() l’inclusion JavaScript <SCRIPT/>

    • JavaScript non séquentiel : Injecté en tant que asynchrone <SCRIPT/> sous <HEAD> le script d’inclusion de bibliothèque DTM

    • HTML non séquentiel : Injecté comme masqué IFRAME et n’affecte pas le code HTML de la page

  • DOM Ready

    • HTML séquentiel : Ne fonctionnera pas car DOMREADY est principal et document.write() remplacera la page
    • JavaScript séquentiel global : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript séquentiel local : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript non séquentiel : Injecté en tant que asynchrone <SCRIPT/> sous <HEAD> le script d’inclusion de bibliothèque DTM
    • HTML non séquentiel : Injecté comme masqué IFRAME et n’affecte pas le code HTML de la page
  • Onload (chargement de fenêtre)

    • HTML séquentiel : Ne fonctionnera pas car DOMREADY est principal et document.write() remplacera la page
    • JavaScript séquentiel global : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript séquentiel local : Injecté dans <HEAD/> la balise sous le script d’inclusion de la gestion dynamique des balises dans la mesure où JavaScript inclut <SCRIPT/>
    • JavaScript non séquentiel : Injecté en tant que asynchrone <SCRIPT/> sous <HEAD> le script d’inclusion de bibliothèque DTM
    • HTML non séquentiel : Injecté comme masqué IFRAME et n’affecte pas le code HTML de la page

Les règles tierces non séquentielles HTML sont toujours placées dans des iFrames. Il n’existe pas de code HTML asynchrone. La gestion dynamique des balises fait donc référence à la fonctionnalité iFrame portant ce nom.

REMARQUE

Bien que des scripts puissent être injectés dans la <HEAD/> version ultérieure du traitement de la page comme DOMREADY et ONLOAD, les scripts apparaîtront uniquement dans la séquence appropriée et seront soit globaux, locaux, synchrones ou asynchrones. En outre, la gestion dynamique des balises vérifie que le minutage est correctement géré et, si DOMREADY ce minutage a déjà eu lieu, elle ne tente pas de détruire les pages document.write(). La gestion dynamique des balises s’efforce de ne pas endommager la page visuelle si possible. Pour cette raison, une erreur "installation asynchrone" peut s’afficher lorsque l’installation n’est pas asynchrone. Il s’agit simplement d’une alerte qui vous aide à reconnaître que le timing de la page est quelque peu discutable et qui DOMREADY a été déclenché avant que tous les scripts synchrones ne se chargent comme ils devraient l’être. Si cela se produit, vérifiez que le pageBottom() rappel se trouve au bon endroit juste avant la </body> balise. Dans le cas contraire, ces types d'erreurs peuvent se produire.

La file d’attente de la gestion dynamique des balises les traite dans l’ordre indiqué ci-dessus, mais ne fait pas la distinction entre un script JavaScript et un script HTML au cours de la phase de chargement de la page.

Cela signifie que l’ordre des règles de chargement de page dans la file d’attente détermine l’ordre dans lequel elles sont retirées de la file d’attente.

Pour déterminer l’ordre de la file d’attente, il suffit de regarder _satellite.configurationSettings.pageLoadRules la console JavaScript et d’examiner la séquence.

Par exemple, une vue complète de l’ordre de file d’attente des règles de chargement de page peut être vue en entrant le code suivant dans la console JavaScript :

 _satellite.each(_satellite.configurationSettings.pageLoadRules,function(i){(i.event=='pagetop')?_satellite.notify(i.event+': '+i.name,1):false})
 _satellite.each(_satellite.configurationSettings.pageLoadRules,function(i){(i.event=='pagebottom')?_satellite.notify(i.event+': '+i.name,1):false})
 _satellite.each(_satellite.configurationSettings.pageLoadRules,function(i){(i.event=='domready')?_satellite.notify(i.event+': '+i.name,1):false})
 _satellite.each(_satellite.configurationSettings.pageLoadRules,function(i){(i.event=='windowload')?_satellite.notify(i.event+': '+i.name,1):false})

Sur cette page