首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

用js回模拟做出alert,confirm,poropmt对话框的效果

2013-02-27 
用js来模拟做出alert,confirm,poropmt对话框的效果?如何用js来模拟做出alert,confirm,propmt对话框的效果?

用js来模拟做出alert,confirm,poropmt对话框的效果?
      如何用js来模拟做出alert,confirm,propmt对话框的效果?
[解决办法]
/** 
**   功能:弹出消息框类,背景渐变到半透明,还可以只弹出半透明层
**   作者:hch
**   日期:2010-06-10
**/
function __messageBox()
{
    var isIe=!!document.all;
    var obj = this;
    var backDiv = null;
    var messageDiv = null;
   var isAddEventListener = false;
    //设置select的可见状态
    this.setSelectState = function(state)
    {
        var slcList=document.getElementsByTagName('select');
        for(var i=0;i<slcList.length;i++)
        {
            slcList[i].style.visibility=state;
        }
     };
     
    //弹出提示框
    this.showMessageBox=function (wTitle,content,wWidth,type,confirmFun,cancelFun)
    {
        type = type
[解决办法]
0;
        obj.showBackgroundDiv();
        messageDiv=document.createElement("div");
        messageDiv.className="mesWindow";
        var html = "<div class='mesWindowTop'><table width='100%' height='100%'><tr><td>"+wTitle+"</td><td style='width:1px;'><input type='button'  class='close' value='关闭' /></td></tr></table></div><div class='mesWindowContent' >"+content+"</div>";
        if(type>0){html+="<div class='mesWindowBottom'><a href='javascript:void(0)'>确 定</a>"; if(type>1){html+="&nbsp;&nbsp;&nbsp;<a href='javascript:void(0)'>取 消</a>";} html+="</div>"; }
        html+="<div class='clear'></div>";
        messageDiv.innerHTML=html;
        styleStr="left:"+(obj.getClientWidth()- wWidth)/2+"px;position:absolute;width:"+wWidth+"px;z-index:20000;top:" +((obj.getClientHeight()-100)/2+obj.getScrollTop()) +'px';
        messageDiv.style.cssText=styleStr;
        backDiv.appendChild(messageDiv);
        setTimeout(function(){
            var divList =messageDiv.getElementsByTagName('div') ;
            divList[0].getElementsByTagName('input')[0].onclick=function(){obj.closeWindow();if(cancelFun && cancelFun !=null)cancelFun();};
            if(type>0){ 
                var aList= divList[divList.length-2].getElementsByTagName('a');


                aList[0].onclick=function(){obj.closeWindow();if(confirmFun && confirmFun !=null)confirmFun();};
                if(type>1){ aList[1].onclick=function(){obj.closeWindow();if(cancelFun && cancelFun !=null)cancelFun();};}
            }
        },50);
        if(!isAddEventListener){
          if(window.addEventListener){
               window.addEventListener('scroll', function(e){ obj.setMessageBoxTop(1); },false); 
                window.addEventListener('resize', function(e){obj.setDivSize();  },false); 
            }else{
               window.attachEvent("onscroll",function(){ obj.setMessageBoxTop(1);});  
               window.attachEvent("onresize",function(){ obj.setDivSize(); });        
            }
          isAddEventListener = true;
        }  
    };
    this.setDivSize=function(){
        if(backDiv!=null)
        {
            backDiv.style.width = document.documentElement.scrollWidth ;
            backDiv.style.height=document.documentElement.scrollHeight;
            var div= backDiv.getElementsByTagName('div')[0];
            div.style.width = document.documentElement.scrollWidth ;
            div.style.height=document.documentElement.scrollHeight;
        }
        if(messageDiv!=null){
             messageDiv.style.top=(( obj.getClientHeight() -  messageDiv.offsetHeight)/2 + obj.getScrollTop()) +'px';
             messageDiv.style.left=(( obj.getClientWidth() -  messageDiv.offsetWidth)/2 ) +'px'; 
         }
    }
    this.setMessageBoxTop=function(p)
    {
        if(messageDiv==null){return;}
        var toTop =toTop = ( obj.getClientHeight() -  messageDiv.offsetHeight)/2 + obj.getScrollTop();
    var top = parseInt( messageDiv.style.top);
    if(top< toTop - p/2 )
    {   


        top+=p;
    messageDiv.style.top = (top) +'px';
    setTimeout(function(){obj.setMessageBoxTop(p);},2);
    }else if(top>toTop +p/2 ){
     top-=p;
    messageDiv.style.top = (top) +'px';
    setTimeout(function(){obj.setMessageBoxTop(p);},2);
    }else{
            messageDiv.style.top = (toTop) +'px';
        }
    };
    //让背景渐渐变暗
     this.showBackground=function(objDiv,endInt)
    {
        if(isIe)
        {
            objDiv.filters.alpha.opacity+=5;
            if(objDiv.filters.alpha.opacity<endInt)
            {
                setTimeout(function(){obj.showBackground(objDiv,endInt)},5);
            }
        }else{
            var al=parseFloat(objDiv.style.opacity);al+=0.05;
            objDiv.style.opacity=al;
            if(al<(endInt/100))
            {setTimeout(function(){obj.showBackground(objDiv,endInt)},5);}
        }
    };
    //显示全屏的一个半透明div
     this.showBackgroundDiv=function()
    {
        obj.closeWindow();
        if(isIe){obj.setSelectState('hidden');}
        backDiv =document.createElement("div");
        var bWidth=parseInt(document.documentElement.scrollWidth);
        var bHeight=parseInt(document.documentElement.scrollHeight);
        backDiv.style.cssText="top:0px;left:0px;position:absolute;width:"+bWidth+"px;height:"+bHeight+"px;z-index:9999;";
        var opacityDiv = document.createElement("div");
        opacityDiv.style.cssText="top:0px;left:0px;position:absolute;background:#666;width:"+bWidth+"px;height:"+bHeight+"px;z-index:10000;filter:alpha(Opacity=0);-moz-opacity:0;opacity:0;";
        backDiv.appendChild(opacityDiv);
        document.body.appendChild(backDiv);
        obj.showBackground(opacityDiv,50);
       //setTimeout(function(){obj.setDivSize();},50);
    };
    //关闭窗口
     this.closeWindow=function()
    {
        if(backDiv!=null)
        {
            backDiv.parentNode.removeChild(backDiv);


            backDiv = null;
            messageDiv = null; if(isIe){obj.setSelectState('');}
        }
       
     };
    /********************
     * 取窗口滚动条滚动高度 
     ******************/
    this.getScrollTop=function ()
    {
       return window.pageYOffset 
[解决办法]
 document.documentElement.scrollTop 
[解决办法]
 document.body.scrollTop ;
    };
    /********************
     * 取窗口可视范围的高度 
     *******************/
    this.getClientHeight=function()
    {
         return (navigator.userAgent.toLowerCase().indexOf("opera") != -1)?document.body.clientHeight:document.documentElement.clientHeight;         
    };
    /********************
     * 取窗口可视范围的宽度 
     *******************/
    this.getClientWidth=function()
    { 
       return (navigator.userAgent.toLowerCase().indexOf("opera") != -1)?document.body.clientWidth:document.documentElement.clientWidth;  
    };
 }
    window.alert=function(m,t,confirmFun,cancelFun)
    {   
        t= (t&&t!=null&&t!='')?t:"系统消息";
        new __messageBox().showMessageBox(t,m,300,1,confirmFun,cancelFun);
    }
    window.confirm=function(m,t,confirmFun,cancelFun){
         t= (t&&t!=null&&t!='')?t:"系统消息";
        new __messageBox().showMessageBox(t,m,300,2,confirmFun,cancelFun);
    }      
 /**   
  调用方式    
 var messContent="<div style='padding:20px 10px 20px 10px;text-align:left;'><%= this.Language.RegistrationSuccessfulMessage %></div>";
var msg = new __messageBox();
 // 弹出提示框
 msg.showMessageBox('标题',messContent,300);
 
 // 弹出半透明的div
  msg.showBackgroundDiv()

// 别忘记调用样式
.mesWindow{border:#666 1px solid;background:#fff;}
.mesWindowTop{border-bottom:#eee 1px solid;margin-left:4px;padding:3px;font-weight:bold;text-align:left;font-size:12px; height:22px; line-height:22px;}
.mesWindowContent{margin:4px;font-size:12px; height:1%;}
.mesWindow .close{height:15px;width:40px;border:none;cursor:pointer;text-decoration:underline;background:#fff;text-align:right;}
 */

热点排行