Carregamento de quadro do OSX Safari interrompido
Eu tenho um site HTML básico (com algum javascript) usando uma simples marca âncora para baixar um arquivo como este:
<a href="../resources/mexml/MexmlSamples-1.0.zip">Mexml Samples 1.0</a>
Para rastrear o número de downloads, tenho umonclick
manipulador que passa um evento para o Google Analytics da seguinte forma:
$('#mybutton').click(function(e){ga('send','event','Download','MexmlSample','MexmlSample-1.0');});
Isso funciona como esperado ao baixar o arquivo usando o Chrome no OS X e o IE no Windows 7. O arquivo é baixado e vejo o evento na minha conta do GA.
Quando eu testo no Safari 8 no Yosemite, o arquivofaz download, mas o GA raramente vê o evento. E é claro que eu tenho o temidoFailed to load resource: Frame load interrupted
no console de erros do Safari.
Suponho que, às vezes, recebo o evento do GA por causa de uma condição de corrida entre quando o Safari interrompe a ação e quando o código do GA é acionado.
Então, algo pode ser feito para corrigir isso no Safari para que eu sempre receba os eventos do GA?
Observe que minha pergunta provavelmente tem a mesma causa raiz que estasem resposta Pergunta, questão:Carregamento de quadro interrompido ao baixar arquivos do excel
Atualização 6 de junho
Agora estou completamente confuso. Acabei de notar que, se eu abrir uma nova página do navegador no meu site (no Safari) e clicar no download, ela será registrada pelo GA. No entanto, os cliques subsequentes baixam ainda o arquivo, mas não são registrados pelo GA.
Se eu fechar essa janela e abrir uma nova, novamente o primeiro download será registrado pelo GA.
Por outro lado, ao usar o Chrome, todos os downloads são registrados pelo GA.
Agora estou pensando que posso estar olhando para o problema errado. O comportamento que estou vendo está me dizendo que o Safari está mantendo um estado em JavaScript que permite a passagem da primeira chamada do GA, mas bloqueia todas as chamadas subseqüentes.
Mas esse é o mesmo código que está sendo executado pelo Chrome, então não sei por onde começar a depurar o problema.