谷歌分析为IE8创建了断开的链接

时间:2010-09-20 15:25:15

标签: django internet-explorer-8 google-analytics broken-links

我们已成功运行Django网站几年。我们在大多数网页上使用以下(标准)Google Analytics代码。

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
_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>

在Django中,每次链接断开时我们都会收到一封电子邮件。最近,我们的一位用户已经生成了大量与谷歌分析相关的断开链接。错误消息看起来与此类似(其中apage是任何url):

Referrer: http://ourwebsite.com/apage/
Requested URL: /apage/.google-analytics.com/ga.js
User agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322) IP address: 127.0.0.1

根据错误消息,我怀疑问题与IE8和某些安全设置或模式有关。我试过运行IE8的Utilu IE Collection版本来重现问题,但没有运气。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我猜运算符优先级错误/怪癖,因为它看起来像

('https:' == document.location.protocol ? 'https://ssl' : 'http://www')

(在您的代码段的第8行)可能会被解析为

('https:' == (document.location.protocol ? 'https://ssl' : 'http://www'))

将评估为'https:' == 'https://ssl'false

而正确的意图似乎是

(('https:' == document.location.protocol) ? 'https://ssl' : 'http://www')

使用括号强制优先时会发生什么情况(参见上一行)?