Javascript 如何避免google analytics在脱机时延迟加载事件侦听器
我有一个可以在线和离线使用的应用程序。我已经在主体中包含了GA,并启用了async。我还有一些处理DOM的核心函数,这些DOM与Javascript 如何避免google analytics在脱机时延迟加载事件侦听器,javascript,html,google-analytics,Javascript,Html,Google Analytics,我有一个可以在线和离线使用的应用程序。我已经在主体中包含了GA,并启用了async。我还有一些处理DOM的核心函数,这些DOM与窗口上的加载事件侦听器关联。当系统未连接时,ga.js文件会花费大量时间尝试加载。这可防止load事件触发。那么我怎样才能避免这种情况呢?我可以使用DOMContentLoaded,但那是一样的,因为js文件包含在DOM内容中。试试看 我们允许ga正常加载 我们将对ga dom元素的引用存储在全局变量(gaClone)中 我们设定了30秒的超时时间。我们还设置了另一个全
窗口上的加载事件侦听器关联。当系统未连接时,ga.js文件会花费大量时间尝试加载。这可防止load
事件触发。那么我怎样才能避免这种情况呢?我可以使用DOMContentLoaded
,但那是一样的,因为js文件包含在DOM内容中。试试看
我们允许ga正常加载
我们将对ga dom元素的引用存储在全局变量(gaClone)中
我们设定了30秒的超时时间。我们还设置了另一个全局变量(loadedGoogleAnalytics),并最初将其设置为0。当ga加载时,我们将该变量设置为1。在超时到期时,我们检查是否加载了ga。如果没有,我们将删除dom元素ga
<script type="text/javascript">
var loadedGoogleAnalytics = 0;
var gaClone;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
loadedGoogleAnalytics = 1;
//console.log('GA Actualy executed!');
});
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
gaClone = ga;
})();
setTimeout(function() {
//console.log('timeout fired');
if (loadedGoogleAnalytics != 1) {
gaClone.parentNode.removeChild(gaClone);
}
}, 30000);
</script>
var loadedGoogleAnalytics=0;
var-gaClone;
var _gaq=_gaq | |[];
_gaq.push([''设置帐户','UA-123456789-1']);
_gaq.push([''u trackPageview']);
_gaq.push(函数(){
loadedGoogleAnalytics=1;
//log('GA实际执行!');
});
(功能(){
var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;
ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www“)+”.google analytics.com/ga.js';
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);
gaClone=ga;
})();
setTimeout(函数(){
//log('timeout-fired');
如果(loadedGoogleAnalytics!=1){
gaClone.parentNode.removeChild(gaClone);
}
}, 30000);
试试这个
我们允许ga正常加载
我们将对ga dom元素的引用存储在全局变量(gaClone)中
我们设定了30秒的超时时间。我们还设置了另一个全局变量(loadedGoogleAnalytics),并最初将其设置为0。当ga加载时,我们将该变量设置为1。在超时到期时,我们检查是否加载了ga。如果没有,我们将删除dom元素ga
<script type="text/javascript">
var loadedGoogleAnalytics = 0;
var gaClone;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);
_gaq.push(function() {
loadedGoogleAnalytics = 1;
//console.log('GA Actualy executed!');
});
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
gaClone = ga;
})();
setTimeout(function() {
//console.log('timeout fired');
if (loadedGoogleAnalytics != 1) {
gaClone.parentNode.removeChild(gaClone);
}
}, 30000);
</script>
var loadedGoogleAnalytics=0;
var-gaClone;
var _gaq=_gaq | |[];
_gaq.push([''设置帐户','UA-123456789-1']);
_gaq.push([''u trackPageview']);
_gaq.push(函数(){
loadedGoogleAnalytics=1;
//log('GA实际执行!');
});
(功能(){
var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;
ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www“)+”.google analytics.com/ga.js';
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);
gaClone=ga;
})();
setTimeout(函数(){
//log('timeout-fired');
如果(loadedGoogleAnalytics!=1){
gaClone.parentNode.removeChild(gaClone);
}
}, 30000);
但这意味着该应用程序仍将暂停30秒。30秒太长了。我认为让用户等待30秒是不好的,因为他/她处于脱机状态。如果我们减少这个数量,那么我们就有可能删除一个有效的(尽管很慢)gs.js负载。是否有任何方法可以使ga.js不包含在要触发的加载事件中,但这意味着应用程序仍将暂停30秒。30秒太长了。我认为让用户等待30秒是不好的,因为他/她处于脱机状态。如果我们减少这个数量,那么我们就有可能删除一个有效的(尽管很慢)gs.js负载。是否有任何方法使ga.js不被包括在要触发的加载事件中?可能重复的可能重复的