在页面加载之后,我需要找到Google标记管理器容器ID是什么。
我无法从相同的来源获得它,因为我要将它添加到页面中。
我想将jQuery变量设置为GTM-XXXXXX。
我一直在捣乱
var scripts = $("script");
但是这是返回一个数组,并且这些数组会受到订单更改的影响,所以我认为它不太可靠。
更新1:
我正在使用下面的方法成功地返回容器ID,它只是感觉很不对劲
var script= $("script");
if (scripts.length) {
console.log(scripts[2].src.substring(42, 52));
}
发布于 2015-06-17 14:10:59
这是未经测试的,但您可能会寻找更好的脚本来标识标记管理器,例如URL的一部分。让我们为加载的脚本获取完整的源URL:
var tagManagerUrl = $('script[src*="googletagmanager"]').attr('src');
现在您有了一个URL,它的查询字符串包含ID,但是我们需要一种从它解析查询字符串值的方法。让我们看一看this answer的代码,它从当前位置按名称获取查询字符串值。
function getParameterByName(name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
它是关闭的,但是我们必须修改它以允许传入我们自己的查询字符串:
function getParameterByName(qs, name) {
var match = RegExp('[?&]' + name + '=([^&]*)').exec(qs);
return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
现在我们可以使用它找到id
值,它应该是您的容器ID:
var tagManagerContainerId = getParameterByName(tagManagerUrl.split('?')[1], 'id');
// do something with it
您需要在标记管理器本身加载之后运行此操作。
发布于 2015-06-18 10:29:21
虽然科里的答案很好,但我认为你根本不需要jQuery,因为在大多数情况下,在GTM中使用容器id变量(需要在接口的variables部分中启用)并在自定义的HTML标记中运行javascript函数甚至更简单:
<script>
console.log({{Container ID}});
</script>
(尽管我承认这并不能回答如何用jQuery实现这个问题)。
https://stackoverflow.com/questions/30893782
复制相似问题