繁体   English   中英

javascript - 用本机 js 代码替换循环的 Google 跟踪代码管理器问题

[英]javascript - replace loop with native js code problem for Google Tag Manager

提前为我的无知道歉。 我已经搜索了该网站,但没有任何运气。

与其通过 GA 的管理界面手动输入每个主机名,不如使用 GTM 中的以下 JS function 来定义排除列表(var 引用),创建/比较传入的 {{Refferer}}(.exec,.test 方法),然后是 null {{Referrer}} 如果它在列表中,或者如果没有找到匹配项,则让它未经修改地传递给 GA:

function()
{
  var referrals = [
    'domain_one.com',
    'domain_two.com',
    'domain_three.refer.com',
    'store.domain_three.refer.com'
  ];
  var hname = new RegExp('https?://([^/:]+)').exec({{Referrer}});
  if (hname) {
    for (var i = referrals.length; i--;) {
      if (new RegExp(referrals[i] + '$').test(hname[1])) {
        return null;
      }
    }
  }
  return {{Referrer}};
}

我将代码发送给开发人员以获得反馈,他建议用这个替换 for 循环(直接替换循环):

if (referrals.find(function(referral) { return hname[1].includes(referral); })) { return null; } else { return {{ Referrer }};

我试图这样做:

function() 
{
  var referrals = [
    'domain_one.com',
    'domain_two.com',
    'domain_three.refer.com',
    'store.domain_three.refer.com'
  ];
  var hname = new RegExp('https?://([^/:]+)').exec({{ Referrer }});
  if (hname) { 
    if (referrals.find(function(referral) { return hname[1].includes(referral); })) { return null; } else { return {{ Referrer }};  
}

尝试在 GTM 中发布此内容时,我遇到了 {{Referrer}} 的解析错误和未引用的变量错误。

如果有人有一些反馈,我将非常感激。

呃...您的开发人员不知道 GTM 的语法。 所以现在要让它工作,要么开发人员需要知道 GTM 的变量语法,要么你需要了解 JS,所以我建议你使用你的旧代码。 使用您理解的代码比使用您无法维护的代码要好。

如果您仍想使用它,请尝试从变量引用中删除空格。

你忘了关闭 else 子句: else { return {{ Referrer }};}还有一次关闭外部 if... else { return {{ Referrer }};}}

现在它看起来很乱,所以在这里,试试这个:

 function() { var referrals = [ 'domain_one.com', 'domain_two.com', 'domain_three.refer.com', 'store.domain_three.refer.com' ]; if (/https?:\/\/([^\/:]+)/i.test({{Referrer}})) { if (referrals.find(function (referral) { return hname[1].includes(referral); })) { return null; } else { return {{Referrer}}; } } }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM