es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Javascript – problema de reemplazo de bucle con código nativo js para Google Tag Manager

Mis disculpas por mi ignorancia. He buscado en el sitio, pero no he tenido suerte.

En lugar de introducir manualmente cada nombre de host a través de la interfaz de administración de GA, utilice la siguiente función JS en GTM para definir la lista de exclusiones (var referencias), crear/comparar el {{Referrer}} entrante (.exec, métodos .test) y luego anular el {{Referrer}} si está en la lista, o dejarlo pasar sin modificar a GA si no se encuentra ninguna coincidencia:

function()
{
var referencias = [
‘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 = referencias.length; i–;) {
if (new RegExp(referencias[i] + ‘$’).test(hname[1])) {
return null;
}
}
}
return {{Referrer}};
}

Envié el código a un desarrollador para obtener comentarios y él sugirió reemplazar el bucle for con esto (un reemplazo directo para el bucle):

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

Intenté hacerlo de esta manera:

function()
{
var referencias = [
‘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 (referencias.find(function(referencia) { return hname[1].includes(referencia); })) { return null; } else { return {{ Referrer }};
}
Al intentar publicar esto en GTM, estoy recibiendo errores de análisis y errores de variables no referenciadas para {{Referrer}}.

Si alguien tiene comentarios, estaría muy agradecido.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Hay algunos errores de sintaxis en el código modificado. En primer lugar, la instrucción if no está cerrada con una llave. En segundo lugar, la instrucción return no está cerrada con un punto y coma. Para corregir el error de variable no referenciada, {{ Referrer }} debe cambiarse por {{Referrer}} (sin espacios).

    Aquí está el código corregido:

    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}};  
        }
      }
      return {{Referrer}};
    }
    

    Asegúrese de probar el código a fondo antes de publicarlo en GTM.

Comments are closed.