JavaScript 弹出一个可移动的框

本文介绍了一个使用JavaScript实现的可移动弹出窗口。该窗口包括阴影部分和内容部分,并且可以通过鼠标拖动改变位置。适用于WinXP SP2环境下的IE6、IE7及Firefox浏览器。

<script language="javascript">
/*Title:JavaScript 弹出一个可移动的框
 *Author: Alvin
 *Date: 2006-5-31
 *Description: JavaScript 弹出一个可移动的框
 *Environment: WinXP sp2,Ie6,IE7.FireFox
 *KeyWord: JavaScript 弹出一个可移动的框
 */
 
 var IE5=(document.getElementById && document.all)? true : false;
 var W3C=(document.getElementById)? true: false;
 var currIDb=null, currIDs=null, xoff=0, yoff=0; zctr=0; totz=0;
 function trackmouse(evt){
  if((currIDb!=null) && (currIDs!=null)){
   var x=(IE5)? event.clientX+document.body.scrollLeft : evt.pageX;
   var y=(IE5)? event.clientY+document.body.scrollTop : evt.pageY;
   currIDb.style.left=x+xoff+'px';
   currIDs.style.left=x+xoff+10+'px';
   currIDb.style.top=y+yoff+'px';
   currIDs.style.top=y+yoff+10+'px';
   return false;
  }}

  function stopdrag(){
   currIDb=null;
   currIDs=null;
   NS6bugfix();
  }

  function grab_id(evt){
   xoff=parseInt(this.IDb.style.left)-((IE5)? event.clientX+document.body.scrollLeft : evt.pageX);
   yoff=parseInt(this.IDb.style.top)-((IE5)? event.clientY+document.body.scrollTop : evt.pageY);
   currIDb=this.IDb;
   currIDs=this.IDs;
  }

  function NS6bugfix(){
   if(!IE5){
    self.resizeBy(0,1);
    self.resizeBy(0,-1);
   }}

   function incrzindex(){
    zctr=zctr+2;
    this.subb.style.zIndex=zctr;
    this.subs.style.zIndex=zctr-1;
   }

   function createPopup(id,  width, height, isdraggable,x,y,boxcolor,barcolor,shadowcolor){

    if(W3C){
     zctr+=2;
     totz=zctr;


     this.IDh=document.getElementById(id+'_h');
     this.IDh.IDb=document.getElementById(id+'_b');
     
     this.IDh.IDs=document.getElementById(id+'_s');
     
     this.IDh.IDbd=document.getElementById(id+'_bd');
     
     this.IDh.IDb.subs=this.IDh.IDs;
     this.IDh.IDb.subb=this.IDh.IDb;
     this.IDh.IDb.IDov=document.getElementById(id+'_ov');

     //IDs 是阴影部份
     this.IDh.IDs.style.width=width;
     this.IDh.IDs.style.height=height;
     this.IDh.IDs.style.left=x+10;
     this.IDh.IDs.style.top=y+10;
     this.IDh.IDs.style.backgroundColor=shadowcolor;
     
                   
                   //IDB 是内容部份
                    this.IDh.IDb.style.width=width;
                    this.IDh.IDb.style.height=height;
     this.IDh.IDb.style.left=x;
     this.IDh.IDb.style.top=y;
     this.IDh.IDb.style.backgroundColor=boxcolor;
     this.IDh.IDb.style.border='outset '+barcolor+' 2px';
     //"outset #FF0000 2px";
     
     
     this.IDh.IDbd.style.backgroundColor=barcolor;
     this.IDh.IDbd.style.width=width;
     
        
                    this.IDh.style.width=width-20;
                  
                    this.IDh.IDb.IDov.width=width;

     if(IE5){
     //DivA_b.style.border
      this.IDh.IDb.IDov.style.width=width-6;
      this.IDh.IDb.IDov.style.height=height-22;
      this.IDh.IDb.IDov.style.scrollbarBaseColor=this.IDh.IDb.style.backgroundColor;
      this.IDh.IDb.IDov.style.overflow="auto";
     }else{
      this.IDh.IDs.style.MozOpacity=.5;
     }
     this.IDh.IDb.onmousedown=incrzindex;
     if(isdraggable){
      this.IDh.onmousedown=grab_id;
      this.IDh.onmouseup=stopdrag;
     }
     }
     }

     if(W3C)document.onmousemove=trackmouse;
     if(!IE5 && W3C)window.onload=NS6bugfix;

                   
                           
    </script>


<div id="DivA_s" style="position:absolute; background-color:#800000; filter:alpha(opacity=50); visibility:visible">
</div>

<div id="DivA_b" style="position:absolute;overflow:hidden; visibility:visible">
 <div id="DivA_bd" style="height:16px;  padding:0px; border:1px">
  <table id="DivA_bbt" cellpadding="0" cellspacing="0" border="0" width="396">
   <tr>
    <td>
     <div id="DivA_h" style="height:14px; font: bold 12px sans-serif; color:#FFFFFF"> Move</div>
    </td>
    <td align="right">
     <a onmousedown="document.getElementById('DivA_s').style.display='none'; document.getElementById('DivA_b').style.display='none';return false">
      <img src="close.gif" border="0" height="15" width="15">
     </a>
    </td>
   </tr>
  </table>
 </div>
 <div id="DivA_ov">
  asdkjfalsjf
 </div>
</div>

<script language="javascript">
createPopup( 'DivA', 600,300,true,200,100,'#FF9D6F','#FFF000','#FFF000');
</script>

弹出可移动的层,有多种弹出方式 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <script language='javascript' src='pop.js'></script> <TITLE> JS弹出浮动层窗口_演示_www.codefans.net </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> <Script Language="JavaScript"> function ShowIframe() //显示iframe { var pop=new Popup({ contentType:1,isReloadOnClose:false,width:400,height:500}); pop.setContent("contentUrl","http://www.codefans.net"); pop.setContent("title","架iframe示例"); pop.build(); pop.show(); } function ShowHtmlString() //显示html { var strHtml = "<table border=1 style='width:90%; text-align:center;'><tr style='height:40px'><td>ds</td><td>dads</td></tr><tr style='height:40px'><td>dadas</td><td>dasd</td></tr><tr style='height:40px'><td>dadasd</td><td>dsadads</td></tr></table>"; 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","源码爱好者警告示例"); pop.setContent("alertCon","您好!欢迎来到源码爱好者!"); 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","您好!您要关闭源码爱好者吗??"); 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"]; } </Script> <INPUT TYPE="button" value="ShowHtmlString()" onclick="ShowHtmlString();"> <br> <INPUT TYPE="button" value="ShowIframe()" onclick="ShowIframe();"> <br> <INPUT TYPE="button" value="ShowAlert()" onclick="ShowAlert();"> <br> <INPUT TYPE="button" value="ShowConfirm()" onclick="ShowConfirm();"> </BODY> </HTML>
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值