2010-01-06 12 views
6

Los siguientes son algunos de los fragmentos "extraños" que están en la página principal de Google .. (google.com/ncr que es)¿Podría alguien explicar la página de inicio de 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"," 

Y luego está esto:

<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>"}}}) 

Aquí hay una muy uno interesante:

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

¿Por qué escapan de todo?

Esto parece bastante auto explainatory:

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

apreciaría si usted puede explicar cualquiera de los anteriores. Gracias!

+2

¿Por qué el voto a favor? ¡Estas me parecen preguntas legítimas y algo interesantes! –

Respuesta

9

Los primeros ejemplos son básicamente minificación (eliminación de espacios en blanco, uso de nombres cortos de variables, etc.) para reducir el tamaño de la página.

cuanto a:

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

La página tiene en realidad:

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

Se ha &amp; porque & debe estar representado de esa manera en HTML (excepto en los bloques CDATA, que atribuyen valores no son nunca) . Por lo que significa:

window.lol && lol(); 

que significa:

Si el objeto ventana tiene una propiedad llamada lol, ejecutar esa propiedad como una función.

El uso de la window objeto explícito en el primer caso es dejar que erroring si la propiedad no está definida, y la falta de usarlo en el segundo caso es el de reducir el tamaño de la página (ya que window está implícito al llamar a una función que no es explícitamente un método de otro objeto).

+0

. Entendí el lol pero de todos modos ¡gracias por tu explicación! – MrSplashyPants

4

No puedo dar una respuesta completa, pero el escape sin fin probablemente sea para navegadores más antiguos con compatibilidad inadecuada de juegos de caracteres.

La razón, por supuesto, que está tan condensada es hacer que cargue realmente rápido.

editar: No llamaría al código tan obscurado como extremadamente optimizado.

+0

Me gusta esto porque es simple y dulce. – Hazior

0

Probablemente no sea la herramienta utilizada para la página de inicio de google, pero el closure compiler de Google podría producir este tipo de galimatías.

+0

Probablemente está inspirado en sus técnicas de optimización en lugar de lo que originalmente usaban – ternaryOperator

Cuestiones relacionadas