手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >百度空间的popup效果分析第1/3页
百度空间的popup效果分析第1/3页
摘要:百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我down的js代码发出来,我分析了一部分,但是还有...

百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我down的js代码发出来,我分析了一部分,但是还有很多东西不明白怎么回事,没有写注释的部分,还请高手能帮我解释一下。本人属于初学,有不对的地方还请多多指教。

在声明一条吧,此代码仅做学习用,技术版权属于百度。

主要是一个叫做:popup.js的文件,如下:

/**//***********************************************popup.js**************************************************/

//为数组Array添加一个push方法

//为数组的末尾加入一个对象

if(!Array.prototype.push)

{

Array.prototype.push=function()

{

varstartLength=this.length;

for(vari=0;i<arguments.length;i++)

{

this[startLength+i]=arguments[i];

}

returnthis.length;

}

};

//对G函数的参数进行处理

functionG()

{

//定义一个数组用来保存参数

varelements=newArray();

//循环分析G中参数的内容

for(vari=0;i<arguments.length;i++)

{

varelement=arguments[i];

//如果参数的类型为string,则获得以这个参数为ID的对象

if(typeofelement=='string')

{

element=document.getElementById(element);

}

//如果参数的长度为1

if(arguments.length==1)

{

returnelement;

}

//将对象加入到数组的末尾

elements.push(element);

};

returnelements;

};

Function.prototype.bind=function(object)

{

var__method=this;

returnfunction()

{

__method.apply(object,arguments);

};

};

//绑定事件

Function.prototype.bindAsEventListener=function(object)

{

var__method=this;

returnfunction(event){__method.call(object,event||window.event);};

};

Object.extend=function(destination,source)

{

for(propertyinsource)

{

destination[property]=source[property];

};

returndestination;

};

if(!window.Event)

{

varEvent=newObject();

};

Object.extend(

Event,

{

observers:false,

element:function(event)

{

returnevent.target||event.srcElement;

},

isLeftClick:function(event)

{

return(((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));

},

pointerX:function(event)

{

returnevent.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));

},

pointerY:function(event)

{

returnevent.pageY||(event.clientY+(document.documentElement.scrollTop||document.body.scrollTop));

},

stop:function(event)

{

if(event.preventDefault)

{

event.preventDefault();

event.stopPropagation();

}

else

{

event.returnValue=false;

event.cancelBubble=true;

};

},

findElement:function(event,tagName)

{

varelement=Event.element(event);

while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))

element=element.parentNode;

returnelement;

},

_observeAndCache:function(element,name,observer,useCapture)

{

if(!this.observers)

this.observers=[];

if(element.addEventListener)

{

this.observers.push([element,name,observer,useCapture]);

element.addEventListener(name,observer,useCapture);

}

elseif(element.attachEvent)

{

this.observers.push([element,name,observer,useCapture]);

element.attachEvent('on'+name,observer);

};

},

unloadCache:function()

{

if(!Event.observers)

return;

for(vari=0;i<Event.observers.length;i++)

{

Event.stopObserving.apply(this,Event.observers[i]);

Event.observers[i][0]=null;

};

Event.observers=false;

},

observe:function(element,name,observer,useCapture)

{

varelement=G(element);

useCapture=useCapture||false;

if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.attachEvent))

name='keydown';

this._observeAndCache(element,name,observer,useCapture);

},

stopObserving:function(element,name,observer,useCapture)

{

varelement=G(element);

useCapture=useCapture||false;

if(name=='keypress'&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||element.detachEvent))

name='keydown';

if(element.removeEventListener)

{

element.removeEventListener(name,observer,useCapture);

}

elseif(element.detachEvent)

{

element.detachEvent('on'+name,observer);

};

}

}

);

当前1/3页123下一页阅读全文

【百度空间的popup效果分析第1/3页】相关文章:

可拖动窗口,附带鼠标控制渐变透明,开启关闭功能

JS实现简单路由器功能的方法

JavaScript正则表达式中的global属性的使用

javascript实现table表格隔行变色的方法

浅谈javascript中的闭包

非常酷的有农历的日历挂历!

与ClientWidth有关的一点资料

一些很实用且必用的小脚本代码第1/5页

列表内容的选择

js实现精美的图片跟随鼠标效果实例

精品推荐
分类导航