谁能解释一下构成Google网站优化器控制脚本的javascript?具体地说:前两行似乎是空函数,为什么第三个函数用括号括起来()?
据我所知,这个脚本基本上是写出了一个新的<script>,它可能会为A/B测试加载一些东西。
function utmx_section(){}
function utmx(){}
(function() {
var k='0634742331',d=document,l=d.location,c=d.cookie;
function f(n) {
if(c) {
var i=c.indexOf(n+'=');
if (i>-1) {
var j=c.indexOf(';',i);
return escape(c.substring(i+n.length+1,j<0?c.length:j))
}
}
}
var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;
d.write('<sc'+'ript src="'+'http'+(l.protocol=='https:'?'s://ssl':'://www')+'.google-analytics.com'+'/siteopt.js?v=1&utmxkey='+k+'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+'" type="text/javascript" charset="utf-8"></sc'+'ript>')
}
)();我尝试使用firebug调试器逐步调试,但它似乎不喜欢它。任何真知灼见都非常感谢。
非常感谢
发布于 2011-02-18 04:05:46
在匿名函数内部,它首先缩短文档的名称和cookies的名称,函数f(n)在名称n下获取cookies的值。然后,谷歌读取它的cookie,并在d.write的帮助下加载它的脚本(正如我所看到的,它们与谷歌分析有关)。这样它就可以加载On-Demand JavaScript了。实际上你一直在加载这些脚本,谷歌只需要在url中添加一些参数,所以这是这样做的-将参数保存在cookie中,下一次用于再次获取脚本。
最后回到前两行:)在谷歌加载脚本(在执行d.write之后)之后,有一些使用utmx和utmx_section的函数,以及这些函数的定义,或者更好地说是覆盖。我认为它们一开始是空的,只是因为另一个函数可以在它的真正定义之前执行它,并且空函数不会发生任何事情(并且没有JS错误),否则脚本不会工作。例如,在第一次迭代之后有一些数据,这些数据被用来对这些函数进行真正的定义,然后一切都开始工作:)
发布于 2011-02-18 05:41:20
前两个函数实际上是空的,以后可能会被覆盖。
第三个函数是匿名自执行函数。括号是一种约定,让您意识到它是自动执行的。
"f“函数在文档的cookie中查找并返回给它的值。然后将一个新的脚本标记写入文档(并从服务器请求),并将这些值作为其URL的一部分。
https://stackoverflow.com/questions/5033474
复制相似问题