Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

457
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!