1

几年来,我们已经成功地运行了一个 Django 站点。我们对大部分页面使用以下(标准)谷歌分析代码。

<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 版本来重现该问题,但没有运气。

任何帮助,将不胜感激。

4

1 回答 1

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')

当你用括号强制优先级时会发生什么(见上一行)?

于 2010-09-20T15:35:51.790 回答