[javascript] Carga de OSX Safari Frame interrumpida



0 Answers

La única solución en la que puedo pensar está esperando hasta que finalice la solicitud de GA, y solo después de eso, establezca location.href en el enlace de descarga de archivos deseado. Pero esto no es realmente bueno desde la perspectiva del usuario. (Esto se puede lograr con la devolución de llamada correcta https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallback ).

Probablemente, el atributo de descarga HTML5 para href resolverá el problema. No tengo ningún OSX con Safari para probar, así que esto es solo mi opinión.

Question

Tengo un sitio web HTML básico (con algunos javascript) usando una etiqueta de anclaje simple para descargar un archivo como ese:

<a href="../resources/mexml/MexmlSamples-1.0.zip">Mexml Samples 1.0</a>

Para rastrear el número de descargas, tengo un controlador onclick que pasa un evento a Google Analytics de la siguiente manera:

$('#mybutton').click(function(e){ga('send','event','Download','MexmlSample','MexmlSample-1.0');});

Esto funciona como se esperaba al descargar el archivo con Chrome en OS X e IE en Windows 7. El archivo se descarga y veo el evento en mi cuenta de GA.

Cuando lo pruebo en Safari 8 en Yosemite, el archivo se descarga, pero GA rara vez ve el evento. Y, por supuesto, recibo el temido Failed to load resource: Frame load interrupted en la consola de error de Safari.

Supongo que recibo el evento GA a veces debido a una condición de carrera entre cuando Safari interrumpe la acción y cuando el código GA se dispara.

Entonces, ¿se puede hacer algo para arreglar esto en Safari para que siempre obtenga los eventos de GA?

Tenga en cuenta que mi pregunta probablemente tiene la misma causa raíz que esta pregunta sin respuesta: la carga del fotograma se interrumpe al descargar archivos de Excel

Actualización 6 de junio

Ahora estoy completamente confundido. Me acabo de dar cuenta de que si abro una nueva página de navegador en mi sitio (en Safari) y hago clic en la descarga, GA la registra. Sin embargo, los clics posteriores descargan el archivo, pero GA no lo registra.

Si cierro esa ventana y abro una nueva, GA vuelve a registrar la primera descarga.

Por el contrario, cuando se usa Chrome, GA descarga cada descarga.

Ahora estoy pensando que puedo estar mirando el problema equivocado. El comportamiento que estoy viendo me dice que Safari mantiene un estado en JavaScript que permite la primera llamada de GA, pero bloquea todas las llamadas posteriores.

Pero este es el mismo código que Chrome está ejecutando, por lo que no sé cómo ni siquiera cómo empezar a depurar el problema.




Related