百度空間的popup效果分析第1/3頁
2024-05-06 14:17:00
供稿:網友
百度空間的彈出窗口和拖拽效果,看起來挺不錯的。現在很多知名網站都是用的這樣的技術。下面把我down的js代碼發出來,我分析了一部分,但是還有很多東西不明白怎么回事,沒有寫注釋的部分,還請高手能幫我解釋一下。本人屬于初學,有不對的地方還請多多指教。
在聲明一條吧,此代碼僅做學習用,技術版權屬于百度。
主要是一個叫做:popup.js的文件,如下:
/**//*********************************************** popup.js**************************************************/
//為數組Array添加一個push方法
//為數組的末尾加入一個對象
if(!Array.prototype.push)
{
Array.prototype.push=function ()
{
var startLength=this.length;
for(var i=0;i<arguments.length;i++)
{
this[startLength+i]=arguments[i];
}
return this.length;
}
};
//對G函數的參數進行處理
function G()
{
//定義一個數組用來保存參數
var elements=new Array();
//循環分析G中參數的內容
for(var i=0;i<arguments.length;i++)
{
var element=arguments[i];
//如果參數的類型為string,則獲得以這個參數為ID的對象
if(typeof element=='string')
{
element=document.getElementById(element);
}
//如果參數的長度為1
if(arguments.length==1)
{
return element;
}
//將對象加入到數組的末尾
elements.push(element);
};
return elements;
};
Function.prototype.bind=function (object)
{
var __method=this;
return function ()
{
__method.apply(object,arguments);
};
};
//綁定事件
Function.prototype.bindAsEventListener=function (object)
{
var __method=this;
return function (event){__method.call(object,event||window.event);};
};
Object.extend=function (destination,source)
{
for(property in source)
{
destination[property]=source[property];
};
return destination;
};
if(!window.Event)
{
var Event=new Object();
};
Object.extend(
Event,
{
observers:false,
element:function (event)
{
return event.target||event.srcElement;
},
isLeftClick:function (event)
{
return (((event.which)&&(event.which==1))||((event.button)&&(event.button==1)));
},
pointerX:function (event)
{
return event.pageX||(event.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));