【问题标题】:Google Tag Manager Custom JavaScript谷歌标签管理器自定义 JavaScript
【发布时间】:2015-08-24 08:38:45
【问题描述】:

我正在尝试设置一个 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
}
}

【问题讨论】:

  • 只是一个注释,在“return getParameterByName('hid')”行中,您将一个整数传递给函数,因为您已将变量“hid”定义为长度。我认为你应该有“var hidLength = getParameterByName('hid').length);”并对其余代码进行后续更改。

标签: javascript google-tag-manager


【解决方案1】:

如果您将其分解为两个自定义 JS 变量,这可能会更好,因为您没有操作全局变量:

变量#1: 获取参数名称:

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: 测试数据层:

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
    }
}

【讨论】:

    【解决方案2】:

    试试这个代码(你需要输入脚本标签):

    <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;
        }    
    })();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      相关资源
      最近更新 更多