我们正在使用Google跟踪代码管理器来部署Google Analytics(分析)。除了在运行来自特定供应商的JS的地方以外,这几乎在任何地方都有效。

该供应商自行进行Google Analytics(分析)自举,创建自己的跟踪器,然后(大概)跟踪正在创建的小部件上的交互。

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

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

不支持将GA插入不同的名称空间;但是所有有关创建多个跟踪器的参考都基本假设存在一个控制方。

当可能有另一个JS库尝试同一件事时,如何安全地引导GA?

最佳答案

analytics.js支持通过ga()重命名全局window.GoogleAnalyticsObject命令队列。换句话说,当analytics.js下载时,它会查看是否在window.GoogleAnalyticsObject上设置了一个值,如果找到了一个值,它将假定该名称是全局命令队列函数的名称。如果找不到,则采用默认名称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');

关于google-analytics - 当外部JS库也在尝试初始化时,如何安全地初始化Google Analytics(分析)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40346080/

10-16 22:13