Show Menu
主题×

Load order for rules

相对于JavaScript加载顺序的动态标签管理加载顺序。
下面的图表显示了常规页面加载顺序。
上图上的红色文本表示非顺序活动。绿色文本表示连续活动。
以下部分讨论了如何在四个页面加载阶段使用不同的 JavaScript/第三方标记脚本选项:
  • 页面顶部
    • 顺序HTML: 如果使用标记,则插入 <HEAD/> 到以下 <SCRIPT/> DTM库中,否则将在顶部插入 <BODY/>
    • 顺序JavaScript全局: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 顺序JavaScript本地: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 非顺序JavaScript: 在DTM库下以异步方式 <SCRIPT/>``<HEAD> 插入,包括脚本
    • 非连续 HTML: ​作为隐藏 IFRAME 插入,且不会影响页面 HTML
  • 页面底部
    • 顺序HTML: _satellite.pageBottom() 在DOMRECTION之前使用 document.write() 回调脚本插入,以便不破坏可见页面
    • 顺序JavaScript全局: _satellite.pageBottom() 在JavaScript中包含在JavaScript中 <SCRIPT/>
    • 顺序JavaScript本地: _satellite.pageBottom() 在JavaScript中包含在JavaScript中 <SCRIPT/>
    • 非顺序JavaScript: 在DTM库下以异步方式 <SCRIPT/>``<HEAD> 插入,包括脚本
    • 非连续 HTML: ​作为隐藏 IFRAME 插入,且不会影响页面 HTML
  • DOM Ready
    • 顺序HTML: 将不起作用,因为 DOMREADY 处于活动状态并 document.write() 将覆盖页面
    • 顺序JavaScript全局: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 顺序JavaScript本地: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 非顺序JavaScript: 在DTM库下以异步方式 <SCRIPT/>``<HEAD> 插入,包括脚本
    • 非连续 HTML: ​作为隐藏 IFRAME 插入,且不会影响页面 HTML
  • Onload(窗口加载)
    • 顺序HTML: 将不起作用,因为 DOMREADY 处于活动状态并 document.write() 将覆盖页面
    • 顺序JavaScript全局: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 顺序JavaScript本地: 插入 <HEAD/> 到DTM下面包括JavaScript脚本 <SCRIPT/>
    • 非顺序JavaScript: 在DTM库下以异步方式 <SCRIPT/>``<HEAD> 插入,包括脚本
    • 非连续 HTML: ​作为隐藏 IFRAME 插入,且不会影响页面 HTML
非连续 HTML 第三方规则始终将置于 iFrame 中。没有异步HTML这样的东西,因此动态标签管理引用了该名称的IFrame功能。
Even though scripts might be injected into the <HEAD/> later in the page processing like DOMREADY and ONLOAD , scripts will only appear in the proper timing sequence and be either global, local, synchronous, or asynchronous. Also, Dynamic Tag Management checks to make sure that the timing is being handled properly and if DOMREADY has already occurred, it will not attempt a page-destructive document.write() . Dynamic Tag Management致力于尽可能不中断可视页面。因此,即使安装实际可能不是“异步”进行的,您也可能看到“异步安装”错误。这只是一个警报,可帮您识别页面时间可能存在问题,且 DOMREADY 已在应该加载的所有同步脚本加载之前触发。If that happens, check to make sure that the pageBottom() callback is actually in the correct place immediately prior to the </body> tag. 如果不在,则可能发生这些类型的错误。
动态标签管理队列按以上列出的顺序处理它们,但不区分页面加载阶段的JavaScript和HTML脚本。
这意味着队列中的页面加载规则顺序决定了它们退出队列的顺序。
A simple way to determine the queue order is to look at _satellite.configurationSettings.pageLoadRules in the JavaScript console and examine the sequence.
例如,在 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})