Google跟踪代码管理器自定义JavaScript错误

时间:2015-12-21 18:02:01

标签: javascript jquery google-analytics google-tag-manager

我在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跟踪代码管理器之外,此代码在任何地方都在运行。

2 个答案:

答案 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将此变量传递并存储。