GTM 容器的放置与 GA 容器的放置相矛盾
Placement of GTM container contradicts placement of GA container
Google 支持建议放置其 Google 分析跟踪代码“before the closing </head>
tag on every web page on your site you wish to track". It also suggests using Google Tag Manager to more efficiently implement your Analytics tracking code for dynamic sites. However, it says to place the Google Tag Manager code "immediately after the opening <body>
tag on every page on your site”,这似乎自相矛盾。
因此,如果我使用 Google 跟踪代码管理器来安装 Google Analytics(正如它所建议的那样),Google 跟踪代码管理器容器的正确位置是什么 - 在关闭之前</head>
标签还是在开头 <body>
标签之后?
GA 和 GTM 是两个不同的实现 "methods",因此并不矛盾。正如 GTM 文档所指定的,您应该将 GTM bootstrap 紧跟在开始 <body>
标签之后,在任何包含标签的 之外(即 <div>
, <p>
、<section>
等)。
这里有一个很好的参考:http://www.simoahava.com/analytics/container-snippet-gtm-secrets-revealed/
加载 GTM 时,它会调用 analytics.js 库,并创建您的跟踪对象(模仿 GA 片段的前几位)。然后您可以创建综合浏览量标签并开始基本跟踪。
放置 GA 跟踪代码段的位置并不重要。官方 GA 文档建议将它放在 <head>
中的原因是因为您 可以 将它放在 <head>
中并且它会起作用。尽可能早地将代码片段包含在文档中有两个好处:
- 所以
analytics.js
脚本会尽快下载,以便尽快进行跟踪。 (注意:下载 analytics.js
所需的时间越长,访问您的站点然后立即离开的人不被跟踪的可能性就越大。也许您关心这个,也许您不关心——我没有)。
- 因为snippet定义了
ga()
command queue function,越早定义,越早可以使用。如果您仅在代码段本身中使用它,那么在何处定义它并不重要。
另一方面,GTM 片段不能放在 <head>
中。我的意思是,它 可以 ,但它可能会破坏某些东西。
如果您查看 GTM 代码段,您会注意到它在 <noscript>
标记内包含一个 <iframe>
。如果您在 HTML 文档的 <head>
中放置一个 <iframe>
,HTML 解析器将假定您忘记添加结束 </head>
标签并关闭该标签为你。这意味着如果您在头部的 GTM 标签 之后 有任何内容(例如 <link>
标签、<meta>
标签等),这些内容现在将是在 <body>
中,这可能会导致错误。
综上所述,如果您将 GTM 标记添加为 <head>
中的最后一个标记,则会使 HTML 解析器关闭 </head>
并过早启动 <body>
绝对没有区别。
简而言之,对于大多数用例来说,这可能无关紧要。此外,我强烈建议您 actually read the contents of the snippets 您要添加到您的网站以了解他们的工作。他们没那么可怕。
在评论中回答您的问题:
Yes but if GTM loads in the body it will place the GA tracking code in the body, which contradicts where it says to place the GA code
这不是真的,也不重要。如果你看what the tracking script actually does,你会发现它主要只是下载analytics.js
,<script>
标签下载analytics.js
是不是在<head>
或 <body>
.
Google 支持建议放置其 Google 分析跟踪代码“before the closing </head>
tag on every web page on your site you wish to track". It also suggests using Google Tag Manager to more efficiently implement your Analytics tracking code for dynamic sites. However, it says to place the Google Tag Manager code "immediately after the opening <body>
tag on every page on your site”,这似乎自相矛盾。
因此,如果我使用 Google 跟踪代码管理器来安装 Google Analytics(正如它所建议的那样),Google 跟踪代码管理器容器的正确位置是什么 - 在关闭之前</head>
标签还是在开头 <body>
标签之后?
GA 和 GTM 是两个不同的实现 "methods",因此并不矛盾。正如 GTM 文档所指定的,您应该将 GTM bootstrap 紧跟在开始 <body>
标签之后,在任何包含标签的 之外(即 <div>
, <p>
、<section>
等)。
这里有一个很好的参考:http://www.simoahava.com/analytics/container-snippet-gtm-secrets-revealed/
加载 GTM 时,它会调用 analytics.js 库,并创建您的跟踪对象(模仿 GA 片段的前几位)。然后您可以创建综合浏览量标签并开始基本跟踪。
放置 GA 跟踪代码段的位置并不重要。官方 GA 文档建议将它放在 <head>
中的原因是因为您 可以 将它放在 <head>
中并且它会起作用。尽可能早地将代码片段包含在文档中有两个好处:
- 所以
analytics.js
脚本会尽快下载,以便尽快进行跟踪。 (注意:下载analytics.js
所需的时间越长,访问您的站点然后立即离开的人不被跟踪的可能性就越大。也许您关心这个,也许您不关心——我没有)。 - 因为snippet定义了
ga()
command queue function,越早定义,越早可以使用。如果您仅在代码段本身中使用它,那么在何处定义它并不重要。
另一方面,GTM 片段不能放在 <head>
中。我的意思是,它 可以 ,但它可能会破坏某些东西。
如果您查看 GTM 代码段,您会注意到它在 <noscript>
标记内包含一个 <iframe>
。如果您在 HTML 文档的 <head>
中放置一个 <iframe>
,HTML 解析器将假定您忘记添加结束 </head>
标签并关闭该标签为你。这意味着如果您在头部的 GTM 标签 之后 有任何内容(例如 <link>
标签、<meta>
标签等),这些内容现在将是在 <body>
中,这可能会导致错误。
综上所述,如果您将 GTM 标记添加为 <head>
中的最后一个标记,则会使 HTML 解析器关闭 </head>
并过早启动 <body>
绝对没有区别。
简而言之,对于大多数用例来说,这可能无关紧要。此外,我强烈建议您 actually read the contents of the snippets 您要添加到您的网站以了解他们的工作。他们没那么可怕。
在评论中回答您的问题:
Yes but if GTM loads in the body it will place the GA tracking code in the body, which contradicts where it says to place the GA code
这不是真的,也不重要。如果你看what the tracking script actually does,你会发现它主要只是下载analytics.js
,<script>
标签下载analytics.js
是不是在<head>
或 <body>
.