|
在聲明一條吧,此代碼僅做學習用,技術版權屬于百度。
主要是一個叫做: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));
},
pointerY:function (event)
{
return event.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)
{
var element=Event.element(event);
while(element.parentNode&&(!element.tagName||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;
return element;
},
_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);
}
else if(element.attachEvent)
{
this.observers.push([element,name,observer,useCapture]);
element.attachEvent('on'+name,observer);
};
},
unloadCache:function ()
{
if(!Event.observers)
return;
for(var i=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)
{
var element=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)
{
var element=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);
}
else if(element.detachEvent)
{
element.detachEvent('on'+name,observer);
};
}
}
);
JavaScript技術:百度空間的popup效果分析第1/3頁,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。