为什么 Google 标签管理器附加在正文的末尾?

Why does Google Tag manager append at the end of the body?

我目前正在尝试实施 Google 标签管理器,但我 运行 遇到了问题,因为 GTM 将标签附加在正文的结束标签之前。

每当我有一个模板需要从 Google 跟踪代码管理器中的一个脚本调用一些代码时,我就会收到未定义的错误。这是显而易见的,因为无论我将脚本放在我的视图中的什么位置,GTM 都会始终紧随其后,因为它恰好附加在结束 body 标记之前。

有什么方法可以解决此问题,为什么 Google 会这样做?我知道它有助于非阻塞,但他们也可能只是在脚本上放置异步属性并且它几乎会做同样的事情?

举个例子,我在 GTM 中将 Facebook Pixel 作为我的标签之一,当我加载某个页面作为我的视图时,我需要能够进行特定的事件调用。

fbq('track', 'Search');

当然这需要一个 fbq 实例开始。这让我只有一个选择,那就是尝试将我的脚本放在我的页脚中,这是一个通用模板,它会变得混乱。

有任何解决此行为的方法吗?

您遇到的问题是调用您的函数时 Facebook 库未完全加载。 一种方法是将您的 Facebook 代码迁移到 GTM 在所有页面上触发它 并在 dom ready

上触发你的特定代码

您还可以使用下面的代码,查看 _fbq.loaded 变量何时设置为 true。 https://gist.github.com/chrisjhoughton/1dc91dd7bd95717e08d3

您必须根据此 javascript 变量创建触发器。 希望这有帮助