首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GTM -将DataLayer变量截断为自定义Javascript变量

基础概念

GTM (Google Tag Manager) 是一个用于管理和部署网页标签(如追踪代码、分析工具、广告标签等)的平台。它允许开发者在不修改网页代码的情况下,通过一个集中的界面来管理和更新标签。

DataLayer 是一个全局JavaScript对象,用于在网页上存储和传递数据。它通常用于GTM中,以便在不同的标签之间共享数据。

相关优势

  1. 灵活性:通过DataLayer,可以在不修改网页代码的情况下,轻松地添加、修改或删除数据。
  2. 可维护性:集中管理标签和数据,使得维护变得更加简单。
  3. 性能优化:减少对网页性能的影响,因为标签的加载和执行可以被优化和控制。

类型与应用场景

类型

  • 事件数据:如点击、滚动、表单提交等。
  • 页面数据:如页面标题、URL、用户信息等。
  • 自定义数据:根据业务需求定义的数据。

应用场景

  • 网站分析:收集用户行为数据,用于分析和优化网站。
  • 广告追踪:跟踪广告效果,评估ROI。
  • 用户行为分析:了解用户在网站上的行为模式。

示例代码

假设我们有一个DataLayer变量如下:

代码语言:txt
复制
dataLayer = [{
  'event': 'pageview',
  'pageTitle': 'Home Page',
  'userType': 'registered'
}];

我们希望将pageTitleuserType截断为自定义JavaScript变量。

步骤:

  1. 在GTM中创建自定义变量
    • 进入GTM管理界面,创建一个新的自定义变量。
    • 设置变量类型为Data Layer Variable
    • 选择pageTitleuserType作为变量名。
  • 在网页中引用这些变量
    • 在GTM中发布更改后,可以在网页中通过以下方式引用这些变量:
代码语言:txt
复制
// 获取pageTitle变量
var pageTitle = {{pageTitle}};

// 获取userType变量
var userType = {{userType}};

console.log('Page Title:', pageTitle);
console.log('User Type:', userType);

遇到问题及解决方法

问题:DataLayer变量未正确传递或显示。

原因

  • DataLayer对象未正确定义或初始化。
  • GTM中的变量配置错误。
  • 网页加载顺序问题,导致GTM脚本在DataLayer定义之前执行。

解决方法

  1. 检查DataLayer定义
    • 确保DataLayer对象在网页加载时已正确定义和初始化。
代码语言:txt
复制
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  'event': 'pageview',
  'pageTitle': 'Home Page',
  'userType': 'registered'
});
  1. 验证GTM变量配置
    • 在GTM管理界面中,检查自定义变量的配置是否正确。
    • 确保选择了正确的DataLayer变量名。
  • 调整脚本加载顺序
    • 确保GTM脚本在DataLayer定义之后加载。可以在HTML文件的底部(</body>标签前)引入GTM脚本。
代码语言:txt
复制
<script>
  window.dataLayer = window.dataLayer || [];
  dataLayer.push({
    'event': 'pageview',
    'pageTitle': 'Home Page',
    'userType': 'registered'
  });
</script>

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->

通过以上步骤,可以确保DataLayer变量正确传递并在自定义JavaScript变量中使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript 中如何判断变量是否为数字

作者: Marcus Sanatan 译者:前端小智 来源:stackabuse 简介 JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型。...当我们期望一个变量是数字时,对字符串或数组进行操作可能会在代码中导致奇怪的结果。在本文中,我们将会介绍一些判断变量是否为数字的函数。 像"10"之类的数字的字符串不应被接受。...它接受一个参数,并确定其值是否为NaN。因为我们想检查一个变量是否是一个数字,所以我们将在检查中使用非操作符!。 > !Number.isNaN(intVar); true > !...(一种特殊类型的 object) 为了验证变量是否为数字,我们只需要检查typeof()返回的值是否为`"number"。...总结 在本文中,我们学习了如何检查JavaScript中的变量是否为数字。 Number.isNaN()函数仅在我们知道变量为数字并且需要验证它是否为NaN`时才适用。

