我在JavaScript函数下面返回以读取cookie名称和值。当我在Chrome和Firefox浏览器控制台中使用脚本时,我可以获取名称和值。
getCookie('xyz') ;
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
但是当我使用自定义JavaScript变量在Google跟踪代码管理器中使用相同的代码时,我收到错误“括号(必需”。
我无法弄清楚什么是错误,因为除了Google跟踪代码管理器之外,此代码在任何地方都在运行。
答案 0 :(得分:1)
解决方案是使用内置的" Cookie"变量(转到变量,新的,第一方Cookie,输入变量的名称,在配置中输入cookie的名称)。无需本土解决方案。
要严格回答这个问题,必须将自定义javascript变量写为具有返回值的匿名函数:
function() {
return "something";
}
我确定有一个传递参数的解决方法(即cookie名称),但这通常不是如何使用自定义javascript变量的,并且您的用例不需要这样做。
如果你坚持你的功能,你总是可以通过自定义的javascript变量返回它:
function() {
return function (name) {
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
}
将其存储在名为getCookie的自定义javascript变量中,并通过{{getCookie}}(' xyz')访问自定义HTML标记。不是一个好主意,但可能。
答案 1 :(得分:0)
我通常处理cookie集并通过自定义HTML标记获取,因为我相信自定义Javascript需要返回值。因此,与此类似:
<script>
(function() {
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
console.log(getCookie("xyz"));
</script>
})();
无论何时触发标签的触发器,以上内容都会向控制台输出一个日志,其中包含名为xyz的cookie的值。
如果您想在GTM中存储和使用此cookie值,则需要使用cookie变量或通过dataLayer将此变量传递并存储。