处理Ghostery代理人

时间:2014-04-09 17:04:17

标签: javascript jquery google-analytics

Ghostery实现了模拟脚本(代理),以便页面不会因为需要跟踪代码的逻辑而失败。

在我的情况下,我必须编写跟踪资产和出站点击的代码。通常的方法是检查跟踪代码是否已加载(在我的情况下是由ga.js公开的_gat)但是代理人会通过此检查。

对于某些用例很好且预期但我们在这里处理链接。为了确保链接实际记录到GA,我将一个函数推送到_gaq(假设ga.js正确加载)将被执行。

Ghostery并非如此。我得到了不会触发的链接,因为window.location.href = url的函数不会被执行。

当我看到代理人时,我发现它可以改变我的位置,但我必须_gaq.push(['_link', url])

我发布了一个issue并得到了一个响应,开发人员不应该将功能绑定到第三方脚本。我明白这就是为什么在这之前我检查了_gat是否存在。

最后,我不得不为Ghostery做一个特例,并附上他们的嘶嘶声,以便与它合作。

您可以查看此gist中的完整实施。如果您想重复使用它并与IE8兼容,请确保包含String.trim()的polyfill。

我应该如何编写不依赖于跟踪代码的自定义跟踪逻辑?

使用timeout更改网址是不可能的,因为它可能会破坏慢速连接上的点击。

另外,戳_gat对象不是一种可靠的方法,因为依赖第三方脚本是不好的。

1 个答案:

答案 0 :(得分:1)

Web浏览器目前正在构建一个可以解决此问题的功能: https://developer.mozilla.org/en-US/docs/Web/API/navigator.sendBeacon

这种情况在几个月内没有得到广泛实施,敬请关注。现在,只需添加一个setTimeout(function(){location.href = url},100)来捕获错误并仍然可以使用链接。