学习google个性化主页收获

google的个性化主页http://www.google.com/ig?hl=zh-CN ,可以自己定制,不错的用户体验,于是我看了他的js代码。发现很多东西,写出来分享一下,也让自己养成做笔记的习惯。
装备:
1、很强的调试工具:firefox2.0+jsview+dom查看器+firebug+web developer
2、免费的格式化js代码:JavaScript Code Improver v1.0 BETA 下载地址:http://jcay.com/javascript-code-improver.html
3、免费的js代码压缩工具:http://www.saltstorm.net/downloads/esc/ESC.zip
首先要找到js文件,用firefox套装很容易办到。
然后看代码了,但是google的js很变态的,都一个一个字符接到一块了,没法阅读,所以用JavaScript Code Improver v1.0 BETA 格式化,效果不错,而且是免费的。(不象万能格式化源码那么恶,破坏系统)。
贴一些出来看看(格式化过的)
function _gel(a)
{
    return document.getElementById?document.getElementById(a):null
}
function _gelstn(a)
{
    if(a=="*"&&document.all)return document.all;
    return document.getElementsByTagName?document.getElementsByTagName(a):[]
}

善于用短函数名和变量名、?表达式,很简洁,压缩后体积更小了。
里边还有很多处理字符串的函数,看了让我觉得这方面太重要了,看下面:(我后来加的注释)
//获取get变量
function _args()
{//document.location.search是一个对象,当前url中?之后的字符串(包含?)
//document.location是一个对象,等于字符串(当前完整的url)
//document.location.search.substring(1)为去掉?之后的url
    var a={    }    ,b=document.location.search.substring(1),c=b.split("&");
    for(var d=0;d<c.length;d++)
    {
        var e=c[d].indexOf("=");
        if(e==-1)continue;
        var f=c[d].substring(0,e),g=c[d].substring(e+1);
        g=g.replace(//+/g," ");
        a[f]=_unesc(g)
    }
    return a
}

我为了搞清楚document.location.search.substring(1),查了很多资料,得到上面的注释,本人习惯是亲自验证一下,于是写了个html,本来想用elert弹出截取后的字符串得了,但是想想看了那么多ajax和dom,不用浪费了,最后就用<div id="dfdf"></div>来动态接收。
很不幸,出错了firebug提示re没有属性,原来是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">

function _gel(a)
{
    return document.getElementById?document.getElementById(a):nulddl;
}
var re=_gel('dfdf');
var h=document.location;
var hh=h.search;
var hhh=hh.substr(1);
function loadh() {
var a,b,c;
a=document.createElement('div');
b=document.createElement('div');
c=document.createElement('div');
a.appendChild(document.createTextNode(h));
b.appendChild(document.createTextNode(hh));
c.appendChild(document.createTextNode(hhh));
re.appendChild(a);
re.appendChild(b);
re.appendChild(c);
}
window.οnlοad=loadh;
</script>
</head>
<body>
<div id="dfdf"></div>
</body>
</html>

找了半天没搞定,后来无意中把js部分移到最后,ok了,才发现全局变量re搞的鬼,<div id="dfdf"><div>没下载呢,怎么可能document.getElementById得到他呢,开始还以为是window.onload出错,*_*,把 var re=_gel('dfdf');放到loadh里就好了,才能达到window.onload的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值