网络编程
位置:首页>> 网络编程>> 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
投稿

猜你喜欢

  • 一般情况下,网站的图片代码是这样的。<img src="./images/test.jpg" 
  • 在印刷排版中“point”是一个绝对的单位,它等于 1/72 英寸。可以用尺子丈量的,物理的英寸。但在CSS中pt的含义
  • 备份还原数据库备份数据库企业管理器--或用SQL语句(完全备份):backup database 数据库 to
  • 怎样才能将在表A取得的数据插入另一个表B中?(1)对于表A和表B两个表结构完全相同的话〔字段个数,相应字段的类型等等〕,可以使用 inser
  • 今天同事 明城 在项目中碰到一个 BUG,代码具体如下:<!DOCTYPE html PUBLIC "-//W3C//DTD
  • 大家做网站,特别是自己写的代码,常常担心被一些黑客入侵服务器,从而导致网站代码被盗,给自己带来一些损失。那么我们怎么样做,就算黑客盗了你的代
  • 很多设计师都会遇到这样的问题。一个产品会有很多种方式去包装,其中包括很多功能和很多体验。功能越多会被认为越实用,体验越好会被认为越方便。方便
  • 如何让你的CSS代码更具有组织性和易维护性,为什么你的样式表总是臃肿和混乱的?有些时候是源于一开始书写时的混乱和草率,有时候也是因为后期的维
  • 本XML系列教程将分三部分发布,到最后一期我们将拥有一个功能全面,更加友好的XML菜单。本教程这个第一期涉及到了一些XML的基础知识。大家都
  • JQuery Solar System 是一个用JQuery写的东西,效果真是cool ! 没想到使用Javascript 也可以做到这种效
  • 由于连续的字符(字母、符号、数字)在默认情况下是不换行的,可能会破坏整个界面布局。那如何解决这个问题呢?在 IE 和 Safari 1.3+
  • 最近经常使用字符串查找功能。 包括 1、全匹配查找字符串 2、模糊查找字符串 CHARINDEX 和 PATINDEX 函数都返回指定模式的
  • 前两天写了一篇《浅谈网站用户粘性的含义》的文章,有些个别网友问可否谈谈怎么样加强用户粘性的问题?虽然对此本人没有系统的理论做以支撑,但是既然
  •  家里没网络,实在无聊,玩游戏都没味道,只好玩CSS。这个东西实在没什么技术含量在里面,纯属打发时间。简单说明:一张图片放在底层,
  • 因为要用到过滤一组中重复的数据,使之变成没有重复的一组数据的功能,百度了一下,居然有朋友乱写,而且比较多,都没有认真测试过,只对字符可以,但
  • 一个Link被点击之后有可能是打开新窗口,也有可能是刷新当前窗口,这两种打开方式一直并存于互联网中。 作为测试对象,于25日将打开方式改为‘
  • 实体有五种预定义的XML实体,HTML编码者应该熟悉。XML文档中的字符&、<、>、"和'被分别表示为
  • 假如读者已经熟悉了ASP 2.0,并正在寻找3.0版本中的实际改变的列表,那么将在下面发现这些信息。假如读者是一个ASP的初学者,可以越过本
  • 我看见朋友可以把数据库的记录输出到页面表格上去,觉得很有用。这是怎么做的啊?见下:dbtable.asp<html><he
  • 通常,在完成了一件网页设计后,设计师的无知都会显露无遗而备受指责。他们把创建网页代码的繁重工作都留给了程序员们。这种现象不只出现在网络开发行
手机版 网络编程 asp之家 www.aspxhome.com