**Última actualización 18 de septiembre de 2020:Debido a cómo La mayoría de los navegadores ahora tienen protecciones de cookies de terceros. Si no se implementa, esta solución será muy ineficaz en el futuro. En lugar de eso, debería considerar una Solución sin cookies.
Hace algunos años escribí una publicación sobre Cómo realizar un seguimiento de iframes entre dominios Cuando se utiliza Administrador de etiquetas de Google y Análisis de GoogleEsa solución se basó en hitCallback
para decorar el iframe, y ahora que lo miro en retrospectiva, tiene sus defectos.
En primer lugar, la solución anterior utilizada hitCallback
que, si bien es confiable en el sentido de que Google Analytics definitivamente se ha cargado con el complemento del enlazador cuando se llama al método, no tiene en cuenta la posible condición de carrera del script que se ejecuta antes de que se haya cargado el iframe.
Un problema adicional period que la solución anterior simplemente tomaba el enlazador del primer objeto de seguimiento de Google Analytics en la página. Pero es posible que este no sea el que queremos usar para el seguimiento entre dominios.
En esta solución, utilizaremos la maravillosa customTask
para decorar el iframe de destino. customTask
aprovecha una setInterval()
script que sondea la página periódicamente hasta que se encuentra el iframe de destino o se alcanza un tiempo de espera.
Naturalmente, este script se ha añadido a mi Herramienta de creación de tareas personalizadas.
incógnita
El boletín informativo de Simmer
Suscríbete a la Boletín informativo de Simmer ¡Para recibir las últimas noticias y contenidos de Simo Ahava en tu bandeja de entrada de correo electrónico!
La tarea personalizada en sí
Esto es lo que el customTask
Parece que para implementarlo, asegúrese de leer las instrucciones en el Herramienta de creación de tareas personalizadas antes de copiar y pegar el código requerido en su página JavaScript (si usa el Fragmento de página de Common Analytics) o una variable de JavaScript personalizada (si se usa Administrador de etiquetas de Google).
operate() {
var iframeDecorator = {
selector: 'iframe#decorateMe',
makes an attempt: 10,
intervalMs: 1000,
useAnchor: false
};
// DO NOT EDIT ANYTHING BELOW THIS LINE
var globalSendHitTaskName = '_ga_originalSendHitTask';
return operate(customTaskModel) {
window(globalSendHitTaskName) = window(globalSendHitTaskName) || customTaskModel.get('sendHitTask');
var tempFieldObject, dimensionIndex, rely, ga, tracker, decorateTimer, decorateIframe, iframe;
if (typeof iframeDecorator === 'object' && typeof iframeDecorator.selector === 'string' && typeof iframeDecorator.makes an attempt === 'quantity' && typeof iframeDecorator.intervalMs === 'quantity') {
rely = 0;
ga = window(window('GoogleAnalyticsObject'));
tracker = ga.getByName(customTaskModel.get('identify'));
decorateIframe = operate() {
iframe = doc.querySelector(iframeDecorator.selector);
if (iframe !== null && /(?&)_ga=/.take a look at(iframe.src)) {
window.clearInterval(decorateTimer);
return;
}
if (iframe === null) {
rely += 1;
if (rely === iframeDecorator.makes an attempt) {
window.clearInterval(decorateTimer);
}
return;
}
window.clearInterval(decorateTimer);
iframe.src = (new window.gaplugins.Linker(tracker)).embellish(iframe.src, iframeDecorator.useAnchor);
};
decorateTimer = window.setInterval(decorateIframe, iframeDecorator.intervalMs);
}
};
}
Para empezar, asegúrese de editar el objeto de configuración iframeDecorator
. Establezca los parámetros en sus valores correctos.
Parámetro | Valor de ejemplo | Descripción |
---|---|---|
selector | "#decorateMe" |
Cuerda con el Selector CSS que coincida con el iframe que quieres decorar. |
intentos | 10 |
Número que indica cuántas veces se sondea la página en busca del iframe hasta que el script deja de intentarlo. |
intervaloMs | 1000 |
Milisegundos entre cada intento de encontrar el iframe en la página. |
usarAnchor | false |
Si se debe utilizar un hash (# ) en lugar de un parámetro de consulta de URL para agregar el parámetro del enlazador al origen del iframe. |
Una vez que hayas editado estos, tendrás que agregar esto customTask
a sus rastreadores o etiquetas.
Asegúrese de agregar esto customTask
a un hit o etiqueta que se activa después (o poco antes) de que se haya añadido el elemento iframe a la página. El script tiene un tiempo de espera que es makes an attempt * intervalMs
milisegundos, por lo que si el script no encuentra el iframe antes de este tiempo de espera, el script ya no sondeará la página y el iframe permanecerá sin decorar.
Por ejemplosi el iframe está en la propia plantilla HTML de la página, normalmente es suficiente agregar esto customTask
al hit de Vista de página que se activa tan pronto como la página comienza a cargarse (por lo que Todas las páginas disparador en GTM, o el fragmento en la página si se usa Common Analytics).
Pero si el iframe se agrega en un modal al hacer clic en un botón, por ejemplo, querrá activar un hit de Google Analytics. con ese clic y luego asegúrese de incluir esto customTask
en el golpe.
Cómo funciona
Cuando se genera el hit a Google Analytics, este customTask
pregunta repetidamente a la página: “¿Hay un iframe que coincida con el selector CSS indicado?”. Si se encuentra este iframe antes del tiempo de espera (makes an attempt * intervalMs
), luego la ruta del iframe se decora con el parámetro de enlazador entre dominios.
Esto, a su vez, significa que cuando se carga la página dentro del iframe, la URL de la página tendrá la _ga=
parámetro de enlazador entre dominios, que luego es utilizado por la primera etiqueta que se activa en el iframe con el allowLinker
bandera puesta a true
.
Advertencias
Tenga en cuenta que esto solo decora el iframe src
caminoEsto es lo único que puedes hacer desde el sitio de origen, así que si no funciona, no podrás usar esta solución. Algunos iframes pueden introducir una redirección cuando el authentic src
se carga, lo que a menudo elimina el parámetro de consulta de la URL. Si este es el caso, puede intentar configurar el useAnchor
parámetro a true
que podrían ser más resistentes a las redirecciones.
Si está interesado en una alternativa viable al parámetro enlazador, eche un vistazo a la
postMessage API
introducido en Este gran articulo por Dan Wilkerson de Bounteous.
Tenga cuidado, también, de que esto customTask
utiliza la configuración de cookies del hit que el customTask
Se agregó a. Por lo tanto, si este hit tiene una configuración de cookies excepcional, es posible que el enlazador se haya creado con el ID de cliente incorrecto.
En otras palabras, asegúrese de conocer cualquier modificación en la configuración de cookies predeterminada en el rastreador, el hit o la etiqueta a la que se refiere. customTask
se añade.
No hay ninguna penalización actual por agregar esto. customTask
directamente al rastreador o a todas sus etiquetas de Common Analytics. Si el iframe ya tiene un parámetro de dominio cruzado en el src
valor, el script simplemente deja de intentar decorar el iframe.
Resumen
Este es un enfoque alternativo a mi Solución authentic de uso hitCallback
para decorar el iframe. En mi humilde opinión, creo que esto customTask
barre el suelo con mi thought authentic, por lo que recomiendo totalmente usar esto en su lugar.
Mis sentimientos sobre los iframes no han cambiado realmente desde que escribí el artículo authentic, por lo que solo incluiré aquí el extracto relevante para que pueda simpatizar con él.
Si quieres desahogarte, déjame saber lo que piensas sobre los iframes en los comentarios de este artículo.