javascript - 同一页面上的 Google 内容实验和分析 : Adding scripts in correct order

标签 javascript dynamic loading content-experiments

我正在尝试运行内容实验,因此 的基本结构应如下所示:

<head>
    <!-- Content experiments code (CE) -->
        ***
    <!-- End CE code -->

    *** Standard <head> code: title, meta, CSS, JS, etc. ***

    <!-- Google Analytics code -->
        ***
    <!-- End GA code -->
</head>

但是,问题是:

正在加载的各种 JS 中有 Google 跟踪代码管理器:

<script async="" src="//www.googletagmanager.com/gtm.js?id=GTM-***"></script>

此文件动态加载另一个脚本:

<script type="text/javascript" async="" src="//www.googleadservices.com/pagead/conversion_async.js"></script>

对我来说不幸的是,它通过使用以下方法将其插入到第一个 <script> 标记之前来实现此目的:

...
getElementsByTagName('script')[0].insertBefore(newScriptObject);
...

如果问题的原因并不明显,则内容实验脚本应该是 中的第一个元素。但是,由于此脚本是插入到第一个脚本元素之前,所以它不是。

为了复合这一点,其他脚本(也在我的控制范围之外)也通过此方法加载。所以,尽管文档中内容实验代码在前面,但是在 JS 执行并更新 DOM 之后,前面还放置了大量的脚本元素。

那么,这重要吗?

我认为这实际上并不重要吗?在页面加载时,第一个脚本元素将是加载内容实验脚本的元素(这是正确的),因为其他文件尚未动态插入。

CE 脚本会在其余脚本加载之前加载并运行吗?

抱歉,我问的问题有点冗长,但是,嗯,是的。

感谢您的帮助,

汤姆

最佳答案

这是网络上的标准做法,完全没问题。不过,很好的挖掘和调试!内容实验只是希望您将脚本加载到靠近您的头顶的位置,以便他们可以将人们重定向到远离控制 URL 的位置,同时对性能的影响尽可能小。

编辑:并且这样当人们在 google 分析之后不小心包含 CE 时,他们就不会获得大量支持票。

关于javascript - 同一页面上的 Google 内容实验和分析 : Adding scripts in correct order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153431/

相关文章:

javascript - 通过 JavaScript 在编辑模式下打开文档

javascript - AngularJS 组件定义为函数

JavaScript 颜色数组

c - 如何在启动时将数组放置在特定地址

c# - 为什么我必须在使用之前将 JValue 显式转换为目标类型?

Javascript 依赖管理和打包

javascript - AngularJS 加载更多功能

javascript - 使用 Jquery 显示下拉列表中的链接的更简单方法

将可变长度结构复制到缓冲区

javascript - jquery不更新元素值