网络编程
位置:首页>> 网络编程>> JavaScript>> Google投放广告的js的分析

Google投放广告的js的分析

作者:hqlulu 来源:经典论坛 发布时间:2008-07-15 11:34:00 

标签:google,代码,广告

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

下面我们一起来看看这个广告代码的执行过程,以及其中的一些精彩内容。

阿权(hqlulu)平时也会投放google的广告,不过帐户还是$0.00,呵呵。

今天特意想研究一下它的运行过程,来给大家分享一下。

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

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

明显,先设置一些参数,再调用该js文件,完成广告的投放。

下面把show_ads.js下载回来,我们分析一下:

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

(function(){……})()

我特意发贴问了一下,谢谢mozart0给了他的看法,再次总结一下:

首先,从最后一个括号看出来,这个是调用一个对象,而这个对象就是 function(){……} 建立后返回的;

mozart0说:“直观的好处是把几条需要顺序执行的语句组织成一个单元,使逻辑清晰,又不用为它取名字,可能出于节约的考虑:该匿名函数像一个临时变量,执行后可以被立即销毁,当然连同其中的局部变量”

总体而言,就是建立了一个对象,并且执行它,同时,销毁了一切,一定程度实现了对对象的保护和保密

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

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

好了,我们看看“……”里面的代码,看完一遍就知道它是做了什么。

我整理了一下,按层次结构排列好(这个过程花费的时间也不少呢),没有修改里面的代码,只是加了注释和层次关系的整理。

大体执行过程为:

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

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

1 往URL上添加参数

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

2 取得客户端信息

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

3 输出广告代码

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

整个js文件整理之后的代码为:

下载地址:show_ads_2.rar (3.54 KB)

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com