2010-01-06 2 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"," 

Google 홈페이지에있는 "이상한"조각의 일부 그리고 다음이있다 :

<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()\" 

왜 모든 것을 벗어나 죠? 위의 설명 할 수있는 경우

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

그것을 감사합니다 :

이 꽤 자기 explainatory 보인다. 감사합니다.

+2

왜 downvote? 이것들은 나에게 정당하고 다소 흥미로운 질문처럼 보입니다! –

답변

9

초기 예제는 기본적으로 축소 (공백 제거, 짧은 변수 이름 사용 등)하여 페이지 크기를 줄입니다.

대한 AS :

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

페이지가 실제로 있습니다

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

그것은 &amp;& 때문에 (결코 속성 값을하지 않습니다 CDATA 블록 제외) HTML에서 그런 식으로 표현해야했다 . 그래서 의미

window.lol && lol(); 

의미 : 윈도우 오브젝트 함수로서 해당 속성을 실행 lol라는 속성을 갖는다

경우.

속성이 정의되지 않으며, 두 번째 인스턴스에서 사용의 부족이 페이지의 크기를 줄일 경우 첫 번째 인스턴스에서 명시 적 window 객체의 사용이 erroring 중지하는 것입니다

(이후 window 명시 적으로 다른 객체의 메서드가 아닌 함수를 호출 할 때 암시됩니다.

+0

나는 그걸 이해했지만 어쨌든 설명해 주셔서 감사합니다! – MrSplashyPants

4

전적으로 답변을 드릴 수는 없지만 부적절한 문자 집합 지원을 사용하는 구형 브라우저는 끝없이 이스케이프 처리됩니다.

물론 응축되는 이유는 그것이 정말로 빠르게 움직이는 것입니다.

편집 : 매우 최적화 된만큼 코드를 모호하지 않습니다.

+0

간단하고 달콤하기 때문에 나는 이것을 좋아한다. – Hazior

0

아마 Google의 홈페이지에 사용 된 도구가 아니지만 Google의 closure compiler은 이런 종류의 횡설수설을 만들어 낼 수 있습니다.

+0

아마도 그들은 원래 최적화 기법에 영감을 얻었을 것입니다. – ternaryOperator

관련 문제