Google 标签管理器 - 未设置自定义 Javascript 偶尔
Google Tag Manager - Not Set on Custom Javascript Occasionally
我设置了一个 Google 标签来检查我的用户正在搜索的邮政编码。我使用 Custom Javascript 变量类型来设置这个变量。
function() {
var url = new URL({{Page URL}});
var zip = url.searchParams.get("zip");
return (zip);
}
我在用户访问包含 "locations.aspx?term" 的地址时触发了标签。这是一个例子 URL:
https://www.example.com/locations.aspx?term=64544&zip=64160&lat=43.3414758&lng=-0.1509269000000586
我应该寻找什么来调试为什么 returns 的 50% 在 Google Analytics 中是 (未设置) ? 另一半 returns 回来就好了。
谢谢!
你的JS有两个问题:
- Internet Explorer 不支持它
- 如果 url 没有带有
zip
参数的查询字符串,它将 return null
。会导致(not set)
最好的方法是:
function () {
function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || "";
}
var zip = getURLParameter('zip');
return zip;
}
虽然这不能解决您的 JavaScript 问题,但 GTM 有一个内置的方法来获取查询参数,根据我的经验,该方法是可靠的并且可能会解决您的问题。您可以使用 URL 变量类型并将 "component type" 设置从 "Full URL" 更改为 "query",然后输入您的查询键(url 参数的名称) .这将 return 参数的值,或者 "undefined" 如果它不存在。
我设置了一个 Google 标签来检查我的用户正在搜索的邮政编码。我使用 Custom Javascript 变量类型来设置这个变量。
function() {
var url = new URL({{Page URL}});
var zip = url.searchParams.get("zip");
return (zip);
}
我在用户访问包含 "locations.aspx?term" 的地址时触发了标签。这是一个例子 URL:
https://www.example.com/locations.aspx?term=64544&zip=64160&lat=43.3414758&lng=-0.1509269000000586
我应该寻找什么来调试为什么 returns 的 50% 在 Google Analytics 中是 (未设置) ? 另一半 returns 回来就好了。
谢谢!
你的JS有两个问题:
- Internet Explorer 不支持它
- 如果 url 没有带有
zip
参数的查询字符串,它将 returnnull
。会导致(not set)
最好的方法是:
function () {
function getURLParameter(name) {
return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [null, ''])[1].replace(/\+/g, '%20')) || "";
}
var zip = getURLParameter('zip');
return zip;
}
虽然这不能解决您的 JavaScript 问题,但 GTM 有一个内置的方法来获取查询参数,根据我的经验,该方法是可靠的并且可能会解决您的问题。您可以使用 URL 变量类型并将 "component type" 设置从 "Full URL" 更改为 "query",然后输入您的查询键(url 参数的名称) .这将 return 参数的值,或者 "undefined" 如果它不存在。