Respuestas a las preguntas frecuentes acerca de la biblioteca JavaScript de Adobe Target at.js.
La biblioteca at.js reemplaza a mbox.js. La biblioteca mbox.js ya no es compatible. Sin embargo, para la mayoría de las personas, at.js proporciona ventajas con respecto a mbox.js.
Entre otros beneficios, at.js mejora los tiempos de carga de página en implementaciones web, mejora la seguridad y proporciona mejores opciones de implementación en aplicaciones de una sola página.
El diagrama siguiente compara el rendimiento de carga de página de mbox.js y at.js.
Como se observa en la ilustración, al usar mbox.js, el contenido de la página no empieza a cargarse hasta que no se completa la llamada a Target. Con at.js, el contenido de la página empieza a cargarse cuando se inicia la llamada a Target y no espera hasta que ha finalizado.
Muchos clientes y consultores quieren conocer el impacto de at.js y mbox.js en el tiempo de carga de página, especialmente en el contexto de los nuevos usuarios frente a los que regresan. Lamentablemente, es difícil medir y ofrecer números concretos sobre la influencia de at.js o mbox.js en el tiempo de carga, ya que cada cliente dispone de una implementación diferente.
No obstante, si la API de visitante está presente en la página, Target puede comprender mejor cómo influyen at.js y mbox.js en este tiempo de carga.
La API de visitante y at.js o mbox.js solo afectan al tiempo de carga de página cuando utiliza el mbox global (debido a la técnica de ocultación del cuerpo). Los mboxes regionales no se ven afectados por la integración del API de visitante.
La siguiente tabla describe la secuencia de acciones para los visitantes nuevos y los habituales:
El API de visitante se carga, se analiza y se ejecuta.
at.js/mbox.js se carga, se analiza y se ejecuta.
Si la creación automática de mbox global está habilitada, la biblioteca JavaScript de Target:
El API de visitante se carga, se analiza y se ejecuta.
at.js/mbox.js se carga, se analiza y se ejecuta.
Si la creación automática de mbox global está habilitada, la biblioteca JavaScript de Target:
Para los nuevos visitantes, cuando la API de visitante está presente, Target debe actuar varias veces para garantizar que las solicitudes de Target contengan datos de ID de visitante de Experience Cloud Visitor ID. Para los visitantes habituales, Target actúa únicamente para que Target recupere el contenido personalizado.
at.js 1.0.0 y las versiones posteriores activan todas las solicitudes en paralelo. Las versiones anteriores ejecutan las solicitudes de forma secuencial, lo que significa que se ponen en cola y que Target espera a que la primera se complete antes de pasar a la siguiente.
El modo en que versiones anteriores de at.js ejecutan las solicitudes es susceptible al llamado “bloqueo de cabeza de línea”. En at.js 1.0.0 y versiones posteriores, cambió a la ejecución de solicitudes en paralelo.Target
Por ejemplo, si se comprueba el esquema de etiquetas de red de at.js 0.9.1, se ve que no se comienza una solicitud de hasta que la anterior ha finalizado. Target Este no es el caso de at.js 1.0.0 y posterior, donde todas las solicitudes comienzan básicamente al mismo tiempo.
Desde la perspectiva del tiempo de respuesta, matemáticamente, esta secuencia se puede resumir así
La versión 1.0.0 de la biblioteca at.js completa las solicitudes más rápido. Además, las solicitudes de at.js son asíncronas, de modo que no bloquea la representación de páginas. Target Aunque las solicitudes tarden segundos en completarse, se verá la página procesada; no obstante, algunas partes pueden quedar en blanco hasta que Target obtenga una respuesta del perímetro de Target.
La versión de at.js 1.0.0 permite cargar la biblioteca de Target de forma asíncrona.
Para cargar at.js de forma asíncrona:
El método recomendado es mediante etiquetas en Adobe Experience Platform.
También puede cargar at.js de forma asíncrona añadiendo el atributo async a la etiqueta de script que carga at.js. Utilice algo similar a esto:
<script src="<URL to at.js>" async></script>
También puede cargar at.js de forma asíncrona utilizando este código:
var script = document.createElement('script');
script.async = true;
script.src = "<URL to at.js>";
document.head.appendChild(script);
Cargar at.js de forma asíncrona es un modo excelente de evitar el bloqueo de presentación por parte del navegador; sin embargo, esta técnica puede producir parpadeos en la página web.
Puede evitar el parpadeo utilizando un fragmento de ocultamiento previo que oculta la página (o partes especificadas) y luego lo revela después de que at.js y la solicitud global se hayan cargado. El fragmento debe añadirse antes de cargar at.js.
Si va a implementar at.js a través de una implementación asíncrona de Adobe Experience Platform, asegúrese de incluir el fragmento de ocultamiento previo directamente en las páginas, antes de implementar Target mediante código incrustado de Adobe Experience Platform.
Si implementa at.js a través de una implementación sincrónica de DTM, el fragmento de ocultamiento previo se puede añadir a través de una regla de carga de página activada en la parte superior de la misma.
Para obtener más información, consulte Cómo gestiona at.js el parpadeo.
Ahora, Adobe Experience Manager 6.2 con FP-11577 (o posterior) es compatible con las implementaciones de at.js mediante su integración Servicios de nube de Adobe Target.
Target ofrece varias maneras de prevenir el parpadeo en la carga de la página. Para obtener más información, consulte Prevención de parpadeo con at.js.
El archivo at.js pesa aproximadamente 109 kB cuando se descarga. Sin embargo, como la mayoría de los servidores comprimen los archivos automáticamente para reducir el tamaño, el at.js pesa unos 34 kB cuando se comprime (mediante GZIP u otro método) en el servidor y se carga con las visitas de los usuarios a su sitio web. La configuración de compresión definida en el servidor donde instaló at.js determina su tamaño comprimido real.
Las implementaciones de at.js utilizan una sola biblioteca (at.js), mientras que las de mbox.js utilizan dos bibliotecas (mbox.js y target.js). Así pues, una comparación más justa sería de at.js con mbox.js y target.js
. Comparando los tamaños comprimidos en formato gzip de las dos versiones, la versión 1.2 de at.js ocupa 34 kB y la versión 63 de mbox.js, 26,2 kB. ``
at.js tiene un tamaño mayor porque realiza mucho más análisis de DOM en comparación con mbox.js. Esto es necesario porque at.js obtiene datos “sin procesar” en la respuesta de JSON y tiene que darle sentido. mbox.js utiliza document.write()
y todo el análisis lo realiza el explorador.
A pesar del mayor tamaño de archivo, nuestra prueba determina que las páginas se cargan más rápido con at.js en comparación con mbox.js. Además, at.js es superior desde el punto de vista de la seguridad, porque no carga archivos adicionales de forma dinámica ni utiliza document.write
.
En estos momentos, at.js utiliza partes de jQuery y, por lo tanto, podrá ver la notificación de licencia de MIT en la parte superior de at.js. jQuery no se expone y no interfiere con la biblioteca jQuery que ya tenga en su página, cuya versión es posible que difiera. No admite la eliminación del código jQuery en at.js.
No, si el dominio cruzado se define en x-solamente y Safari tiene deshabilitadas las cookies de terceros, tanto mbox.js como at.js definirán una cookie deshabilitada y no se ejecutará ninguna solicitud de mbox para el dominio de este cliente.
Para permitir el acceso desde Safari, habría que “deshabilitar” (solo establece una cookie de origen) o “habilitar” (solo establece una cookie de origen en Safari, pero establece cookies de origen y de terceros en otros navegadores) un mejor dominio x.
Sí, puede utilizar el VEC para su SPA si usa at.js 2.x. Para obtener más información, consulte Compositor de experiencias visuales de una sola página (SPA).
Sí. También puede utilizar mboxTrace con fines de depuración, o puede usar las herramientas de desarrollo de su navegador para inspeccionar las solicitudes de red y filtrar “mbox”, aislando así las llamadas a mbox.
Sí, igual que con mbox.js.
Los clientes de Target utilizan en ocasiones instancias basadas en la nube con Target para realizar pruebas o simplemente exponer conceptos. Estos dominios, y muchos otros, son parte de la Lista pública de sufijos.
Los exploradores modernos no guardan las cookies si se utilizan estos dominios, a no ser que se personalice el ajuste cookieDomain
mediante targetGlobalSettings(). Para obtener más información, consulte Uso de instancias basadas en la nube con Target.
Compruebe que está utilizando la versión 1.2 o posterior de at.js. Sin embargo, Adobe recomienda encarecidamente mantenerse actualizado con la versión más reciente.
Los siguientes ejemplos no son necesarios si utiliza la versión 1.2 o posterior de at.js.
Según la forma en que use targetGlobalSettings, es posible que tenga que realizar más modificaciones en el código tras descargar at.js. Por ejemplo, si necesita emplear unas configuraciones que difieran un poco para las implementaciones de Target en varios sitios web y no puede definirlas de forma dinámica mediante JavaScript personalizado, haga las personalizaciones manualmente después de descargar el archivo y antes de cargarlo en el sitio web correspondiente.
Los siguientes ejemplos le permiten utilizar la función targetGlobalSettings()
de at.js para insertar un fragmento de código para admitir las direcciones IP:
Este ejemplo es para una dirección IP única:
if (window.location.hostname === '123.456.78.9') {
window.targetGlobalSettings = window.targetGlobalSettings || {};
window.targetGlobalSettings.cookieDomain = window.location.hostname;
}
Este ejemplo es para un intervalo de direcciones IP:
if (/^123\.456\.78\..*/g.test(window.location.hostname)) {
window.targetGlobalSettings = window.targetGlobalSettings || {};
window.targetGlobalSettings.cookieDomain = window.location.hostname;
}
Estos mensajes no están relacionados con la funcionalidad de at.js. La biblioteca at.js intenta informar de todo lo que no pueda encontrarse en el DOM.
Las siguientes son posibles causas para que aparezca este mensaje de advertencia:
La página se está creando dinámicamente y at.js no puede encontrar el elemento.
La página se está creando lentamente (debido a una red lenta) y at.js no puede encontrar el selector en el DOM.
La estructura de la página en la que se ejecuta la actividad ha cambiado. Si vuelve a abrir la actividad en el Compositor de experiencias visuales (VEC), debería recibir un mensaje de advertencia. Actualice la actividad de modo que se encuentren todos los elementos necesarios.
La página subyacente es parte de una aplicación de una sola página (SPA) o la página contiene elementos que aparecen más adelante y el “mecanismo de sondeo selector” de at.js no puede encontrar dichos elementos. Aumentar el valor de selectorsPollingTimeout
podría ser de ayuda. Para obtener más información, consulte targetGlobalSettings().
Cualquier métrica de seguimiento de clics intenta añadirse a todas las páginas, independientemente de la dirección URL en la que se estableciera dicha métrica. Aunque es algo inofensivo, esta situación provoca la aparición de muchos de estos mensajes.
Para obtener los mejores resultados, descargue y utilice la versión más reciente de at.js. Para obtener más información, consulte Detalles de versión de at.js y Descargar at.js.
tt.omtrdc.net es el nombre de dominio de la red EDGE de Adobe, que se utiliza para recibir todas las llamadas de servidor para Target.
HttpOnly solo se puede establecer mediante código del lado del servidor. TargetLas cookies de, como mbox, se crean y guardan mediante código JavaScript, de modo que no puede utilizar el indicador de Target cookie HttpOnly. Target utiliza establecer HttpOnly para cookies de terceros establecidas del lado del servidor cuando el dominio cruzado está habilitado.
Secure se puede establecer mediante JavaScript solo cuando la página se carga mediante HTTPS. Si la página se carga inicialmente mediante HTTP, JavaScript no puede establecer este indicador. Además, si se utiliza el indicador Secure, la cookie estará disponible solo en páginas HTTPS. Para las páginas cargadas mediante HTTPS, Target establece los atributos Secure y SameSite=None.
Para asegurarse de que Target puede rastrear correctamente a los usuarios y porque las cookies se generan en el lado del cliente, Target no utiliza ninguno de estos indicadores excepto en las situaciones mencionadas anteriormente.
Target ejecuta todas sus decisiones en el servidor. Esto significa que at.js inicia una solicitud de red cada vez que la página se vuelve a cargar o se invoca una API pública at.js.
at.js intenta evitar la ocultación previa de los elementos BODY de HTML u otros elementos DOM durante un periodo prolongado de tiempo, pero esto depende de las condiciones de la red y la configuración de la actividad. at.js proporciona ajustes que puede utilizar para personalizar el estilo del CSS oculto de BODY, de modo que, en lugar de borrar todo el BODY de HTML, puede ocultar solo algunas partes de la página. La expectativa es que esas partes contengan elementos DOM que deben ser “personalizados”.
La solicitud at.js es una solicitud XMLHttpRequest
asincrónica, por lo que realizamos los pasos siguientes:
Teniendo en cuenta el escenario anterior, ¿con qué frecuencia el contenido de la página está completamente cargado y es visible cuando at.js no oculta finalmente el elemento que está cambiando la actividad? En otras palabras, la página es totalmente visible, excepto por el contenido de la actividad, que luego se revela ligeramente después del resto del contenido.
at.js no bloquea el procesamiento de la página. Un usuario puede ver que Target personalizará algunas regiones en blanco de la página que representan elementos. Si el contenido que se va a aplicar no contiene muchos recursos remotos, como SCRIPT o IMG, todo debería procesarse rápidamente.
Si una página se almacena en caché en una red de distribución de contenido (CDN) que está cerca de la ubicación del usuario, pero no cerca del perímetro de Target, ese usuario puede ver algunos retrasos. Los perímetros de Target están bien distribuidos en todo el mundo, por lo que no es un problema la mayor parte del tiempo.
Si tenemos en cuenta el escenario siguiente:
El tiempo de espera de Target es de cinco segundos. Un usuario carga una página que tiene una actividad para personalizar una imagen a pantalla completa. at.js envía la solicitud para determinar si hay una actividad para aplicar, pero no hay una respuesta inicial. Suponga que el usuario ve el contenido normal de la imagen a pantalla completa, porque no se recibió respuesta de Target con respecto a si hay una actividad asociada. Después de cuatro segundos, Target devuelve una respuesta con el contenido de la actividad.
En este momento, ¿sería posible mostrar la versión alternativa? Entonces, después de cuatro segundos, ¿podría cambiar la imagen a pantalla completa y podría el usuario notar este cambio de imagen?
Inicialmente, el elemento DOM de la imagen a pantalla completa está oculto. Después de recibir una respuesta por parte de Target, at.js aplica los cambios de DOM, como reemplazar el IMG y mostrar la imagen a pantalla completa personalizada.
at.js requiere el tipo de documento HTML 5.
Esta sintaxis es:
<!DOCTYPE html>
El tipo de documento HTML 5 garantiza que la página se carga en modo estándar. Cuando se carga en modo quirks, algunas API de JS de las que depende at.js están desactivadas. Target deshabilita at.js en modo quirks.