为博客换了些装备与添加上一些功能,灵感来自于昨天paperen我看的那些博客,都是基于WordPress开发的了,当然paperen我也不会错过扒人家的东西来看看这个好机会(其实同大家偷瓜偷菜不一个样),配合opera浏览器的开发者工具去挖就真是很方便了(大家如果用过就明白了)?

201001201263978222?

话说paperen看中了那个滑回顶部的小功能,找了它的js文件,弄过来就亲自测试起来了,现在paperen的博客都添加上这个功能了(至于赞与踩那个功能paperen我可没抄别人的东西啊)?

代码我都贴出来吧,也不是很长。?

(function(){
?function goTop(acceleration,time){
??acceleration=acceleration||0.1;//判断变量是否已定义,如果没有定义就给他一个初始值
??time=time||16;
??var dx=0;
??var dy=0;
??var bx=0;
??var by=0;
??var wx=0;
??var wy=0;
??if(document.documentElement){
???dx=document.documentElement.scrollLeft||0;
???dy=document.documentElement.scrollTop||0;
??}
??if(document.body){
???bx=document.body.scrollLeft||0;
???by=document.body.scrollTop||0;
??}
??//一个是XHTML的
??//一个是HTML的
??//为了兼容都写上
??var wx=window.scrollX||0;
??var wy=window.scrollY||0;
??var x=Math.max(wx,Math.max(bx,dx));
??var y=Math.max(wy,Math.max(by,dy));
??var speed=1+acceleration;
??window.scrollTo(Math.floor(x/speed),Math.floor(y/speed));
??if(x>0||y>0){
???var invokeFunction="MGJS.goTop("+acceleration+", "+time+")";
???window.setTimeout(invokeFunction,time);
??}
?}
?window['MGJS']={};//window.MGJS=new Object();
?window['MGJS']['goTop']=goTop;//window.MGJS.goTop=goTop;
})()

一开始paperen我也有些地方不太明白(上面自己都加了适当的注释了)确实自己的JavaScript水平不咋的,特别是对于后两行代码,还有最后那个(),到qq群问了一下,高手们的回答的确是一针见血的……?

“为什么后面还有个()?”---因为买了东西要用,建了函数要运行,因为前面没口,所以开个口,就是马上就会执行这个函数,()是函数是马达,没马达不走,前面是一盆水 后面开口水就流。?

(function(){
???? alert("ddd");???
})() //这样直接就执行了

现在来看看这个()还是没搞明白,就是说一开始就运行了goTop这个函数?显然不是啦,我用alert测试过了。不明白的还是得保留,以后或者就会有启发了。但是对于这段js的思想还是要看懂的。?

话就话是个回到顶部的js,但是仔细看看代码其实功能是回到(0,0),不单单是y轴,x轴也归零了,很全面的一个函数。然后自己参照一下它的思路也写了一个相当单纯滴,当然也要show一下,不然怎能显出我比较牛的水平呢,大家说是吧??

function goTop_beta(){
?var speed=1.2;
?var time=16;
?var dy=0;
?var by=0;
?var wy=0;
?if(document.documentElement){ dy=document.documentElement.scrollTop||0; }
?wy=window.scrollY||0;
?var y=Math.max(wy,Math.max(by,dy));
?window.scrollTo(0,Math.floor(y/speed));
?if(y>0){
??setTimeout("goTop_beta()",time);
?}
}

描述一下功能:点击回到顶部后,如果x轴有拖动条且拖动条距离左边有数值的话,速回0处(水平方向上),而y轴的效果与上面那个一样,还有我这个只适用于xhtml,那么在调用处加上onclick="goTop_beta()"就可以了。就不用创建那个MGJS对象。?

大家可以自己拷贝代码测试一下,也是个挺不错的功能。?

还有大家可以看看这个,关于js的||与&&运算不错的一课。

http://www.javaeye.com/topic/462449