首页 文章

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

提问于
浏览
0

我正在尝试设置Google标记管理器变量来读取URL参数(如果存在),如果不存在,请检查数据层中是否存在该变量,如果不存在则返回false .

但是,GTM提供了一个解析错误,指出缺少')' . 任何帮助将不胜感激,不确定它是否是我的代码或GTM是否需要特定的语法?

function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

function () {
var hid = getParameterByName('hid').length();
if (hid > -1) {
  return getParameterByName('hid');
}
else
  if (dataLayer[0].emailHash.length >-1) {
return dataLayer[0].emailHash;
  }
else
{
  return false
}
}

2 回答

  • 1

    如果你将它分解为两个Custom JS变量,这可能会更好,因为你没有操纵全局变量:

    变量#1:getParameterByName:

    function() {
        return function (name){
            name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
            var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
            return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
        }
    }
    

    变量#2:testDataLayer:

    function () {
        var fn_getParameterByName = {{getParameterByName}};
        var hid = fn_getParameterByName('hid');
        if (hid.length > -1) {
            return fn_getParameterByName ('hid');
        }
        else
            if (dataLayer[0].emailHash.length >-1) {
                return dataLayer[0].emailHash;
            }
        else
        {
          return false
        }
    }
    
  • 0

    尝试使用此代码(您需要输入脚本标记):

    <script type="text/javascript">
    (function (){
        function getParameterByName(name) {
            name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
            var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
                results = regex.exec(location.search);
             return results === null ?  "" : decodeURIComponent(results[1].replace(/\+/g, " "));
        }
    
        var hid = getParameterByName('hid').length();
        if (hid > -1) {
            return getParameterByName('hid');
        } else if (dataLayer[0].emailHash.length > -1) {
            return dataLayer[0].emailHash;
        } else {
            return false;
        }    
    })();
    

相关问题