如何使用JQuery查找Tag Manager容器ID

时间:2015-06-17 13:57:26

标签: jquery google-tag-manager

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

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

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

我一直在搞乱

var scripts = $("script");

但是这会返回一个数组,这些都会受到订单更改的影响,因此我认为它不太可靠

更新1:

我正在使用以下内容成功返回容器ID,它只是让人感觉到片状和错误

var scripts = $(" script");

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

2 个答案:

答案 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执行此操作的问题)。