javascript - Google 网站优化器控件 Javascript

标签 javascript

有人可以解释构成 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 之后),有一些函数使用 utmxutmx_section,以及这些函数的定义,或者更确切地说是覆盖。我认为它们一开始是空的只是因为另一个函数可以在它的真正定义之前执行它,并且空函数不会发生任何事情(也没有 JS 错误),否则脚本将无法运行。例如。第一次迭代后有一些数据,用于对这些函数进行真正的定义,一切都开始工作:)

关于javascript - Google 网站优化器控件 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5033474/

相关文章:

Javascript在循环中的特定数量的字母后添加字母

javascript - new 运算符在哪里创建新对象?

javascript - 在请求之前检测 UserMedia 权限

javascript - 找不到模块 : Error: Cannot resolve module 'components/app' . webpack + reactjs 问题

javascript - 如何使用 jQuery UI Accordion 访问单击的标题 (h3) 的 ID?

javascript - Angular Js如何读取其中包含html元素的JSON数据

javascript - 我们如何实现 CssClass active on link Button Click

javascript - 隐藏div而不先显示它

javascript - 尝试将 MediaSource 对象附加为 HTML5 视频标签的源时出现 "Not allowed to load local resource"错误

javascript - 如何在不改变线长的情况下 reshape 多边形