Javascript 使用Google Analytics跟踪事件

Javascript 使用Google Analytics跟踪事件,javascript,html,google-analytics,event-tracking,Javascript,Html,Google Analytics,Event Tracking,使用Safari跟踪下载事件似乎存在一个众所周知的问题。我使用的是Universal Analytics,在使用以下代码时,如果我使用的是Chrome、IE或FF,我会正确地看到事件,但如果使用Safari,则不会看到: anchor[i].onclick = function() { ga('send', 'event', 'Downloads', 'Click', this.getAttribute('href')); }; “anchor”是document.getElementsB

使用Safari跟踪下载事件似乎存在一个众所周知的问题。我使用的是Universal Analytics,在使用以下代码时,如果我使用的是Chrome、IE或FF,我会正确地看到事件,但如果使用Safari,则不会看到:

anchor[i].onclick = function() {
  ga('send', 'event', 'Downloads', 'Click', this.getAttribute('href'));
};
“anchor”是document.getElementsByTagName('a')返回的数组

从我所读到的内容来看,Safari有点太快了,当它导航到文件时会阻止JavaScript完全执行。这导致在谷歌分析中看不到这一事件。从谷歌自己的文档中,他们提出了类似的建议:

(function(url) {
  anchor[i].onclick = function() {
    ga('send', 'event', 'Downloads', 'Click', this.getAttribute('href'), {
      'hitCallback': function() {
        document.location = url;
      }
    });
    return false;
  };
})(anchor[i].href);
这在Safari中似乎很管用,但在Internet Explorer中不会产生很好的体验,因为您现在看到的是黄色信息栏,并且不再得到下载提示。如果不是IE体验,这将是我的首选方式

通过做一些测试,我注意到如果锚的目标是“_blank”,我会在Safari中跟踪事件,这是因为原始页面仍然在处理JavaScript。目前,我正在使用以下解决方法:

anchor[i].setAttribute('target', '_blank');
anchor[i].onclick = function() {
  ga('send', 'event', 'Downloads', 'Click', this.getAttribute('href'));
};
然而,这仍然改变了链接在新窗口中打开的行为,而这些窗口可能不正常

我还看到人们将跟踪代码附加到onMouseDown事件上,但这并不是100%可靠的-它依赖于这个事件在onClick之前触发的事实,因此增加了一点延迟。当人们点击半下然后改变主意时,它也可以计算假阳性


因此,我想看看是否有人有更好的建议,可以在所有情况下和所有浏览器上使用,而不改变用户体验?

你找到了答案吗?没有,我一直坚持在新窗口中打开链接。