现在的位置: 首页 > 综合 > 正文

百度空间的popup效果分析

2012年11月23日 ⁄ 综合 ⁄ 共 4339字 ⁄ 字号 评论关闭
    自从用firefox浏览器以来,就几乎养成了一个习惯,就想用WebDeveloper把一些漂亮网站的js包括css给down下来分析一下,用来学习。百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我down的js代码发出来,我分析了一部分,但是还有很多东西不明白怎么回事,没有写注释的部分,还请高手能帮我解释一下。本人属于初学,有不对的地方还请多多指教。
    在声明一条吧,此代码仅做学习用,技术版权属于百度。
    主要是一个叫做:popup.js的文件,如下:
  1/*********************************************** popup.js**************************************************/
  2
  3
  4//为数组Array添加一个push方法
  5//为数组的末尾加入一个对象
  6if(!Array.prototype.push)
  7{
  8    Array.prototype.push=function ()
  9    {
 10        var startLength=this.length;
 11        for(var i=0;i<arguments.length;i++)
 12        {
 13            this[startLength+i]=arguments[i];
 14        }

 15        return this.length;
 16     }

 17 }
;
 18
 19//对G函数的参数进行处理
 20function G()
 21{
 22    //定义一个数组用来保存参数
 23    var elements=new Array();
 24    //循环分析G中参数的内容
 25    for(var i=0;i<arguments.length;i++)
 26    {
 27        var element=arguments[i];
 28        
 29        //如果参数的类型为string,则获得以这个参数为ID的对象
 30        if(typeof element=='string')
 31        {
 32            element=document.getElementById(element);
 33        }

 34        //如果参数的长度为1
 35        if(arguments.length==1)
 36        {
 37            return element;
 38        }

 39        //将对象加入到数组的末尾
 40        elements.push(element);
 41    }
;
 42    return elements;
 43}
;
 44
 45Function.prototype.bind=function (object)
 46{
 47    var __method=this;
 48    return function ()
 49    {
 50        __method.apply(object,arguments);
 51    }
;
 52}
;
 53
 54//绑定事件
 55Function.prototype.bindAsEventListener=function (object)
 56{
 57    var __method=this;
 58    return function (event){__method.call(object,event||window.event);};
 59}
;
 60
 61
 62Object.extend=function (destination,source)
 63{
 64    for(property in source)
 65    {
 66        destination[property]=source[property];
 67    }
;
 68    return destination;
 69}
;
 70
 71
 72if(!window.Event)
 73{
 74    var Event=new Object();
 75}
;
 76
 77Object.extend(
 78    Event,
 79    
 80    {
 81        observers:false,
 82        element:function (event)
 83        {
 84            return event.target||event.srcElement;
 85        }
,
 86        
 87        isLeftClick:function (event)
 88        {
 89            return (((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));
 90        }
,
 91        
 92        pointerX:function (event)
 93        {
 94            return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));
 95        }
,
 96        
 97        pointerY:function (event)
 98        {
 99            return event.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop));
100        }
,
101        
102        stop:function (event)
103        {
104            if(event.preventDefault)
105            {
106                event.preventDefault();
107                event.stopPropagation();
108            }

109            else 
110            {
111                event.returnValue=false;
112                event.cancelBubble=true;
113            }
;
114        }
,
115        
116        findElement:function (event,tagName)
117        {
118            var element=Event.element(event);
119            while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
120                element=element.parentNode;
121            return element;
122        }
,
123        
124        _observeAndCache:function (element,name,observer,useCapture)
125        {
126            if(!this.observers)
127                this.observers=[];
128            if(element.addEventListener)
129            {
130                this.observers.push([element,name,observer,useCapture]);
131                element.addEventListener(name,observer,useCapture);
132            }

133            else if(element.attachEvent)
134            {
135                this.observers.push([element,name,observer,useCapture]);
136                element.attachEvent('on'+name,observer);
137            }
;
138        }
,
139        
140        unloadCache:function ()
141        {
142            if(!Event.observers)
143                return;
144            for(var i=0;i<Event.observers.length;i++)
145            {
146                Event.stopObserving.apply(this,Event.observers[i]);
147                Event.observers[i][0]=null;
148            }
;
149            Event.observers=false;
150        }
,
151        
152        observe:function (element,name,observer,useCapture)
153

抱歉!评论已关闭.