我们正在使用Google代码管理器来部署Google Analytics。除了从特定供应商运行JS的地方外,这种方法几乎无处不在。
该供应商自行引导谷歌分析,创建自己的跟踪器,然后跟踪它正在创建的小部件上的交互(可能)。
问题是存在竞争条件,似乎哪个脚本首先初始化“胜利”。
根据这个:https://code.google.com/p/analytics-issues/issues/detail?id=472
不支持将GA初始化为不同的命名空间;但是创建多个跟踪器的所有参考都基本假设有一个控制方。
如果可能有或没有其他JS库尝试同样的事情,我怎样才能安全地引导GA?
答案 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');