- 浏览: 1305626 次
文章分类
最新评论
js模拟弹出系统对话框
好长时间不写笔记了,这段时间就是乱忙,忙看书,忙上课,还忙着玩。只是老师有任务才慢忽悠悠的查一些东西,真的堕落了吗……哎。进入正题……
今天淘到一段不错的代码,是用js模拟弹出系统对话框的。
出现的问题:为什么要模拟这个对话框,主要是因为做的系统是给老外用的,要求一切显示都是英语。在网上查到,其实js里面的conform弹出对话框中显示的“确定”和“取消”按钮,是根据电脑的系统来设置的,所以,这样的话,肯定有的地方显示成中文,有的地方显示英文,不合要求。
在网上查了好多,也有很多的组件,但是,仅仅这么一个小的功能,用一个组件有点浪费了。后来找到了一个好的。功能实现很齐全,根据自己的需要改了一下。其中的代码,我还是放上最初的吧。
下面的代码,我已经测试过了,直接放在一个html中可以运行的。
Code:
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
- <title>MessageBox演示</title>
- <scriptlanguage="javascript">
- /*******************************************************************************************
- *以下是原作者信息,其中稍微做了一点点修改
- *http://2lin.net
- *Email:caoailin@gmail.com
- *QQ:38062022
- *下面的内容可以拷贝到一个JS文件里面
- *********************************************************************************************/
- //控制按钮常量
- varMB_OK=0;
- varMB_CANCEL=1;
- varMB_OKCANCEL=2;
- varMB_YES=3;
- varMB_NO=4;
- varMB_YESNO=5;
- varMB_YESNOCANCEL=6;
- //控制按钮文本
- varMB_OK_TEXT="submit";
- varMB_CANCEL_TEXT="cancel";
- varMB_YES_TEXT="yes";
- varMB_NO_TEXT="no";
- //提示图标
- varMB_ICON="http://2lin.net/image/information.gif";
- //委托方法
- varMB_OK_METHOD=null;
- varMB_CANCEL_METHOD=null;
- varMB_YES_METHOD=null;
- varMB_NO_METHOD=null;
- varMB_BACKCALL=null;
- varMB_STR='<styletype="text/css"><!--'+
- 'body{margin:0px;}'+
- '.msgbox_title{background-color:#B1CDF3;height:25px;position:relative;font-size:14px;line-height:25px;padding-left:10px;border-bottom:1pxsolid#000;}'+
- '.msgbox_control{text-align:center;clear:both;height:28px;}'+
- '.msgbox_button{background-color:#B1CDF3;border:1pxsolid#003366;font-size:12px;line-height:20px;height:21px;}'+
- '.msgbox_content{padding:10px;float:left;line-height:20px;}'+'.msgbox_icon{width:50px;height:50px;float:left;text-align:center;line-height:50px;padding-top:10px;}'+
- '.msgbox_mask{position:absolute;left:0px;top:0px;z-index:99999;background-color:#333333;width:100%;height:100%;}'+
- '.msgbox{background-color:#EFFAFE;position:absolute;height:auto;font-size:12px;top:50%;left:50%;border:1pxsolid#999999;}'+
- '--></style>'+
- '<divid="msgBoxMask"class="msgbox_mask"style="filter:alpha(opacity=0);display:none;"></div>'+
- '<divclass="msgbox"style="display:none;z-index:100000;"id="msgBox">'+
- '<divclass="msgbox_title"id="msgBoxTitle"></div>'+
- '<divclass="msgbox_icon"id="msgBoxIcon"></div>'+
- '<divclass="msgbox_content"id="msgBoxContent"></div>'+
- '<divclass="msgbox_control"id="msgBoxControl"></div></div>';
- varTimer=null;
- document.write(MB_STR);
- varicon=newImage();
- icon.src=MB_ICON;
- /*提示对话框
- *参数1:提示内容
- *参数2:提示标题
- *参数3:图标路径
- *参数4:按钮类型
- */
- functionMessageBox(){
- var_content=arguments[0]||"这是一个对话框!";
- var_title=arguments[1]||"提示";
- var_icon=arguments[2]||MB_ICON;
- var_button=arguments[3]||MB_OK;
- MB_BACKCALL=arguments[4];
- var_iconStr='<imgsrc="{0}">';
- var_btnStr='<inputname="{0}"id="{0}"type="button"class="msgbox_button"value="{1}"onclick="MBMethod(this)"/>';
- switch(_button)
- {
- caseMB_CANCEL:_btnStr=_btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);break;
- caseMB_YES:_btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT);break;
- caseMB_NO:_btnStr=_btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT);break;
- caseMB_OKCANCEL:
- _btnStr=_btnStr.toFormatString("msgBoxBtnOk",MB_OK_TEXT)+""+
- _btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);
- break;
- caseMB_YESNO:
- _btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT)+""+
- _btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT);
- break;
- caseMB_YESNOCANCEL:
- _btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT)+""+
- _btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT)+""+
- _btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);
- break;
- default:_btnStr=_btnStr.toFormatString("msgBoxBtnOk",MB_OK_TEXT);break;
- }
- //解决 FF下会复位
- ScrollTop=GetBrowserDocument().scrollTop;
- ScrollLeft=GetBrowserDocument().scrollLeft;
- GetBrowserDocument().style.overflow="hidden";
- GetBrowserDocument().scrollTop=ScrollTop;
- GetBrowserDocument().scrollLeft=ScrollLeft;
- $("msgBoxTitle").innerHTML=_title;
- $("msgBoxIcon").innerHTML=_iconStr.toFormatString(_icon);
- $("msgBoxContent").innerHTML=_content;
- $("msgBoxControl").innerHTML=_btnStr;
- OpacityValue=0;
- $("msgBox").style.display="";
- try{$("msgBoxMask").filters("alpha").opacity=0;}catch(e){};
- $("msgBoxMask").style.opacity=0;
- $("msgBoxMask").style.display="";
- $("msgBoxMask").style.height=GetBrowserDocument().scrollHeight+"px";
- $("msgBoxMask").style.width=GetBrowserDocument().scrollWidth+"px";
- Timer=setInterval("DoAlpha()",1);
- //设置位置
- $("msgBox").style.width="100%";
- $("msgBox").style.width=($("msgBoxIcon").offsetWidth+$("msgBoxContent").offsetWidth+2)+"px";
- $("msgBox").style.marginTop=(-$("msgBox").offsetHeight/2+GetBrowserDocument().scrollTop)+"px";
- $("msgBox").style.marginLeft=(-$("msgBox").offsetWidth/2+GetBrowserDocument().scrollLeft)+"px";
- if(_button==MB_OK||_button==MB_OKCANCEL){
- $("msgBoxBtnOk").focus();
- }elseif(_button==MB_YES||_button==MB_YESNO||_button==MB_YESNOCANCEL){
- $("msgBoxBtnYes").focus();
- }
- }
- varOpacityValue=0;
- varScrollTop=0;
- varScrollLeft=0;
- functionGetBrowserDocument()
- {
- var_dcw=document.documentElement.clientHeight;
- var_dow=document.documentElement.offsetHeight;
- var_bcw=document.body.clientHeight;
- var_bow=document.body.offsetHeight;
- if(_dcw==0)returndocument.body;
- if(_dcw==_dow)returndocument.documentElement;
- if(_bcw==_bow&&_dcw!=0)
- returndocument.documentElement;
- else
- returndocument.body;
- }
- functionSetOpacity(obj,opacity){
- if(opacity>=1)opacity=opacity/100;
- try{obj.style.opacity=opacity;}catch(e){}
- try{
- if(obj.filters){
- obj.filters("alpha").opacity=opacity*100;
- }
- }catch(e){}
- }
- functionDoAlpha(){
- if(OpacityValue>20){clearInterval(Timer);return0;}
- OpacityValue+=5;
- SetOpacity($("msgBoxMask"),OpacityValue);
- }
- functionMBMethod(obj)
- {
- switch(obj.id)
- {
- case"msgBoxBtnOk":if(MB_BACKCALL){MB_BACKCALL(MB_OK);}else{if(MB_OK_METHOD)MB_OK_METHOD();}break;
- case"msgBoxBtnCancel":if(MB_BACKCALL){MB_BACKCALL(MB_CANCEL);}else{if(MB_CANCEL_METHOD)MB_CANCEL_METHOD();}
- break;
- case"msgBoxBtnYes":if(MB_BACKCALL){MB_BACKCALL(MB_YES);}else{if(MB_YES_METHOD)MB_YES_METHOD();}break;
- case"msgBoxBtnNo":if(MB_BACKCALL){MB_BACKCALL(MB_NO);}else{if(MB_NO_METHOD)MB_NO_METHOD();}break;
- }
- MB_OK_METHOD=null;
- MB_CANCEL_METHOD=null;
- MB_YES_METHOD=null;
- MB_NO_METHOD=null;
- MB_BACKCALL=null;
- MB_OK_TEXT="确定";
- MB_CANCEL_TEXT="取消";
- MB_YES_TEXT="是";
- MB_NO_TEXT="否";
- $("msgBox").style.display="none";
- $("msgBoxMask").style.display="none";
- GetBrowserDocument().style.overflow="";
- GetBrowserDocument().scrollTop=ScrollTop;
- GetBrowserDocument().scrollLeft=ScrollLeft;
- }
- String.prototype.toFormatString=function(){
- var_str=this;
- for(vari=0;i<arguments.length;i++){
- _str=eval("_str.replace(///{"+i+"//}/ig,'"+arguments[i]+"')");
- }
- return_str;
- }
- function$(obj){
- returndocument.getElementById(obj);
- }
- ///////////////////////////////////////////////////////////////////////////////////////
- </script>
- <scriptlanguage="javascript">
- functiontest()
- {
- var_msg="<fontcolor=red><b>演示:</b></font><br/>普通对话框!";
- MessageBox(_msg);
- }
- functiontest1()
- {
- MB_OK_METHOD=function(){alert('你按了OK');}
- MB_YES_METHOD=function(){alert('你按了YES');}
- MB_NO_METHOD=function(){alert('你按了NO');}
- MB_CANCEL_METHOD=function(){alert('你按了CANCEL');}
- var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。是、否、取消";
- MessageBox(_msg,"演示",null,MB_YESNOCANCEL);
- }
- functiontest2()
- {
- var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。是、否、取消";
- MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);
- }
- functiontest4()
- {
- var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。确定、取消";
- MessageBox(_msg,"演示",MB_ICON,MB_OKCANCEL,callback);
- }
- functioncallback(value)
- {
- switch(value)
- {
- caseMB_OK:alert('你按了OK');break;//或者点击跳转到另一个页面:location.href="http://www.baidu.com";break;
- caseMB_YES:alert('你按了YES');break;
- caseMB_NO:alert('你按了NO');break;
- caseMB_CANCEL:alert('你按了CANCEL');break;
- }
- }
- functiontest3()
- {
- MB_YES_TEXT="演示一";
- MB_NO_TEXT="演示二";
- MB_CANCEL_TEXT="演示三";
- var_msg="<fontcolor=red><b>演示:</b></font><br/>这是自定义的对话框<br/><fontcolor=green>MB_YES_TEXTMB_NO_TEXTMB_CANCEL_TEXTMB_OK_TEXT</font>";
- MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);
- }
- </script>
- </head>
- <body>
- <tablewidth="1000"align="center"border="1"bordercolor="#000000">
- <tr>
- <td> </td>
- <tdalign="center"><ahref="javascript:test()">普通演示</a></td>
- <td> </td>
- </tr>
- <tr>
- <td></td>
- <tdalign="center"><ahref="javascript:test1()">回调演示一</a>
- <label></label></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <tdalign="center"><ahref="javascript:test2()">回调演示二
- </a></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <tdalign="center"><ahref="javascript:test4()">回调演示三</a><ahref="javascript:test3()"></a></td>
- <td></td>
- </tr>
- <tr>
- <td></td>
- <tdalign="center"><ahref="javascript:test3()">自定义演示
- </a></td>
- <td></td>
- </tr>
- </table>
- <divalign="center"><inputname=""value="自定义演示"type="button"onclick="test3()"/></div>
- </body>
- </html>
相关推荐
纯js(javascript) 弹出层 对话框 弹出层,可以有半透明遮挡层。 div 模拟系统对话框,Alert Confirm Prompt
JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成的URL,然后触发A标签的单击事件,这样就会弹出下载对话框,从而实现了一个下载的功能。 这里所说的下载,有时候也...
基于jQuery的弹出警告对话框美化插件(警告,确认和提示) 这个Jquery插件的目的是替代JavaScript的标准函数alert(),confirm(),和 prompt()。这个插件有 如下这些特点: 1:这个插件可以使你可以...
jQuery模拟JS警告、确认、提示弹出对话框效果.rarjQuery模拟JS警告、确认、提示弹出对话框效果.rarjQuery模拟JS警告、确认、提示弹出对话框效果.rar
jQuery模拟JS警告、确认、提示弹出对话框效果 jQuery警告/确认/提示弹出对话框效果(替换传统JavaScript下的提示框)
用div模拟163对话框,可拖拉,可以根据自己的需求更改源码 大家打开的如果发生脚本错误,出现空白页,没关系那是因为乱码,请加上 ;charset=UTF-8" />
漂亮的javascript对话框(弹出层)组件 javascript对话框(弹出层)组件artDialog artDialog是一个轻巧且高度兼容的javascript对话框组件,可让你的网页交互拥有桌面软件般的用户体验。 演示地址:...
Javascript弹出窗口,弹出对话框,仿VISTA风格,本程序为模拟WEB弹出窗口和对话框提供一种方案。程序基于 JavaScript/XHTML/CSS 标准实现,适应广泛的服务器/浏览器环境,支持自由度极高的窗口样式定制;交互方面提供...
javacript模拟对话框,可拖动层,QQ对话框风格,包含图片样式,实例说明
div+js实现的弹出对话框,调用简单,可拖动,父页面禁止并半透明。弹出框可内嵌功能页面,也可去掉“iframe”然后做成单纯的对话框。 在windowsXP sp2下的 IE8、firefox3.5、opera10、傲游、TT浏览器、搜狗浏览器、...
一个关于jquery弹出图层的技术 模拟成弹出对话框形式,然后对话框含文本框获取信息,以提交表单。 比较实用。 适用于弹出框登录之类
MyPopup是一个JavaScript(js)弹出层、弹窗、对话框组件。MyPopup遵循javascript逻辑,容易理解,上手简单。MyPopup不仅模拟了alert、confirm、propmt等等控件,还扩展出tip(小提示框)、loading(加载中)、...
这是一个网站的登录按钮前端代码,内含CSS、JS、Html文件,可直接使用。点击可以弹出层,并可选择不同类型的身份进行登录。
前不久在官方网站是看见这个插件,所以今天趁有空就看了一下,随便给大家共享一下。... 4:这些方法都模拟了Windows的模式对话框。在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整。 5:如
功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… art.Dialog4.1.6更新说明:修复了网友提出的抢焦点的问题
art.Dialog 是一个轻巧...功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… 标签:对话框组件 js对话框
1. Lightview Lightview是一个基于Prototype与Script.aculo.us开发,用于创建可以覆盖整个页面的模式对话框。展示的内容不仅可以是图片、文字、网页...风声JS窗口为模拟WEB弹出窗口和对话框提供一种方案。程序基于 Jav
功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… art.Dialog4.1.6更新说明: 修复了网友提出的抢焦点的...
artDialog是一个轻巧且高度兼容的javascript对话框组件,...功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、菜单模式、拖动、鼠标调节窗口大小...