首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JQuery查找标记管理器容器ID

如何使用JQuery查找标记管理器容器ID
EN

Stack Overflow用户
提问于 2015-06-17 13:57:26
回答 2查看 1.1K关注 0票数 0

在页面加载之后,我需要找到Google标记管理器容器ID是什么。

我无法从相同的来源获得它,因为我要将它添加到页面中。

我想将jQuery变量设置为GTM-XXXXXX。

我一直在捣乱

代码语言:javascript
运行
复制
var scripts = $("script");

但是这是返回一个数组,并且这些数组会受到订单更改的影响,所以我认为它不太可靠。

更新1:

我正在使用下面的方法成功地返回容器ID,它只是感觉很不对劲

var script= $("script");

代码语言:javascript
运行
复制
if (scripts.length) {
  console.log(scripts[2].src.substring(42, 52));
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 14:10:59

这是未经测试的,但您可能会寻找更好的脚本来标识标记管理器,例如URL的一部分。让我们为加载的脚本获取完整的源URL:

代码语言:javascript
运行
复制
var tagManagerUrl = $('script[src*="googletagmanager"]').attr('src');

现在您有了一个URL,它的查询字符串包含ID,但是我们需要一种从它解析查询字符串值的方法。让我们看一看this answer的代码,它从当前位置按名称获取查询字符串值。

代码语言:javascript
运行
复制
function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

它是关闭的,但是我们必须修改它以允许传入我们自己的查询字符串:

代码语言:javascript
运行
复制
function getParameterByName(qs, name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(qs);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

现在我们可以使用它找到id值,它应该是您的容器ID:

代码语言:javascript
运行
复制
var tagManagerContainerId = getParameterByName(tagManagerUrl.split('?')[1], 'id');
// do something with it

您需要在标记管理器本身加载之后运行此操作。

票数 2
EN

Stack Overflow用户

发布于 2015-06-18 10:29:21

虽然科里的答案很好,但我认为你根本不需要jQuery,因为在大多数情况下,在GTM中使用容器id变量(需要在接口的variables部分中启用)并在自定义的HTML标记中运行javascript函数甚至更简单:

代码语言:javascript
运行
复制
<script>
console.log({{Container ID}});
</script>

(尽管我承认这并不能回答如何用jQuery实现这个问题)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30893782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档