Javascript - 用 Google 标签管理器的本机 js 代码问题替换循环
Javascript - replace loop with native js code problem for Google Tag Manager
为我的无知提前道歉。我已经搜索了该网站,但没有任何运气。
与其通过 GA 的管理界面手动输入每个主机名,不如利用 GTM 中的以下 JS 函数来定义排除列表(var referrals),create/compare 传入 {{Referrer}}(.exec,.测试方法),然后将 {{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}}; }
}
}
为我的无知提前道歉。我已经搜索了该网站,但没有任何运气。
与其通过 GA 的管理界面手动输入每个主机名,不如利用 GTM 中的以下 JS 函数来定义排除列表(var referrals),create/compare 传入 {{Referrer}}(.exec,.测试方法),然后将 {{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}}; }
}
}