首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google网站优化器控件Javascript

Google网站优化器控件Javascript
EN

Stack Overflow用户
提问于 2011-02-18 03:15:41
回答 2查看 365关注 0票数 1

谁能解释一下构成Google网站优化器控制脚本的javascript?具体地说:前两行似乎是空函数,为什么第三个函数用括号括起来()?

据我所知,这个脚本基本上是写出了一个新的<script>,它可能会为A/B测试加载一些东西。

代码语言:javascript
复制
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调试器逐步调试,但它似乎不喜欢它。任何真知灼见都非常感谢。

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-18 04:05:46

在匿名函数内部,它首先缩短文档的名称和cookies的名称,函数f(n)在名称n下获取cookies的值。然后,谷歌读取它的cookie,并在d.write的帮助下加载它的脚本(正如我所看到的,它们与谷歌分析有关)。这样它就可以加载On-Demand JavaScript了。实际上你一直在加载这些脚本,谷歌只需要在url中添加一些参数,所以这是这样做的-将参数保存在cookie中,下一次用于再次获取脚本。

最后回到前两行:)在谷歌加载脚本(在执行d.write之后)之后,有一些使用utmxutmx_section的函数,以及这些函数的定义,或者更好地说是覆盖。我认为它们一开始是空的,只是因为另一个函数可以在它的真正定义之前执行它,并且空函数不会发生任何事情(并且没有JS错误),否则脚本不会工作。例如,在第一次迭代之后有一些数据,这些数据被用来对这些函数进行真正的定义,然后一切都开始工作:)

票数 1
EN

Stack Overflow用户

发布于 2011-02-18 05:41:20

前两个函数实际上是空的,以后可能会被覆盖。

第三个函数是匿名自执行函数。括号是一种约定,让您意识到它是自动执行的。

"f“函数在文档的cookie中查找并返回给它的值。然后将一个新的脚本标记写入文档(并从服务器请求),并将这些值作为其URL的一部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5033474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档