首页 > 系统概念 > Google投放广告的js的分析

Google投放广告的js的分析

2008年5月30日 发表评论 阅读评论

转载请保留本站链接 http://www.aslibra.com/

大家平时见到google的广告太多了,但有没有兴趣知道一下它的运行过程呢?

下面我们一起来看看这个广告代码的执行过程,以及其中的一些精彩内容。
阿权(hqlulu)平时也会投放google的广告,不过帐户还是$0.00,呵呵。
今天特意想研究一下它的运行过程,来给大家分享一下。

我们先看看下面的代码,是通过google的设置得到的:

<script type="text/j avascript"><!--<br />google_ad_client = "pub-2063594891864588";<br />google_ad_width = 728;<br />google_ad_height = 90;<br />google_ad_format = "728x90_as";<br />google_ad_type = "text_image";<br />google_ad_channel = "";<br />google_color_border = "E6E6E6";<br />google_color_bg = "E6E6E6";<br />google_color_link = "000000";<br />google_color_text = "333333";<br />google_color_url = "666666";<br />//--></script><br /><script type="text/j avascript"<br /> src="http://pagead2.googlesyndication.com/pagead/show_ads.js"><br /></script><br />

明显,先设置一些参数,再调用该js文件,完成广告的投放。
下面把show_ads.js下载回来,我们分析一下:

首先就让我惊讶的是,文件里面首先就是一个这样的结构:

(function(){……})()

我特意发贴问了一下,谢谢mozart0给了他的看法,再次总结一下:
首先,从最后一个括号看出来,这个是调用一个对象,而这个对象就是 function(){……} 建立后返回的
mozart0说:“直观的好处是把几条需要顺序执行的语句组织成一个单元,使逻辑清晰,又不用为它取名字,可能出于节约的考虑:该匿名函数像一个临时变量,执行后可以被立即销毁,当然连同其中的局部变量”
总体而言,就是建立了一个对象,并且执行它,同时,销毁了一切,一定程度实现了对对象的保护和保密

(A)() 执行效果:先定义A对象,然后执行A对象,执行完毕,A对象就被销毁了

这个是一个不错的方法,值得大家学习借鉴。

好了,我们看看“……”里面的代码,看完一遍就知道它是做了什么。
我整理了一下,按层次结构排列好(这个过程花费的时间也不少呢),没有修改里面的代码,只是加了注释和层次关系的整理。

大体执行过程为:

<br />01 定义字符串操作函数,往URL后添加各种参数 c(b,a) 等<br />02 定义收集用户端信息的函数 function D(b,a)<br />03 定义输出广告代码的函数function G(b,a,d)<br />04 定义对象重置的函数function F(b)<br />05 定义添加各种参数到URL的函数function A()<br />06 定义屏幕信息检测函数function x(b,a)<br />07 定义页面初始化函数function E()<br />08 运行初始化函数<br />09 处理应该带上的参数<br />10 收集客户端信息<br />11 按指定的方式输出广告代码<br />12 对象重置<br />

可能因为技术上的问题,这段js代码里面的函数名称都是很奇怪的,为了增加用户查看的难度吧?
在这里仅列举几个函数,其余见后面附上的完整代码

1 往URL上添加参数

<br />//如果值存在,则在广告链接后面加上参数<br />function c(b,a){<br />if(a){<br />window.google_ad_url+="&"+b+"="+a<br />}<br />}

2 取得客户端信息

<br />//取得浏览器的参数 &#91;执行步骤:03&#93;<br />//这个是属于用户调查啦,也没收集多少隐私吧,呵呵<br />function D(b,a){<br />var d=b.screen,g=navigator.javaEnabled(),e=-a.getTimezoneOffset();<br />//用户浏览器属性<br />if(d){<br />c("u_h",d.height);<br />c("u_w",d.width);<br />c("u_ah",d.availHeight);<br />c("u_aw",d.availWidth);<br />c("u_cd",d.colorDepth)<br />}<br />//用户时区<br />c("u_tz",e);<br />//用户历史记录长度<br />c("u_his",history.length);<br />//用户浏览器对java的设置<br />c("u_java",g);<br />//用户plugins长度<br />if(navigator.plugins){<br />c("u_nplug",navigator.plugins.length)<br />}<br />//用户mimeTypes长度<br />if(navigator.mimeTypes){<br />c("u_nmime",navigator.mimeTypes.length)<br />}<br />}<br />

3 输出广告代码

<br />//输出广告代码到页面中 &#91;执行步骤:04&#93;<br />function G(b,a,d){<br />d=d.substring(0,1000);<br />//用正则表达式去掉末尾的 %+单个字符<br />d=d.replace(/%w?$/,"");<br />//按不同的广告类型,输出广告代码<br />//m函数是给数值两边加上引号<br />if(b.google_ad_output=="js"&&(b.google_ad_request_done&#124;&#124;b.google_radlink_request_done)){<br />//把广告代码的地址输出,加载该文件<br />a.write(&#039;<script language="JavaScript1.1" src=&#039;+m(d)+"></script>")<br />}else if(b.google_ad_output=="html"){<br />if(b.name!="google_ads_frame"){<br />a.write(&#039;<iframe name="google_ads_frame" width=&#039;+m(b.google_ad_width)+" height="+m(b.google_ad_height)+" frameborder="+m(b.google_ad_frameborder)+" src="+m(d)+&#039; marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no">&#039;);<br />a.write("</iframe>")<br />}<br />}else if(b.google_ad_output=="textlink"){<br />a.write(&#039;<script language="JavaScript1.1" src=&#039;+m(d)+"></script>")<br />}<br />}<br />

下载:完整理代码及注释

转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:Google投放广告的js的分析
本文地址:http://www.woyigui.cn/2008/05/30/Google-advertising-of-the-js/

分类: 系统概念 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
*