//Popup class 显示弹出窗口,简单整理了一下。 /* // 示例用法 function ShowIframe() //显示iframe { var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:500}); pop.setContent("contentUrl","链接地址"); pop.setContent("title","框架iframe示例"); pop.build(); pop.show(); } function ShowHtmlString() //显示html { var strHtml = "
ds dads dadas dasd dadasd dsadads
";
var pop=new Popup({ contentType:2,isReloadOnClose:false,width:340,height:300});
pop.setContent("contentHtml",strHtml);
pop.setContent("title","字符串示例html");
pop.build();
pop.show();
}
function ShowAlert() //显示警示对话框
{
var pop=new Popup({ contentType:4,isReloadOnClose:true,width:340,height:80});
pop.setContent("title","警告框示例alert");
pop.setContent("alertCon","alert对话框的内容");
pop.build();
pop.show();
}
function ShowConfirm() //显示确认对话框
{
var pop=new Popup({ contentType:3,isReloadOnClose:false,width:340,height:80});
pop.setContent("title","对话框示例confirm");
pop.setContent("confirmCon","confirm对话框的内容");
pop.setContent("callBack",ShowCallBack); //回调函数
pop.setContent("parameter",{id:"divCall",str:"点击确定后显示的字符串",obj:pop});
pop.build();
pop.show();
}
function ShowCallBack(para) //回调函数
{
var o_pop = para["obj"]
var obj = document.getElementById(para["id"]);
o_pop.close();
obj.innerText = para["str"];
}
*/
if(!Array.prototype.push){
Array.prototype.push=function(){
var startLength=this.length;
for(var i=0;i
this[startLength+i]=arguments[i]; return this.length; } }; function G(){ var elements=new Array(); for(var i=0;i var element=arguments[i]; if(typeof element=='string') element=document.getElementById(element); 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.observe(window,'unload',Event.unloadCache,false); var Class=function(){ var _class=function(){ this.initialize.apply(this,arguments) }; for(i=0;i superClass=arguments[i];for(member in superClass.prototype){_class.prototype[member]=superClass.prototype[member]} }; _class.child=function(){return new Class(this)}; _class.extend=function(f){for(property in f){_class.prototype[property]=f[property]}}; return _class }; function space(flag){ if(flag=="begin"){ var ele=document.getElementById("ft"); if(typeof(ele)!="undefined"&&ele!=null) ele.id="ft_popup"; ele=document.getElementById("usrbar"); if(typeof(ele)!="undefined"&&ele!=null) ele.id="usrbar_popup" } else if(flag=="end"){ var ele=document.getElementById("ft_popup"); if(typeof(ele)!="undefined"&&ele!=null)ele.id="ft"; ele=document.getElementById("usrbar_popup"); if(typeof(ele)!="undefined"&&ele!=null)ele.id="usrbar"} };
一下是popup类 // Popup Class begin.... var Popup=new Class(); Popup.prototype={ iframeIdName:'ifr_popup', //iframe的名字 initialize:function(config){ this.config=Object.extend({ //属性设置 contentType:1, //pop类型 1. 内嵌iframe,2. 显示给定的html 3. confirm框 4. alert框 isHaveTitle:true, //是否有标题栏 scrollType:'no', //内嵌iframe是否可以滚动 isBackgroundCanClick:false, //背景是否可以点击 isSupportDraging:true, //是否支持拖动 isShowShadow:true, //是否显示阴影 isReloadOnClose:true, //关闭后是否重新加载页面 width:400, //宽度 height:300 //高度 },config||{}); this.info={ //参数 shadowWidth:4, //阴影宽度 title:"", //标题 contentUrl:"", //iframe的url contentHtml:"", //内容的html callBack:null, //回调函数 parameter:null, //调用的参数 如 {id:"divCall",str:"点击确定后显示的字符串",obj:pop} confirmCon:"", //confirm的内容 alertCon:"", //alert的内容 someHiddenTag:"select,object,embed", //自动隐藏的页面元素 someDisabledBtn:"", //禁用的btn someHiddenEle:"", //隐藏的匀速 overlay:0, //覆盖 coverOpacity:40 //蒙皮不透明度 }; this.color={ cColor:"#EEEEEE", //蒙皮颜色 bColor:"#FFFFFF", //背景颜色 tColor:"#48BBFA", //标题背景颜色,边框颜色 wColor:"#FFFFFF" //标题文字颜色 }; this.dropClass=null; this.someToHidden=[]; this.someToDisabled=[]; if(!this.config.isHaveTitle) this.config.isSupportDraging=false; this.iniBuild() }, setContent:function(arrt,val){ //设置内容,即 this.info 的参数内容 if(val!=''){ switch(arrt){ case 'width':this.config.width=val;break; case 'height':this.config.height=val;break; case 'title':this.info.title=val;break; case 'contentUrl':this.info.contentUrl=val;break; case 'contentHtml':this.info.contentHtml=val;break; case 'callBack':this.info.callBack=val;break; case 'parameter':this.info.parameter=val;break; case 'confirmCon':this.info.confirmCon=val;break; case 'alertCon':this.info.alertCon=val;break; case 'someHiddenTag':this.info.someHiddenTag=val;break; case 'someHiddenEle':this.info.someHiddenEle=val;break; case 'someDisabledBtn':this.info.someDisabledBtn=val;break; case 'overlay':this.info.overlay=val} } }, iniBuild:function(){ G('dialogCase')?G('dialogCase').parentNode.removeChild(G('dialogCase')):function(){}; var oDiv=document.createElement('span');oDiv.id='dialogCase';document.body.appendChild(oDiv) }, build:function(){ var baseZIndex=10001+this.info.overlay*10; var showZIndex=baseZIndex+2;this.iframeIdName='ifr_popup'+this.info.overlay; //关闭按钮 //var path="http://img.baidu.com/hi/img/"; //var close=' '; var close='× '; var cB='filter: alpha(opacity='+this.info.coverOpacity+');opacity:'+this.info.coverOpacity/100+';'; var cover='
'; var mainBox='';if(this.config.isHaveTitle){mainBox+=''+''+this.info.title+' '+''+close+'
'} else{mainBox+=''+close+' '}; mainBox+='
'+'
'; if(!this.config.isBackgroundCanClick){G('dialogCase').innerHTML=cover+mainBox;G('dialogBoxBG').style.height=document.body.scrollHeight} else G('dialogCase').innerHTML=mainBox;Event.observe(G('dialogBoxClose'),"click",this.reset.bindAsEventListener(this),false); if(this.config.isSupportDraging){dropClass=new Dragdrop(this.config.width,this.config.height,this.info.shadowWidth,this.config.isSupportDraging,this.config.contentType);G("dialogBoxTitle").style.cursor="move"};this.lastBuild()},lastBuild:function(){var confirm=''; var alert=''; var baseZIndex=10001+this.info.overlay*10;var coverIfZIndex=baseZIndex+4; if(this.config.contentType==1){var openIframe=""; var coverIframe="";G("dialogBody").innerHTML=openIframe+coverIframe} else if(this.config.contentType==2){G("dialogBody").innerHTML=this.info.contentHtml}else if(this.config.contentType==3){G("dialogBody").innerHTML=confirm;Event.observe(G('dialogOk'),"click",this.forCallback.bindAsEventListener(this),false); Event.observe(G('dialogCancel'),"click",this.close.bindAsEventListener(this),false)}else if(this.config.contentType==4){G("dialogBody").innerHTML=alert;Event.observe(G('dialogYES'),"click",this.close.bindAsEventListener(this),false)}},reBuild:function(){G('dialogBody').height=G('dialogBody').clientHeight;this.lastBuild()},show:function(){this.hiddenSome();this.middle();if(this.config.isShowShadow)this.shadow()},forCallback:function(){return this.info.callBack(this.info.parameter)},shadow:function(){var oShadow=G('dialogBoxShadow');var oDialog=G('dialogBox');oShadow['style']['position']="absolute";oShadow['style']['background']="#000";oShadow['style']['display']="";oShadow['style']['opacity']="0.2";oShadow['style']['filter']="alpha(opacity=20)";oShadow['style']['top']=oDialog.offsetTop+this.info.shadowWidth;oShadow['style']['left']=oDialog.offsetLeft+this.info.shadowWidth;oShadow['style']['width']=oDialog.offsetWidth;oShadow['style']['height']=oDialog.offsetHeight},middle:function(){if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display=''; var oDialog=G('dialogBox'); oDialog['style']['position']="absolute"; oDialog['style']['display']=''; //取得页面的宽度和高度 var sClientWidth=document.body.clientWidth; var sClientHeight=document.body.clientHeight; var sScrollTop=document.body.scrollTop; // var sleft=(sClientWidth/2)-(oDialog.offsetWidth/2); var iTop=-80+(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); var sTop=iTop>0?iTop:(sClientHeight/2+sScrollTop)-(oDialog.offsetHeight/2); if(sTop<1)sTop="20";if(sleft<1)sleft="20"; oDialog['style']['left']=sleft+"px"; //左侧位置 oDialog['style']['top']=sTop+"px" //顶部位置 }, reset:function(){if(this.config.isReloadOnClose){top.location.reload()};this.close()},close:function(){G('dialogBox').style.display='none'; if(!this.config.isBackgroundCanClick)G('dialogBoxBG').style.display='none'; if(this.config.isShowShadow)G('dialogBoxShadow').style.display='none';G('dialogBody').innerHTML=''; this.showSome()},hiddenSome:function(){var tag=this.info.someHiddenTag.split(","); if(tag.length==1&&tag[0]=="")tag.length=0; for(var i=0;i var ids=this.info.someHiddenEle.split(","); if(ids.length==1&&ids[0]=="")ids.length=0; for(var i=0;i var ids=this.info.someDisabledBtn.split(","); if(ids.length==1&&ids[0]=="")ids.length=0; for(var i=0;i space("begin")},disabledBtn:function(id){var ele=document.getElementById(id); if(typeof(ele)!="undefined"&&ele!=null&&ele.disabled==false){ele.disabled=true;this.someToDisabled.push(ele)}},hiddenTag:function(tagName){var ele=document.getElementsByTagName(tagName); if(ele!=null){for(var i=0;iparseInt(this.oObj.style.top)+25)iTop=iTop+12;this.oObj.style.left=iLeft;this.oObj.style.top=iTop;if(this.showShadow){G('dialogBoxShadow').style.left=iLeft+this.shadowWidth;G('dialogBoxShadow').style.top=iTop+this.shadowWidth};this.dragData={x:Event.pointerX(event),y:Event.pointerY(event)};document.body.style.cursor="move"},mouseup:function(event){if(!this.IsDraging)return;if(this.contentType==1)G("iframeBG").style.display="none";document.οnmοusemοve=null;document.οnmοuseup=null;var mousX=Event.pointerX(event)-(document.documentElement.scrollLeft||document.body.scrollLeft);var mousY=Event.pointerY(event)-(document.documentElement.scrollTop||document.body.scrollTop);if(mousX<1||mousY<1||mousX>document.body.clientWidth||mousY>document.body.clientHeight){this.oObj.style.left=this.backData["x"];this.oObj.style.top=this.backData["y"];if(this.showShadow){G('dialogBoxShadow').style.left=this.backData.x+this.shadowWidth;G('dialogBoxShadow').style.top=this.backData.y+this.shadowWidth}};this.IsDraging=false;document.body.style.cursor="";Event.stopObserving(document,"selectstart",this.returnFalse,false)},returnFalse:function(){return false}};