7

我想放置一个谷歌标签管理器脚本,根据谷歌标签文档,脚本应该放在开始标签之后。

由于我们无法更改源代码,因此我们必须使用以下代码片段附加脚本。

<script type="text/javascript">
(function () {
    var url = "path/to/js/file";
    var gtm = document.createElement('script');
    gtm.type = 'text/javascript';
    gtm.async = true;
    gtm.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + url;
    var s = document.getElementsByTagName('body')[0];
    s.parentNode.insertBefore(gtm, s);
})();
</script>

它与 Google 分析脚本片段几乎相同。现在脚本被附加在 body 标记之前。我不确定使用 jQuery 方法 insertAfter 是否是正确的方法,或者是否有更好的方法!

我很感激你的帮助。

4

7 回答 7

5

实际上,您的代码在and标记script之间插入。改用这个:headbody

var s = document.body.firstChild;
s.parentNode.insertBefore(gtm, s);
于 2013-02-08T09:59:51.813 回答
3

您可以Node.insertBefore为此使用:

var body = document.getElementsByTagName("body")[0];
body.insertBefore(gtm, body.firstChild);

即使 body 标签没有firstChild.

于 2013-02-08T10:02:06.720 回答
0

此 Q 不再相关(2021 年 12 月),因为 GTM 更改了跟踪代码管理器的设置和安装:

在“新”设置中,您应该:

  • <script>代码片段放在<head>网页的 HTML 输出中,最好尽可能靠近开始<head>标记,但在任何 dataLayer 声明的下方。
  • **另外 - 将<noscript>代码片段紧跟在 HTML 输出中的标记之后。

https://support.google.com/tagmanager/answer/6103696

任何Javascript代码都<noscript>没有添加的意义<noscript>(noscript 仅在 JavaScript 关闭时在浏览器中有效)。

于 2021-11-30T13:19:23.360 回答
-1

我想你可以试试这个 - appendChild

 document.getElementsByTagName("body")[0].appendChild(gtm);
于 2013-02-08T10:01:02.130 回答
-1

试试这个:

var script = 'The script content here'; // Add your JS as a string,
var url    = 'path/to/js/file';         // Or link to the file.
var scriptNode = document.createElement('script');       // Create a script Element
scriptnode.setAttribute('type', "text/javascript");      // Set the Element's `type` attribute.
// Either:
scriptNode.appendChild(document.createTextNode(script)); // Add the text to the script Element.
// Or:
scriptNode.setAttribute('src', url);                     // Link to the script
// Place the script Element before the first child of the body.
document.body.insertBefore(scriptNode , document.body.firstChild);

所以,基本上,使用insertBefore

于 2013-02-08T10:02:35.673 回答
-1

如果您正在使用 jQuery,则可以使用.prepend()

(function () {
    var url = "path/to/js/file";
    var gtm = document.createElement('script');
    gtm.type = 'text/javascript';
    gtm.async = true;
    gtm.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + url;
    $('body').prepend(gtm);
})();
于 2013-02-08T10:05:19.307 回答
-1

你可以在你的body标签中有一个元素作为第一个元素,并在它之前附加脚本。使用 yourFirstElementIdfromBodyTag.before(here is your appended code goes)..

例如

<body>
<your first element> like <input type="hidden" id="hidA" />
//rest code goes here
</body>

现在按照建议使用$('#hidA').before('the script code'). 我相信它会在<body>.

于 2013-02-08T10:13:20.130 回答