2010-03-04 7 views
9

Estoy cambiando de sitio para usar Google Analytics asincrónico, y tengo curiosidad acerca de su método para enviar eventos a la matriz _gaq. Cerca de lo que puedo decir, los eventos se colocan en un patrón de espera en _gaq mientras el script ga.js se descarga de forma asíncrona. ¿Se activan una vez que se descarga la secuencia de comandos y cómo se realiza el seguimiento de los eventos de carga posterior al documento?¿Cuándo y cómo se ejecuta Asynchronous Google Analytics?

Un ejemplo es un usuario que hace clic en un enlace 10 segundos después de la carga de la página: de acuerdo con la documentación, el evento debe colocarse en _gaq. ¿Cómo lo detecta el script de análisis?

Respuesta

8

La parte general se describe mejor por el Google Analytics Async doc.

Para insertar una llamada API en la cola, debe convertirla de la sintaxis JavaScript tradicional en una matriz de comandos. Las matrices de comando son simplemente matrices de JavaScript que se ajustan a un formato determinado. El primer elemento en una matriz de comandos es el nombre del método del objeto rastreador que desea llamar. Debe ser una cadena. El resto de los elementos son los argumentos que desea pasar al método del objeto del rastreador. Estos pueden ser cualquier valor de JavaScript.

Voy a tratar de explicar los detalles jugosos: _gaq es sólo una llanura JavaScript Array, y todas las matrices tienen el método push para añadir una entrada al final de la matriz. Por lo tanto, antes de que se cargue el script de Analytics, todos los comandos se enviarán a la matriz. Al final de la secuencia de comandos de Analytics, reemplaza el método _gaq.push con un método personalizado y ejecuta todas las entradas en la matriz _gaq. El nuevo método _gaq.push ejecutará el método de seguimiento de forma instantánea. Entonces, cuando ejecuta el método push 10 segundos después de la carga de la página, el comando debe ejecutarse.

+2

Hice algo de registro en _gaq, y antes de que se cargue el script, es solo una matriz simple. Una vez que se baja el script, _gaq se convierte en un objeto de análisis tradicional, que verifica lo que estás diciendo. –

0

Siempre es difícil desactivar el código de Google Analytics, pero si resolviera este problema, al cargar el script, redefiniría la función push en la matriz después de procesar todo en la cola de espera (_gaq). De esta forma, la función redefinida push simplemente actuaría como un proxy para las llamadas a funciones reales en el objeto pageTracker.

Aquí está un ejemplo sencillo de redefinir el método push en un objeto array:

var foo = []; 
foo.push("one");      // pushes "one" onto the array 
foo.push("two");      // pushes "two" onto the array 
foo.push = function(a) { alert(a) }; // redefines `push` 
foo.push("three");     // alerts "three" 
alert(foo);       // alerts "one,two" 
Cuestiones relacionadas