Es hora de buscar en mi biblioteca de consejos algunas cosas interesantes que puedes hacer con Administrador de etiquetas de Google para mejorar el etiquetado de su sitio. Algunos de estos son magia macro De principio a fin, algunas de estas son las mejores prácticas y otras son cosas que le harán la vida más fácil mientras gerente una solución de gestión de etiquetas.
He dividido esta publicación en dos partes para que sea más Hobbit y menos El Señor de los Anillos a lo largo.
Esto es lo que encontrarás en esta primera parte:
-
Desvincular jQuery
-
Los campos no definidos no se envían a GA
-
Seguimiento de evento de copia
-
Errores como eventos
Mantén los ojos bien abiertos para la segunda parte.
Lo sé, la anticipación probablemente te esté matando.
incógnita
El boletín a fuego lento
Suscríbete al Boletín a fuego lento para recibir las últimas noticias y contenido de Simo Ahava en su bandeja de entrada de correo electrónico.
1. Desvincular jQuery
No soy un gran admirador de jQuery. Quiero decir, definitivamente es útil, ya que simplifica gran parte de la sintaxis difícil y propensa a errores que implica el complejo JavaScript. Al mismo tiempo, disfruto de los desafíos complejos y aprender de la manera más difícil definitivamente me ha convertido en un mejor desarrollador.
En mi experiencia, y esto es definitivamente un muy vista marginal, jQuery introduce un cierto grado de, erm, descuido. Sé que el argumento de “es demasiado fácil” es infantil, pero en algunos casos la falta de transparencia sobre lo que realmente sucede en el código puede provocar un trabajo de desarrollo bastante pobre. En cierto modo, jQuery se trata más de leyendo un guide que crear código, y eso apesta. Especialmente con los controladores de eventos, algunas decisiones de desarrollo están claramente influenciadas por lo fácil que es vincular los controladores a los elementos.
Para Google Tag Supervisor, esto es muy acquainted. Un inofensivo return false;
o e.stopPropagation()
evitará que sus oyentes de GTM recuperen el evento DOM. A menudo, la única razón por la que la propagación se cancela de esta manera es el hecho de que el código se copió y pegó de alguna discusión de Stack Overflow que no tiene ninguna relación con el marcado de su sitio internet.
Vale, perdón por la queja. Esto es lo que sugiero. Siempre que su oyente GTM no se lively cuando debería, abra la consola de JavaScript y escriba la siguiente línea de código allí…
if(typeof(jQuery)!=='undefined'){jQuery('physique').discover('*').off();}
…y presiona enter. Luego intente hacer clic o enviar el formulario nuevamente.
Lo que hace esta easy línea es desvincular todo Controladores de eventos jQuery de todos los elementos HTML en el cuerpo del documento. Si su oyente GTM funciona después de esto, significa que hay algún script jQuery que interfiere. El siguiente paso es encontrar el script problemático y pedirle a su desarrollador que lo solucione para no impedir la propagación.
(Asegúrate de revisar mi Extensión de Chromedonde esta función está cómodamente a solo un clic de distancia).
O puedes elegir la ruta del hacker. Si encuentra el script que interfiere y encuentra la función que capta sus clics o envíos e impide la propagación, puede usar una etiqueta HTML personalizada para solucionarlo.
¡NOTA! Este es un cortar. Asegúrese de probar, probar y PROBAR antes de publicar un contenedor donde desvincula jQuery. Además, no estaría de más consultar con alguien que comprenda qué controladores de eventos se utilizan en el sitio.
Supongamos que tiene un botón Volver al principio que no envía clics a los oyentes de GTM. Encontrará el código en uno de los recursos de la página y se parece a esto:
jQuery('.top-of-page, a(href="#high")').click on(operate () {
jQuery('html, physique').animate({
scrollTop: 0
}, 400);
return false;
});
Como puedes ver, el temido return false;
está ahí. Eso es lo que impide que los eventos trepen por el árbol DOM.
Para solucionar este problema, cree una nueva etiqueta HTML personalizada con el siguiente código dentro:
<script>
jQuery('.top-of-page, a(href="#high")').off('click on');
jQuery('.top-of-page, a(href="#high")').click on(operate(e) {
e.preventDefault();
jQuery('html, physique').animate({
scrollTop: 0
}, 400);
});
script>
Si jQuery y el script problemático están cargados en el of your template, you possibly can have this tag fireplace on {{url}} matches RegEx .*. In the event that they’re loaded elsewhere (like within the footer of your web page), you may want another occasion rule comparable to {{occasion}} equals gtm.load.
On the primary line, I unbind the unique click on handler. Then, I add e
como argumento de la nueva función de clic. Este e
contiene el objeto de evento, y luego puedo usar su preventDefault()
Método para detener la acción unique del clic. sin deteniendo su propagación. Finalmente elimino el return false;
desde el remaining de la función.
Naturalmente, necesitarás probar, probar, probar y luego probar un poco más para saber si este truco daña todo tu sitio o no.
Por supuesto, no es sólo jQuery lo que podría interferir con sus oyentes. Podría ser JavaScript básico o alguna otra biblioteca. Este capítulo se centra en jQuery simplemente porque está tan extendido que la mayoría de las veces es realmente la fuente del problema.
2. Los campos no definidos no se envían a GA
Aquí hay un dato curioso sobre la API de Google Analytics: si un campo como Dimensión personalizada es indefinido cuando se llama al punto remaining de GA, la dimensión personalizada queda fuera de la carga útil. ¿Cómo es esto divertido? Bueno, presenta una oportunidad para hacer que tus etiquetas sean un poco más dinámicas.
Sería bueno obtener una lista de todos los campos que se comportan de esta manera y también cómo se comportan con otros valores de retorno como FALSO o 0.
Entonces, digamos que tiene una dimensión personalizada como autor del weblog que desea enviar con sus etiquetas de vista de página. Naturalmente, sólo configuras el autor del weblog en las páginas del weblog. No desea enviar un valor ficticio como “vacío” o “n/a” en otras páginas de su sitio, por lo que está absolutamente seguro de que necesita dos etiquetas: una cuando el autor del weblog está completo (y puede ser enviado como una Dimensión personalizada), y uno en todas las demás páginas (donde la Dimensión personalizada quedará fuera de la etiqueta).
Sin embargo, gracias al funcionamiento de la API GA, solo necesitas una etiqueta. Solo asegúrese de que la macro que devuelve el valor de Dimensión personalizada se resuelva en tipo indefinido cuando la dimensión no tiene un valor. Hay varias maneras de hacer esto:
operate() {
var t;
var y = "";
return t; // returns undefined kind
return; // returns undefined kind
return undefined; // returns undefined kind
return false; // returns boolean kind
return y; // returns string kind
return x; // throws ReferenceError
}
Como puedes ver, regresando FALSOuna cadena vacía o una variable que no ha sido declarada no servirá.
Lo bueno de GTM es que si tiene una macro variable de capa de datos que no se resuelve, se configurará automáticamente en tipo indefinidolo que significa que no se enviará una dimensión personalizada que haga referencia a esta macro. Entonces, la mejor manera de navegar a través de este escenario explicit es tener autor del weblog declarado en la declaración dataLayer antes del fragmento de contenedor en la plantilla de página. Si la página no es una página de weblog, entonces esta declaración puede omitirse.
<script>
var dataLayer = ({'blog-author': 'Simo Ahava'}); // Weblog creator declared, dimension will get despatched
script>
...
<script>
var dataLayer = (); // Weblog creator not declared, dimension is not going to get despatched
script>
Luego, cuando crea una macro variable de capa de datos, en páginas con autor del weblog en la matriz, activará la dimensión personalizada con el nombre del autor del weblog como valor. En todas las demás páginas no se enviará la dimensión.
Una vez que se familiarice con JavaScript y comprenda las diferentes formas en que GTM y JavaScript resuelven variables para indefinido tipo, puede ser realmente creativo con esta función, haciendo que sus etiquetas sean aún más sencillas.
3. Seguimiento del evento de copia
¿Alguna vez te has preguntado con qué frecuencia la gente copia texto usando CTRL+C o algún otro medio? Bueno, no te lo preguntes más, ¡porque ahora puedes seguirlo como un evento!
Cree esta sencilla etiqueta HTML personalizada:
<script>
var c = doc.getElementById("entry-content");
if(typeof(c)!=='undefined') {
c.addEventListener('copy', operate(evt) {
dataLayer.push({'occasion': 'copy'});
});
}
script>
Este es un script muy easy que envía el evento dataLayer ‘copiar’ cada vez que alguien copia algo en su página dentro del elemento HTML con ID. contenido de entrada (p.ej ).
Remember to change the ingredient whose content material you wish to observe with the occasion listener to match the markup in your web site.
You can also make it extra versatile by exploring the contents of the evt
argumento, que es el objeto del evento. Es goal
La propiedad contiene el elemento HTML que fue el objetivo del evento. Aquí hay algunas concepts:
...
dataLayer.push({'occasion': 'copy', 'copy-id': evt.goal.id, 'copy-content': evt.goal.innerHTML});
...
Etcétera. Tenga en cuenta que evt.goal
almacena el elemento donde comenzó el evento de copia. Entonces, si la acción de copiar se realiza en varios párrafos, encabezados o tramos, por ejemplo, solo podrá observar las propiedades del primer elemento al que se dirige la acción.
4. Errores como eventos
Google Tag Supervisor tiene esta cosa interesante llamada Escucha de errores de JavaScript. Esto se dispara cada vez que un desenfrenado Se produce una excepción en el sitio. Por ejemplo, considere lo siguiente:
var myText = "Hi there!";
alert(myTxt); // Unchecked ReferenceError, will fireplace GTM's error listener
// Exception caught, is not going to fireplace GTM's error listener
strive {
alert(myTxt);
} catch(e) {
console.log(e.message);
}
Con el detector de errores de GTM, puede enviar cada error no detectado como un evento a Google Analytics. Luego puede analizar estos eventos para encontrar problemas con sus scripts. Si tiene un sitio enorme, es posible que obtenga cientos de estos errores, por lo que deberá ajustar el código para que tal vez solo escuche ciertas páginas o errores.
Espero que en algún momento podamos hacer que el oyente se lively solo en caso de errores propagados por las etiquetas y macros de GTM. De esta manera puedes depurar tu instalación de GTM sin tener que preocuparte por todos los demás errores en tu sitio internet (¡aunque definitivamente deberías hacerlo!).
Para que el oyente esté en funcionamiento, haga lo siguiente:
-
Crear una nueva etiqueta de escucha de errores de JavaScript
-
Haga que se lively en todas las páginas (o alguna otra regla de su elección)
-
Crear una nueva regla Evento: gtm.pageErrordónde {{evento}} es igual a gtm.pageError
-
Cree tres nuevas macros de variables de capa de datos:
1. {{Error - Message}}, the place variable identify is gtm.errorMessage
2. {{Error - Line}}, the place variable identify is gtm.errorLineNumber
3. {{Error - URL}}, the place variable identify is gtm.errorUrl
-
Crea una nueva etiqueta de Evento y configúrala a tu gusto
-
Asegúrese de que la etiqueta de evento se lively en la regla que creó en (3)
Recuerde establecer el parámetro de visita sin interacción de la etiqueta de evento en verdadero. ¡No querrás acabar con tu tasa de rebote con errores en tu sitio!
Si estás viendo mucho Error de guión. hits, significa que los errores ocurren en recursos JavaScript cargados desde otros dominios. Debido a las políticas de seguridad del navegador/entre dominios, el nombre y el mensaje del error actual están confusos.
Conclusiones
La segunda parte de este put up está en camino. No quería vomitar demasiado texto en una publicación easy de consejos y trucos, pero esta ya tiene más de 1800 palabras, así que… 🙂 Los temas de la próxima publicación son:
-
Declaración de capa de datos frente a dataLayer.push()
-
Cómo detener un oyente del temporizador GTM
-
Adoptar una convención de nomenclatura adecuada
-
Anotar versiones de contenedores con nombres y notas
De todos modos, nada me gusta más que explorar la versatilidad de Google Tag Supervisor. ¡Hay tantas cosas que puedes hacer con JavaScript, DOM API y la biblioteca de Google Tag Supervisor!
Todo lo que se requiere es un poco de conocimiento sobre JavaScript y el modelo de objetos de documento, mucha creatividad y muchas pruebas, vistas previas y depuración.