[英]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.