我需要在页面加载后找到Google跟踪代码管理器容器ID的内容。
我无法从相同的来源获取它,因为我将其添加到页面中。
我想将jQuery变量设置为GTM-XXXXXX
我一直在搞乱
var scripts = $("script");
但是这会返回一个数组,这些都会受到订单更改的影响,因此我认为它不太可靠
更新1:
我正在使用以下内容成功返回容器ID,它只是让人感觉到片状和错误
var scripts = $(" script");
if (scripts.length) {
console.log(scripts[2].src.substring(42, 52));
}
答案 0 :(得分:2)
这是未经测试的,但您可以寻找更好的标识标记管理器的脚本,例如URL的一部分。让我们获取加载脚本的完整源URL:
var tagManagerUrl = $('script[src*="googletagmanager"]').attr('src');
现在您拥有其查询字符串包含ID的URL,但我们需要一种方法来解析查询字符串值。我们来看一下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
您需要在标记管理器本身加载后运行它。
答案 1 :(得分:1)
虽然Cory的答案很棒,但我认为你根本不需要jQuery,因为在大多数情况下,在GTM中使用容器id变量(需要在界面的变量部分中启用)甚至更简单从自定义HTML标记内运行javascript函数:
<script>
console.log({{Container ID}});
</script>
(虽然我承认没有回答如何使用jQuery执行此操作的问题)。