如果外部JS库也试图这样做,如何安全地初始化Google Analytics?

时间:2016-10-31 16:07:59

标签: google-analytics

我们正在使用Google代码管理器来部署Google Analytics。除了从特定供应商运行JS的地方外,这种方法几乎无处不在。

该供应商自行引导谷歌分析,创建自己的跟踪器,然后跟踪它正在创建的小部件上的交互(可能)。

问题是存在竞争条件,似乎哪个脚本首先初始化“胜利”。

根据这个:https://code.google.com/p/analytics-issues/issues/detail?id=472

不支持将GA初始化为不同的命名空间;但是创建多个跟踪器的所有参考都基本假设有一个控制方。

如果可能有或没有其他JS库尝试同样的事情,我怎样才能安全地引导GA?

1 个答案:

答案 0 :(得分:2)

analytics.js支持通过ga()重命名全局window.GoogleAnalyticsObject命令队列。换句话说,当analytics.js下载时,它会查看是否在window.GoogleAnalyticsObject上设置了值,如果找到了值,则会假定name是全局命令队列函数的名称。如果找不到,则采用默认名称ga

您在页面上加载的第三方插件,小部件或任何其他代码应尊重您(主持人)分配给window.GoogleAnalyticsObject的值。他们应该自己修改它。

如果您是第三方插件作者,则应检查主机页是否已重命名命令队列功能。

这是一个示例,它获取对主机页面为ga()命令队列设置的任何值的引用:

var gaReference = window[window.GoogleAnalyticsObject || 'ga'];

获得参考后,您可以像往常一样使用它;但是,您永远不应该使用default tracker name,因为这很可能是主页使用的内容:

gaReference('create', 'UA-XXXXX-Y', 'auto', {name: 'someUniquePluginName'});
gaReference('someUniquePluginName.send', 'pageview');