javascript - 以后如何将数据“key and value”从网站推送到 Google Tag Manager Data?
问题描述
首先,我是谷歌标签管理器的新手,所以为我的解释道歉。
我正在尝试在我的网站上实施 Google 跟踪代码管理器。我不想使用太多功能,但我想做的主要事情是使用查询字符串参数加载我的网站:
示例:(键和值:www.myweb.com ?key=key&value=value )
然后我试图创建一个函数,将键和值推送到谷歌标签管理器数据层
我添加了以下代码:
$(document).ready(function (){
const urlSearchParams = new URLSearchParams(window.location.search);
const params = Object.fromEntries(urlSearchParams.entries());
console.log(params)
window.dataLayer = window.dataLayer || [];
dataLayer.push({params.key:params.value})
//window.dataLayer.push({"Event":"dog"})
})
我有一个 index.html 并添加了来自谷歌标签管理器的头脚本和正文脚本(该页面由 Google Firebase 在线托管)。我不确定如何将键值发送到 Google Tag Manager 数据层,但主要是当我发送它时,我在哪里可以找到 Google Tag Manager 上的这些信息,我是否需要在 GLM 上创建一个变量或其他东西?
先感谢您。
如果您需要更多信息,请告诉我
解决方案
这不是一个好的解决方案 - 通过编写自己的 javascript 函数来捕获查询字符串,您基本上否定了 GTM 的目的。改用“Url”类型变量,将“组件类型”设置为“查询字符串”,并在“查询键”输入字段中输入参数名称。
但是要回答您的问题(即使您针对该特定问题的方法不好),是的,您需要创建一个变量来从 dataLayer 读取数据。
首先将值推送到 dataLayer。dataLayer 是一个对象数组,因此您可以使用键/值对“推送”一个新对象:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
"myDLKey":"myValue",
"event":"updateMyDLKey"
});
然后在 GTM 接口的“变量”部分中,使用要检索其值的键创建一个 dataLayer 变量。
基本上没有用例来更改 dataLayer 版本。您可以指定一个默认值,以防数据层中不存在该键,否则该变量将未定义。
请注意,您需要将事件与任何新的或更新的键/值对一起推送,因为“事件”键告诉 GTM 更新其内部状态;否则推送的值将无法访问。
有些事件是“自然”发生的 - 例如,您不需要 dataLayer 中的 ab 事件来捕获带有 Url 类型变量的值,因为在大多数情况下会有一个页面加载事件(其他“内置”事件是 DOM 就绪的,窗口加载,如果您启用了任何内置的单击或表单变量,请单击并提交)。
推荐阅读
- ios - 如何在 SwiftUI 中将项目与 VStack 内的顶部对齐?
- node.js - 使用 sequelize 在 nodejs 和 Postgres 中插入错误
- android - 在android studio中运行我的第一个flutter应用程序时出现问题
- python - Python 是否有 Parquet 等价物?
- android - 如何在不复制和粘贴其父 onMeasure 实现的情况下修改自定义 TextView WRAP_CONTENT 高度?
- javascript - 如何在 React js 中读取和更新 csv 文件
- flutter - 向 Flutter 中的默认 User 类添加新属性
- python - 蟒龟在移动时留下点
- jenkins - 如何在 jenkins 文件中获取 hg 分支名称
- node.js - 如何在 keycloak 中获取最后添加的用户或更新的用户?