如何使用 JQuery 查找跟踪代码管理器容器 ID

How to find Tag Manager Container ID with JQuery

我需要在页面加载后找到 Google 跟踪代码管理器容器 ID。

我无法从将其添加到页面的同一来源获取它。

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

我一直在搞乱

var scripts = $("script");

但这是 return 一个数组,这些可能会更改顺序,所以我认为它不太可靠

更新 1:

我使用以下方法成功 return 容器 ID,只是感觉有点不稳定和错误

var 脚本 = $("script");

if (scripts.length) {
  console.log(scripts[2].src.substring(42, 52));
}

这是未经测试的,但您可能会寻找关于标识标签管理器的脚本的更好的东西,例如 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

您将需要 运行 在标签管理器本身加载后执行此操作。

虽然 Cory 的回答很好,但我认为您根本不需要 jQuery,因为在大多数情况下,使用容器 ID 变量(需要在GTM 中的界面)和 运行 自定义 HTML 标签中的 javascript 函数:

<script>
console.log({{Container ID}});
</script>

(尽管我承认这并没有回答如何使用 jQuery 执行此操作的问题)。