我必须使用我从服务器上提供的本地analytics.js。如果需要的话,我只想使用本地版本--那么是否有一个解决方案来检查对analytics.js的调用是否失败?
我考虑过使用全局window.onerror检查它,但我不认为对外部文件的调用失败会导致错误。我试过检查ga()是否可用,但即使没有加载analytics.js也是如此。
有什么想法吗?如果你想知道,并不是所有的用户都有互联网接入,这就是为什么我提供一个本地版本。在这种情况下会发生更多的事情,比如添加一个sendHitTask来将答案从analytics.js重定向到本地服务器。
编辑--您可以在其中检查用户是否有互联网访问权限。但我没有找到任何解决方案,也没有在所有现代浏览器上工作。
发布于 2015-03-26 16:17:41
有一个函数可以跟踪库是否已加载。来自文档
ga(function(tracker) {
var defaultPage = tracker.get('page');
});传入函数在加载库时执行,因此您可以设置一个变量来跟踪它是否已加载。你必须把它放在某种计时器上,以决定何时你认为它失败了:
var loaded = false;
ga(function() {
loaded = true;
});
// after one second do something if the library hasn't loaded
setTimeout(function(){
if (!loaded){
//do something
}
},1000);发布于 2019-06-06 09:15:04
与其等待回调,您可以轻松地使用
if(window.ga && ga.loaded) {
// yeps... it is loaded!
}在Firefox文档中可以很容易地看到这一点。
如果您想查看跟踪器是否被阻塞(例如,任何插件),也可以使用相同的技巧。
if(window.ga && ga.q) {
// yeps... blocked! >:o
}发布于 2015-03-28 11:19:27
一个特别优雅的解决方案是使用RequireJS并利用它对回退路径的支持。如果加载GA失败,则在我的站点上加载analytics.js的存根版本,因为访问者使用了阻止请求的隐私工具:
http://veithen.github.io/2015/02/14/requirejs-google-analytics.html
您的用例类似,只是您希望回退到完整的本地副本。您可能也不想像那篇文章所描述的那样更改对GA的所有调用。如果是这样的话,那么您可以使用一种混合方法,只使用RequireJS加载analytics.js (Google的版本或本地副本),而不更改任何其他代码。
设置此操作将涉及以下步骤:
<script async src='//www.google-analytics.com/analytics.js'></script>:
要求(“ga”);https://stackoverflow.com/questions/29282313
复制相似问题