检查Google Analytics是否已加载并调用ga('create',..)
Check if Google Analytics is loaded and ga('create',...) is called
我正在使用分析.js。但是,我没有加载Google Analytics以及分析.js脚本,因为我正在等待一些数据首先进入。
因此,我稍后会在某个时候打电话给ga('create', googleKey, 'auto');
。这个脚本应该总是执行,但我想 100% 确定。因此,我想在我的控制器中调用该函数,但前提是以前没有调用过它。
因此,我如何确保它之前被调用和执行过?
我认为window.GoogleAnalyticsObject
在这里对我有帮助。但似乎,这只告诉我 ga 正在使用中,而不是确切地告诉我何时加载以及是否加载。
有什么解决方法吗?
最好的解决方案是检查像素请求。创建递归函数或区间函数。该请求是具有以下基础的简单 img:https://www.google-analytics.com/collect
例如
function checkAnalyticsPixel(){
var analyticsPixel = false;
var imgs = document.getElementsByTagName('img');
for(var i = 0; i < imgs.length; i++){
var img = imgs[i];
if(!!img.src.match("google-analytics.com/collect")){
analyticsPixel = true;
}
}
if(!analyticsPixel){
setTimeout(checkAnalyticsPixel, 1000);
}else{
return true;
}
}
checkAnalyticsPixel();
添加日志记录计数器也是一个好主意。您还可以在请求中搜索其他特征。网页浏览请求如下所示:
https://www.google-analytics.com/collect?v=1&_v=j41&a=707797589&t=pageview&_s=1&dl=[URL]&ul=en-us&de=UTF-8&dt=[PAGETITLE]&sd=24-bit&sr=1920x1080&vp=1296x992&je=0&fl=21.0%20r0&_u=QCCAgAAB~&jid=1841853851&cid=253920917.1460537916&tid=UA-39805455-4>m=[GTMID]&cg1=beauty&z=1871236975
编辑:分析会删除像素。您可以覆盖 appendChild。这不是一个非常好的解决方案,但它可以工作。覆盖必须是脚本中的第一个。
var appendChildPrototype = Element.prototype.appendChild;
Element.prototype.appendChild = function(){
appendChildPrototype.apply(this, arguments);
for(var i = 0; i < arguments.length; i++){
var element = arguments[i];
if(element.nodeName == "IMG" && element.src.match("google-analytics.com/collect")){
console.log("ANALYTICS!");
}
}
};
- 动态分配GA增强型电子商务跟踪器
- $window.ga在AngularJS事件中未定义
- AngularJS Navigation (li ng-repeat, create header li), DOM
- 使用Object.create()的角度服务继承
- 在使用object.create创建的对象中使用super
- chrome.tabs.create的回调不会在弹出窗口中触发
- Backbone - Collection.add() / Collection.create() 之间的区别
- 如何在ajax重定向中传递create-formbuilder
- ColdFusion.Window.create不刷新弹出窗口
- 禁用facebook在like按钮启动edge.create事件
- 正在使用object.create()创建XMLHttpRequest对象
- Stripe API:没有ID为X的令牌(Stripe.cocharges.create)
- Object.create()只读名称属性
- Class.create()上的Comatose(rails插件)javascript错误
- childObj.prototype = Object.create(parentObj.prototype) 和 ch
- 找不到在 create-js 中运行的动画,未列出任何错误
- Rails:如何在jQuery(.js.erb)中调用“create”操作
- Scripts.Render in c# class (create html helper).在 c# 文件中使用 H
- 在 angularjs 的 ga 命令中设置动态参数
- 检查Google Analytics是否已加载并调用ga('create',..)