首页 > 解决方案 > 跟踪代码管理器中的 JavaScript 编译器错误

问题描述

我正在尝试使用 cookie 通过 GTM 设置每个会话的用户浏览量。我正在使用自定义 JavaScript 变量:

function readCookie(name) {
    var cookieName = name + "=";
    var cookieSplit = document.cookie.split(';');
    for (var i = 0; i < cookieSplit.length; i++) {
        var cookies = cookieSplit[i];
        while (cookies.charAt(0) === ' ') cookies = cookies.substring(1, cookies.length);
        if (cookies.indexOf(cookieName) === 0) return cookies.substring(cookieName.length, cookies.length);
    }
    return null; 
}
function viewAppend() {
    var oldCookie = readCookie('viewCount');
    if (oldCookie === null) {
        document.cookie = "viewCount=1; path=/";
    } else {
        var views = oldCookie + 1;
        document.cookie = "viewCount="+views+"; path=/";
    }
}
viewAppend();

我不断收到相同的编译器错误:“第 12 行错误,字符 1:解析错误。')' 预期。”

我似乎无法弄清楚我做错了什么,但任何帮助表示赞赏。

------ 编辑 ------ 通过我下面的评论,这是我当前的代码。当前错误是:“第 16 行错误,字符 40:解析错误。需要分号”

function doStuff() {
    function readCookie(name) {
        var cookieName = name + "=";
        var cookieSplit = document.cookie.split(';');
        for(var i=0;i < cookieSplit.length;i++) {
            var cookies = cookieSplit[i];
            while (cookies.charAt(0) === ' ') cookies = cookies.substring(1,cookies.length);
            if (cookies.indexOf(cookieName) === 0) return cookies.substring(cookieName.length,cookies.length);
        }
        return null;
    }
    function viewAppend() {
        var oldCookie = readCookie('viewCount');
        if (oldCookie === null) {
            document.cookie = "viewCount="1"; path=/";
        } else {
            var views = parseInt(oldCookie) + 1;
            document.cookie = "viewCount="+views+"; path=/";
        }
    }
}

标签: javascriptcookiesgoogle-tag-manager

解决方案


您在此行有引用问题:

        document.cookie = "viewCount="1"; path=/";

它应该是:

        document.cookie = "viewCount=1; path=/";

您不需要在 cookie 的值周围加上引号(如果这样做,您可以转义它们或在整个字符串周围使用单引号)。


推荐阅读