2010-06-23 68 views
0

我使用的代码是跟踪来自Chrome,Safari,Firefox,Opera Mini但不是IE的访问。我认为问题是一个问题或装载顺序,范围或可能的代码布局。我目前使用下列内容:异步Google Analytics(分析)未登录IE

在我example.html

<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 
<script type="text/javascript" src="example.js"></script> 

在我example.js

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-########-1']); 
_gaq.push(['_trackPageview']); 

凡UA号码已更改为保护无辜者:)。

第一种选择:
- 从html文件中删除ga.js
- 脚本注入代码添加到example.js文件下面_gaq.push电话:

(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); 
})(); 

有没有人有任何的成功与把跟踪JavaScript文件内的代码?或者,我必须使用Google的the snippet将所有跟踪代码移至html文件。

回答

-1

我们有类似的问题,我们的问题是,我们有一个twoletter域。一旦你设置_gaq.push(['_ setDomainName','xx.com']);这一切都解决了,并运作良好。

+0

我们的域名长于2个字符,所以我认为这不会解决我的问题。谢谢。 – 2010-06-24 17:43:43

1

无论您使用简单脚本标记还是使用函数表达式调用ga.js都没有太大区别,至少不涉及所描述的问题。但是,函数表达式建议不要在加载ga.js时阻止加载页面的其余部分。

为什么IE浏览器(特别是IE 7和IE 8)不会记录您的访问与执行顺序的关系,正如您所猜测的那样。

此函数被命名为push,以便在完全加载Analytics之前可以在_gaq的位置使用数组。在加载分析时,命令将被推送/排队到阵列上。分析完成加载后,它会使用_gaq对象替换阵列并执行所有排队的命令。随后对_gaq.push的调用将解析为此函数,该函数在被推入时执行命令。

http://code.google.com/intl/de-DE/apis/analytics/docs/gaJS/gaJSApi_gaq.html#_gaq.push

所以根据文档它不应该不管你是否第一次填充阵列和负载事后执行的ga.js或负载和第一执行ga.js和随后引发的跟踪方法之后。

事实上,在所有现代浏览器中,它并不重要。但IE 7/8的行为有所不同。如果push方法已经被替换,称这是执行的跟踪方法,如trackPageview,在IE浏览器不会做任何事情7/8

所以回答你的问题:

填充阵列(或首先加载example.js),然后加载ga.js,最好使用函数表达式。

这工作:

<script type="text/javascript" src="example.js"></script> 
<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 

为做到这一点:

<script> 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-########-1']); 
_gaq.push(['_trackPageview']); 

(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); 
})(); 
</script> 

为做到这一点:

<script> 
var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-########-1']); 
_gaq.push(['_trackPageview']); 
</script> 

<script type="text/javascript" src="http://www.google-analytics.com/ga.js"></script> 

或本:

<script type="text/javascript" src="example.js"></script> 

<script> 
(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); 
})(); 
</script> 
相关问题