tag site que gtag google colocar javascript cookies google-analytics monkeypatching httpcookie

site - gtag javascript



Convertir las cookies de Google Analytics en almacenamiento local/de sesión (3)

Algunos experimentos en Chrome muestran que puede ser posible usar getters y setters para parchear document.cookie para esto, algo como:

document.__defineGetter__(''cookie'', function () { // Replace this with code to read from localstorage return "hello"; }); document.__defineSetter__(''cookie'', function (value) { // Replace this with code to save to localstorage console.log(value); });

ga.js (o cualquier otro javascript) podría ejecutarse y acceder a las cookies de manera normal, nunca se pasarían al servidor.

Obviamente esto solo funcionará en algunos navegadores. Los navegadores en los que no funciona tendrán que volver a las cookies normales.

Hay algunas ideas relacionadas en esta pregunta: ¿es posible simular document.cookie en JavaScript?

ACTUALIZACIÓN http://jsfiddle.net/musicisair/rsKtp/embedded/result/

Google Analytics establece 4 cookies que se enviarán con todas las solicitudes a ese dominio (y que se configuran sus subdominios). Por lo que puedo decir, ningún servidor realmente los usa directamente ; solo se envían con __utm.gif como __utm.gif consulta.

Ahora, obviamente, Google Analytics lee, escribe y actúa en función de sus valores y tendrán que estar disponibles para el script de seguimiento de GA.

Entonces, lo que me pregunto es si es posible:

  • __utm* escribir las cookies __utm* en el almacenamiento local después de que ga.js haya escrito
  • borrarlos después de que ga.js haya ejecutado
  • reescriba las cookies DESDE el almacenamiento local a la forma de cookie justo antes de que ga.js lea
  • comenzar de nuevo

O, Monkey patch ga.js para usar el almacenamiento local antes de que comience la parte de lectura / escritura de la cookie.

Obviamente, si vamos tan lejos para eliminar las cookies __utm* , también querremos utilizar la variante Async de Analytics.

Supongo que el voto negativo fue porque no hice una pregunta. DOH!

Mis preguntas son:
¿Se puede hacer como se describe arriba?
Si es así, ¿por qué no se ha hecho?

Tengo una plantilla predeterminada de HTML/CSS/JS que pasa a YSlow, PageSpeed ​​y Chrome''s Audit con puntuaciones casi perfectas. Realmente estoy buscando una manera de exprimir los bytes de cookies restantes de Google Analytics en los navegadores que admiten el almacenamiento local.


Sí, se puede hacer. Solo tienes que solicitar el __utm.gif con los parámetros. El resto de los datos solo se utiliza para realizar un seguimiento de la fuente, la hora de inicio de la sesión y / o las visitas anteriores.

Puede transferir fácilmente las cookies de ambas maneras, por lo que su primer enfoque debería funcionar bien.

Si su segundo enfoque funciona ... no estoy seguro. No conozco el código ga.js lo suficientemente bueno como para estimar si sería posible o no fácilmente.

También hay una tercera opción, ejecute su propia versión de ga.js No es necesario que uses la versión de Google.

¿Se puede hacer como se describe arriba?

¿Por qué no se ha hecho?

  1. las cookies son pequeñas, no hay mucho beneficio si utiliza dominios sin cookies para todo su contenido estático
  2. Es menos conveniente ya que muchos navegadores aún no lo admiten

Utilizar esta:

(function(i,s,o,g,r,a,m){i[''GoogleAnalyticsObject'']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,''script'',''//www.google-analytics.com/analytics.js'',''ga''); if(window.localStorage) { ga(''create'', ''UA-98765432-1'', ''www.example.com'', { ''storage'': ''none'' , ''clientId'': window.localStorage.getItem(''ga_clientId'') }); ga(function(tracker) { window.localStorage.setItem(''ga_clientId'', tracker.get(''clientId'')); }); } else { ga(''create'', ''UA-98765432-1'', ''www.example.com''); } ga(''send'', ''pageview'');

En primer lugar, compruebo si se admite localStorage . Si es compatible, la opción ''storage'': ''none'' deshabilitará las cookies. Ahora podemos configurar el ID de cliente desde localStorage. Si está vacío, Google Analytics generará uno nuevo para nosotros. Guardamos el ID de cliente nuevo (o existente) en localStorage después de que se carga el rastreador.

Si localStorage no es compatible, solo uso el método de análisis regular. Después de la inicialización, envío un pageView a través de ga(''send'', ''pageView'') .

Además, echa un vistazo a este plunk: http://plnkr.co/MwH6xwGK00u3CFOTzepK