2.8K10
  • 检查 JavaScript 变量是否为数字的几种方式

    // 每日前端夜话 第405篇 // 正文共:1100 字 // 预计阅读时间:5 分钟 介绍 JavaScript 是一种动态类型的语言,这意味着解释器是在运行时确定变量类型的。...在本文中,我们将研究可以帮我们确定所用的变量是否为数字的各种函数。...字符串形式的数字例如 "100" 不应该被处理,同时在 JavaScript中 NaN,Infinity 和 -Infinity 之类的特殊值也都是数字,不过我们将忽略这些值。...(对象的一种特殊类型) 为了验证变量是否为数字,我们只需要检查 typeof() 返回的值是否为 "number"。...总结 本文研究了如何检查 JavaScript 中的变量是否为数字。 只有在我们知道自己的变量是一个数字,并且需要验证它是否为 NaN 时,Number.isNaN() 函数才适用。

    2.8K41

    利用“Google Tag Manager V2”实现滚动追踪

    在本文中,我将逐步演示如何使用谷歌标签管家第二版(Google Tag ManagerV2)来“滚动追踪”你的目标网页。...对GTM的术语(例如代码,触发器和变量)以及GTM工作原理有个基本的认识将有助于你的滚动追踪实施。...选择“CUSTOM HTML TAG”(自定义html 代码)。此标签将保留我们的“下拉浏览深度”(Scroll Depth)代码。 因此,将代码复制并覆盖到CUSTOM HTML TAG中。...我们将通过一些页面来触发Custom HTML Tag。接下来就简单了,选择你之前创建的触发器: 变量:页面路径。 操作:包含。 “值”就是你的网站网址,然后保存该标签。...== "undefined" && typeof dataLayer.push ==="function") { standardEventHandler =dataLayer.push; } if

    1.9K70

    在javascript中如何将字符串转成变量或可执行的代码?

    有这样一个需求:当前作用域内有未知的一些变量,其中一个函数中可以拿到某个变量名字符串,怎么能在函数内通过传进来的字符串取到作用域链中的变量值,示例小 demo 如下: const name = '周小黑...' const age = 18 /** * @param {String} e 变量名字符串 * @returns value 通过变量名字符串在作用域链中取到的变量值 */ function...return value } const str = fn('name') 要解决上面的问题,主要就是怎么将字符串转变成可执行的代码?...主要有三种方式: eval() 函数 eval() 函数会将传入的字符串当做 JavaScript 代码进行执行,所以下面的字符串可以正确取到变量对应的值,eval 对比 new Function 和...实际上浏览器中也是不推荐这么用的,另外需要注意的是字符串中的变量只能访问全局作用域,不能访问局部作用域,如果全局作用域中没有,就是 undefined。

    86430

    JavaScript 用七种方式教你判断一个变量是否为数组类型

    JavaScript 如何判断一个变量是否为数组类型 引言 正文 方法一 方法二 方法三 方法四 方法五 方法六 方法七 结束语 引言 我们如何判断一个变量是否为数组类型呢?...今天来给大家介绍七种方式,别走开, 这肯定会被问到的~继续往下看吧 正文 首先先告诉你们, typeof 是无法判断一个变量是否为数组类型的,我们来看一下例子: let arr = [1, 2, 3]..., 例如: let arr = [1, 2, 3] console.log(arr instanceof Array) // true 返回true,说明变量arr是数组类型 方法二 利用构造函数来判断他的原型是否为...返回true,说明变量arr是数组类型 方法七 第七种方式是通过 isPrototypeOf() 方法来判断是否为数组类型,例如 let arr = [1, 2, 3] console.log...(Array.prototype.isPrototypeOf(arr)) // true 返回true,说明变量arr是数组类型 结束语 当你面试中被问到如何判断一个变量是否为数组类型的时候

    81610

    GOOGLE 跟踪代码管理器(GTM)101 PART 1 – 基础篇

    本系列以Google Tag Manager(GTM)为例,介绍如何实现集约化的Tag Management,从而实现更优化的监测代码配置。 这是这个系列的第一篇文章。...2.将Google Analytics跟踪代码添加为变量 你创建的每个代码(tag在GTM中文版本翻译成“代码”)都需要发送到你的Google Analytics跟踪代码。...创建一个用户定义的变量,而不是为每个代码输入追踪代码,当你进入新容器后,你将看到以下图片。从这里你可以在容器代码概览,代码(tag在GTM中文版本翻译成“代码”),触发器,变量和文件夹之间随意切换。...进入变量创建一个新的用户定义变量。变量类型是一个常量,变量值是你的Google Analytics跟踪代码。...注意:请勿将GA代码与GTM代码一起放在网页上。如果这样做,系统将认为页面浏览量是2次,而不是1次。 6 测试你的GTM容器 此时,请先检查一下自己的GTM容器代码是否正确。

    4.3K50

    谷歌监测代码管理器(GTM)基础教程 第2部分 - 创建代码

    本系列以Google Tag Manager(GTM)为例,介绍如何实现集约化的Tag Management,从而实现更优化的监测代码配置。 这是这个系列的第二篇文章,介绍GTM触发器和代码的创建。...在这一点上,相对于标准的GA 监测代码,GTM并没有带来额外的好处。现在,让我们创建一个简单的标记,将所有文档点击行为记录为GA中的页面浏览量。 为什么我们需要这样做?...我们将根据触发器触发代码,并将详细信息发送给GA。这听起来很简单,使用V2的GTM界面,它实际上也是这样的。 但在配置触发器之前,我们需要启用一些GTM的变量。...GTM的变量 在GTM容器的变量页面上,确保点击和表单下的所有选项都已勾选。这将使这些变量可供你在触发器和标记中进行选择。 ?...这可能比URL更有用 - 请参阅下面的示例文档链接上的点击文本(txt显示为绿色)。 ? STEP 3 第三步 最后决定何时发送代码。选择“点击”将显示所有类型为“点击”的触发器。 ?

    2.6K71

    如何在 Google 跟踪代码管理器 (GTM) 中安装 Matomo 跟踪?

    将 Matomo 跟踪添加到您的 Google 跟踪代码管理器非常简单。本指南为 Matomo 云客户和 Matomo 本地用户解释了入门所需的所有步骤。...单击“标签配置”并选择“自定义 HTML” 复制标准 Matomo JavaScript 跟踪代码: 使用您的管理员或超级用户帐户登录 Matomo。 单击右上角菜单中的“管理”(齿轮图标)。...单击“JavaScript 跟踪”部分。 选择您要跟踪的网站。 复制跟踪代码。 将此 JavaScript 跟踪代码粘贴到标签配置 HTML 字段中。 向下滚动并单击“触发”。...要了解有关将 Matomo 与 GTM 结合使用的更多信息,我们推荐这篇第 3 方文章:Google 跟踪代码管理器和 Matomo。 您知道 Matomo 也有自己的标签管理器吗?...了解有关Matomo 标签管理器的更多信息,或了解如何从 GTM 迁移到 MTM。

    43330

    Grouper.html: 分享群组的最佳方式

    然后我想到在 HTML 里面通过 Javascript 先 var 出来群组的群号,然后嵌入到 QQ API 里面获得高清的头像,再用 Javascript 修改相应标签的 CSS 属性,达到自动切换群头像的效果...(这段代码是保罗帮助我实现的,他在向我演示的时候用了一个变量 huangxinnb ,所以我这里也用了一个 baoluonb) var groupnumber = "579332933"; var baoluonb...这个时候我把所有的 Javascript 综合起来,就出现了以下两段 Javascript: // Fill In Your QQ Group Number And Join Link var...id=UA-111752336-7"> window.dataLayer = window.dataLayer || []; function gtag(...实现 用户只需要填写 群号、群名称、加群链接、群介绍四个变量,即可实现: 根据群号自动获取群头像并且展示 根据群头像定义二维码中间的图片 根据加群链接自动定义加群按钮的指向以及二维码内容 根据群名称显示群名称以及在二维码界面显示

    1.2K60

    TBase 备份实操

    实验环境 版本信息 软件环境 版本信息 操作系统 CentOs7.6 OSS版本 2.15.12.3 TBase版本 TBase_V5.05.2 服务器信息 IP 组件 172.21.48.11 gtm001...备,cn001备,dn001备 172.21.48.14 gtm001主,cn001主,dn001主 172.21.48.13 hadoop 分布式文件系统 备份示意图 [备份示意图] 实验步骤 搭建...启动hdfs hadoop-daemon.sh start namenode hadoop-daemon.sh start datanode 检查hdfs启动是否正常(jps) [image.png] 为TBase...集群配置hadoop环境变量 TBase的GTM/CN/DN节点需要使用hadoop命令将备份文件上传到hdfs系统,所以每个GTM/CN/DN节点的服务器上都需要配置hadoop环境变量,然后重启本节点的...OSS服务, 以下操作在所有安装GTM/CN/DN的服务器上执行: 下载JDK和hadoop并解压 #下载jdk安装包 wget https://tasev2-1300276124.cos.ap-beijing.myqcloud.com

    95240

    谷歌跟踪代码管理器(GTM) 入门指南 第4部分——社交媒体

    本系列以Google Tag Manager(GTM)为例,介绍如何实现集约化的Tag Management,从而实现更优化的监测代码配置。 这是这个系列的第四篇文章。...从你的网站点击跳转至社交网站 如果您已经将外部链接发送到Google Analytics(请参阅第3部分),那么你的社交链接点击次数就将被记录为“事件”。...我使用了“Action = Page”表示在Twitter页面上的点击,并且”Action Target”将记录用户在点击链接时所在的页面。 ?...我可以使用图中的Click作为触发器,实际上是使用Click Classes (元素类属性中的一系列值)触发此变量。 即使每个点击的完整字符串不一致,但它们都是以相同的文本开头。...要构建标签Tag,我们可以使用我们确定的其他变量Variable,名为Click Text(用户点击的元素内部的可见文本)。这是为了方便格式化我们的社交网络。

    2.5K60
    领券