百度空间的popup效果分析第1/3页_Javascript教程-查字典教程网
百度空间的popup效果分析第1/3页
百度空间的popup效果分析第1/3页
发布时间:2016-12-30 来源:查字典编辑
摘要:百度空间的弹出窗口和拖拽效果,看起来挺不错的。现在很多知名网站都是用的这样的技术。下面把我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下一页阅读全文

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类