【问题标题】:Why does Google Tag manager append at the end of the body?为什么谷歌标签管理器会附加在正文的末尾?
【发布时间】:2016-08-08 10:30:01
【问题描述】:

我目前正在尝试实现 Google 跟踪代码管理器,但我遇到了一个问题,因为 GTM 在正文的结束标记之前附加了这些标记。

每当我有一个模板需要从 Google 跟踪代码管理器中的一个脚本调用一些代码时,我都会收到一个未定义的错误。这一点很明显,因为我将脚本放在视图中的位置并不重要,GTM 将始终位于它之后,因为它会附加在结束正文标记之前。

有什么方法可以解决这个问题吗?为什么 Google 会这样做?我知道它有助于非阻塞,但他们不妨将异步属性放在脚本上,它几乎会做同样的事情?

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

fbq('track', 'Search');

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

此行为的任何解决方法?

【问题讨论】:

  • 移除异步属性或重新考虑你的使用方式
  • 我们只能猜测谷歌的意图。我建议您改写您的问题以解决您的实际问题(“我如何从页眉中加载的脚本访问 GTM 中的变量”),这可能比“为什么软件设计成那样”更容易回答。

标签: javascript jquery html google-tag-manager


【解决方案1】:

您面临的问题是,当您调用函数时,Facebook 库没有完全加载。 一种方法是将您的 Facebook 代码迁移到 GTM 在所有页面上触发它 并在 dom 就绪时触发您的特定代码

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

您必须基于此 javascript 变量创建触发器。 希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2013-06-12
    • 2018-04-13
    • 1970-01-01
    • 2011-12-26
    • 2014-07-15
    相关资源
    最近更新 更多