A ordem de carregamento do Gerenciamento dinâmico de tags em relação à ordem de carregamento do JavaScript.
O diagrama a seguir mostra a ordem geral de carregamento da página.
O texto vermelho no diagrama acima representa atividade não sequencial. O texto verde representa atividade sequencial.
A seção a seguir discute como as diferentes opções de script de tags JavaScript/de terceiros são utilizadas nas quatro fases de carregamento da página:
Parte superior da página
<HEAD/>
abaixo da biblioteca do DTM, inclua script se <SCRIPT/>
as tags forem usadas, caso contrário, será inserido em cima de <BODY/>
<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<SCRIPT/>
abaixo da biblioteca do DTM, inclui script <HEAD>
IFRAME
e não afeta o HTML da páginaFinal da página
HTML sequencial: Injetado após o script de _satellite.pageBottom()
retorno de chamada com document.write()
anterior a DOMREADY para que não haja destruição da página visível
JavaScript sequencial global: Injetado após _satellite.pageBottom()
a inclusão do JavaScript <SCRIPT/>
JavaScript sequencial local: Injetado após _satellite.pageBottom()
a inclusão do JavaScript <SCRIPT/>
JavaScript não sequencial: Injetado como assíncrono <SCRIPT/>
abaixo da biblioteca do DTM, inclui script <HEAD>
HTML não sequencial: Injetado como oculto IFRAME
e não afeta o HTML da página
DOM Ready
DOMREADY
está ativa e document.write()
substituirá a página<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<SCRIPT/>
abaixo da biblioteca do DTM, inclui script <HEAD>
IFRAME
e não afeta o HTML da páginaOnload (carregamento de janela)
DOMREADY
está ativa e document.write()
substituirá a página<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<HEAD/>
abaixo do DTM, inclua o script quando o JavaScript incluir <SCRIPT/>
<SCRIPT/>
abaixo da biblioteca do DTM, inclui script <HEAD>
IFRAME
e não afeta o HTML da páginaAs regras de terceiros HTML não sequenciais são sempre colocadas em iFrames. Não há HTML assíncrono, portanto o Gerenciamento dinâmico de tags se refere à funcionalidade do iFrame com esse nome.
Embora os scripts possam ser inseridos no <HEAD/>
final no processamento da página como DOMREADY
e ONLOAD
, eles só aparecerão na sequência de tempo apropriada e serão globais, locais, síncronos ou assíncronos. Além disso, o Gerenciamento dinâmico de tags verifica se o tempo está sendo manipulado corretamente e, se já DOMREADY
ocorreu, ele não tentará uma página destrutiva document.write()
. O Gerenciamento dinâmico de tags é diligente para não quebrar a página visual, se possível. Por essa razão, você pode ver um erro de "instalação assíncrona" quando a instalação pode não ser realmente "assíncrona". É simplesmente um alerta que ajuda você a reconhecer que o tempo na página é questionável e que DOMREADY
foi acionado antes que todos os scripts síncronos fossem carregados como deveriam. Se isso acontecer, verifique se o pageBottom()
retorno de chamada está no local correto imediatamente antes da </body>
tag . Caso contrário, esses tipos de erros podem ocorrer.
A fila do Gerenciamento dinâmico de tags os processa na ordem listada acima, mas não faz distinção entre um script JavaScript e HTML na fase de carregamento da página.
Isso significa que a ordem das regras de carregamento da página na fila determina a ordem em que elas são removidas da fila.
Uma maneira simples de determinar a ordem da fila é verificar _satellite.configurationSettings.pageLoadRules
no console do JavaScript e examinar a sequência.
Por exemplo, uma visualização completa da ordem de fila da regra de carregamento da página pode ser visualizada inserindo o seguinte código no console do 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})