Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

455
Vistas
¿Cómo evitar que Google Tag Manager sobrescriba document.write ()?

Estamos usando Angular para nuestro sitio web. Como no todas las páginas se han portado a Angular, implementamos un enfoque híbrido:

  1. Cada solicitud va primero a Angular. Cuando se ha cargado, comprueba si la Ruta existe
  2. De lo contrario, la página HTML se obtiene del backend
  3. El elemento html en el DOM (es decir, la página completa) se reemplaza con el cuerpo de la respuesta
 ngOnInit() { this.railsService.fetchRailsPage(this.router.url).subscribe( (response) => this.replaceDOM(response), (errorResponse) => this.replaceDOM(errorResponse.error) ); } private replaceDOM(newContent: string) { document.open(); document.write(newContent); document.close(); }

Dado que todos los a-hrefs en las páginas antiguas son simples hrefs antiguos (no los enlaces de enrutador de Angular), una vez que el usuario se aleja, la página se vuelve a cargar y Angular se activa nuevamente.

Hasta ahora, funciona, pero noté que a veces el DOM no se reemplaza con el cuerpo de la respuesta.

La depuración nos llevó a la conclusión de que Google Tag Manager podría ser el problema. Sobrescribe document.write() y muchas otras funciones predeterminadas de Javascript.

ingrese la descripción de la imagen aquí

¿Porqué es eso? ¿Y cómo se puede evitar esto para obtener la versión predeterminada de, por ejemplo document.write() ?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Apoyando a Alan aquí.

Por favor, asegúrese de que está ejecutando dos pruebas:

  1. Bloquee gtm con la función de bloqueo de solicitudes de las herramientas de desarrollo e intente reproducir el problema.

  2. Intente crear un contenedor GTM vacío, cárguelo en la página y reproduzca el problema.

Si la primera prueba muestra que el problema persiste con GTM bloqueado, entonces no es GTM.

Si la segunda prueba muestra que el problema está resuelto, entonces no se trata de GTM sino de la lógica utilizada en su configuración.

En todo caso, primero me aseguraría de que ningún código personalizado en GTM anule adicionalmente document.write (que nunca antes había visto, pero definitivamente es posible). Luego, auditaría ampliamente todos los scripts personalizados implementados por GTM. Después de eso, intentaría pausar todos los activadores de visibilidad de elementos si se implementa alguno y ver si eso ayuda.

Es probable que GTM tenga como objetivo anular la escritura para poder ver los cambios de DOM. Pero lo hace suavemente, agregando un poco de seguimiento allí y sin cambiar su esencia. Es muy poco probable que la lógica central de GTM entre en conflicto con Angular.

//UPD acaba de conversar con un colega en Measure. Parece que el único escenario en el que GTM anula document.write es cuando hay etiquetas HTML personalizadas que tienen una opción para "soportar document.write". El disparador de visibilidad de elementos utiliza observadores de mutaciones e intersecciones en lugar de escuchar document.writes.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda