有人可以解释构成 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 调试器逐步完成,但它似乎不喜欢它。非常感谢任何见解。
非常感谢
最佳答案
在匿名函数中,它首先缩短了文档的名称和其中的 cookie,函数 f(n)
获取值 cookie在名称 n
下。然后谷歌读取它的 cookies 并在 d.write
的帮助下加载它的脚本(我看到它们与 Google Analytic 相关)。这样它就变成了On-Demand JavaScript loading... 实际上你一直在加载这些脚本,Google 只需要在 url 中添加一些额外的参数,所以这是这样做的 - 将参数保存在 cookie 中,下次用于再次获取脚本。
最后回到前两行魔术:)在 Google 加载其脚本后(在执行 d.write
之后),有一些函数使用 utmx
和 utmx_section
,以及这些函数的定义,或者更确切地说是覆盖。我认为它们一开始是空的只是因为另一个函数可以在它的真正定义之前执行它,并且空函数不会发生任何事情(也没有 JS 错误),否则脚本将无法运行。例如。第一次迭代后有一些数据,用于对这些函数进行真正的定义,一切都开始工作:)
关于javascript - Google 网站优化器控件 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033474/