2010-01-06 35 views
6

以下是一些“怪异”的片段是在谷歌主页的..(google.com/ncr那是)有人可以解释一下Google的主页JS吗?

({"s":{"#":[{"h":"ad","g":["Google","E4hE342CDKOgAFYm15AW","1",0,0,1]},{"h":"p","g":["ghead"," 

,0]},{"h":"p","g":["footer"," 

",0]},{"h":"p","g":["body"," 

",0]},{"h":"p","g":["xjsi"," 

然后还有这个:

<script>if(google.y)google.y.first=[];if(google.y)google.y.first=[];if(!google.xjs){google.dstr=[];google.rein=[];window.setTimeout(function(){var a=document.createElement(\"script\");a.src=\"/extern_js/f/CgJlbiswCjhMQAgsKzAOOAosKzAWOBQsKzAXOAQsKzAYOAQsKzAZOA0sKzAdOBssKzAhOCtAASwrMCU4yYgBLCswJjgILCswJzgCLCswKjgCLCswKzgJLCswPDgCLCswQDgFLCswRDgALCswRTgALA/JqRMsHQD1vo.js\";(document.getElementById(\"xjsd\")||document.body).appendChild(a);if(google.timers&&google.timers.load.t)google.timers.load.t.xjsls=(new Date).getTime();},0);\u000agoogle.xjs=1};google.y.first.push(function(){google.ac.m=1;google.ac.b=true;google.ac.i(document.f,document.f.q,'','','OvaKevzR5YKoeJu2mSddyQ');(function(){\u000avar a=window.google.f={};a.f=1;a.s=1;a.a=(new Date).getTime();google.rein.push(function(){a.f=1;a.s=1;a.a=(new Date).getTime()});google.dstr.push(function(){google.fade=null});function m(b,g,e,f){var d,c=[],i=[];for(var h=0,k;k=b[h++];){var l=document.getElementById(k);if(l)c.push(l)}for(var h=0,j;j=g[h++];){var o=n(j[0],j[1]);while(d=o.pop())c.push(d)}while(d=c.pop())i.push([d,\"opacity\",e,f,0,\"\"]);return i}function n(b,\u000ag){var e=[];for(var f=document.getElementsByTagName(b),d=0,c=f[d];c=f[d++];)if(c.className==g)e.push(c);return e}google.fade=function(b){b=b||window.event;var g=1;if(b&&b.type==\"mousemove\"){var e=b.clientX,f=b.clientY;g=a.x||a.y?Math.abs(a.x-e)+Math.abs(a.y-f):0;a.x=e;a.y=f}var d=(new Date).getTime(),c=d-a.a;if(google.fx&&g&&c>602)if(a.f){a.f=0;var i=[\"fctr\",\"ghead\",\u000a\"pmocntr\",\"sbl\",\"tba\",\"tbe\"],h=[[\"span\",\"fade\"],[\"div\",\"gbh\"]];google.fx.animate(602,m(i,h,0,1))}};\u000a})();\u000a});if(google.j&&google.j.en&&google.j.xi){window.setTimeout(google.j.xi,0);google.fade=null;}</script>",0]},{"h":"zz","g":[0,1]}]},"c":{"1":{"cc":[],"co":["ghead","body","footer","xjsi"],"pc":[],"nb":0,"css":"td{line-height:.8em;}.gac_m td{line-height:17px;}form{margin-bottom:20px;}body,td,a,p,.h{font-family:arial,sans-serif}.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}.lst{font:17px arial,sans-serif;margin-bottom:.2em;vertical-align:bottom;}input{font-family:inherit}.lsb,.gac_sb{font-size:15px;height:1.85em!important;margin:.2em;}#fctr,#ghead,#pmocntr,#sbl,#tba,#tbe,.fade{opacity:0;}#fctr,#ghead,#pmocntr,#sbl,#tba,#tbe,.fade{background:#fff;}#gbar{float:left;height:22px}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}#gbs,.gbm{background:#fff;left:0;position:absolute;text-align:left;visibility:hidden;z-index:1000}.gbm{border:1px solid;border-color:#c9d7f1 #36C#36C#a2bae7;z-index:1001}#guser{padding-bottom:7px !important;text-align:right}#gbar,#guser{font-size:13px;padding-top:1px !important}.gb1,.gb3,.gb3i,.gb3f{zoom:1;margin-right:.5em}.gb2,.gb2i,.gb2f{display:block;padding:.2em .5em}a.gb1,a.gb2,a.gb3,a.gb4{color:#00c !important}.gb2,.gb2i,.gb2f,.gb3,.gb3i,.gb3f{text-decoration:none}a.gb2:hover{background:#36c;color:#fff !important}","main":"<div id=ghead></div><span id=body></span><span id=footer></span><span id=xjsi></span>"}}}) 

这里是一个非常有趣的一个:

onload=\"window.lol&amp;&amp;lol()\" 

他们为什么逃避一切?

这似乎很自我explainatory:

onblur=\"google&amp;&amp;google.fade&amp;&amp;google.fade()\" 

欣赏它,如果你能解释上述任何。 谢谢!

+2

为什么downvote?这些对我来说看起来像是合法而有趣的问题! – 2010-01-06 13:09:39

回答

9

早期的例子基本上只是缩小(删除空白,使用短变量名等),以减小页面的大小。

至于:

onload=\"window.lol&amp;&amp;lol()\" 

页面实际上有:

onload="window.lol&amp;&amp;lol()" 

&amp;因为&必须代表了HTML这种方式(除了在CDATA块,其属性值永远是) 。因此,这意味着:

window.lol && lol(); 

这意味着:

如果窗口对象有一个名为lol财产,执行该财产的功能。

在一审使用显式window对象是阻止它示数,如果该属性没有定义,以及缺乏在二审中使用它是为了减少页面的大小(因为window在调用一个并不明确作为另一个对象的方法的函数时是隐含的)。

+0

我明白了大声笑,但谢谢你的解释,无论如何! – MrSplashyPants 2010-01-20 15:37:32

4

我不能给出一个完整的答案,但无尽的转义可能是为了迎合不合适的字符集支持的旧版浏览器。

当然,这是如此精简的原因是使其加载速度非常快。

编辑: 我不会将代码称为已被极度优化的代码。

+0

我喜欢这个,因为它简单而甜美。 – Hazior 2010-01-06 14:18:00

0

可能不是用于谷歌主页的工具,但谷歌的closure compiler可能会产生这种类型的乱码。

+0

它可能是由他们的优化技术而非他们最初使用的原因 – ternaryOperator 2010-01-06 13:26:09