`
bulote
  • 浏览: 1305626 次
文章分类
社区版块
存档分类
最新评论

js模拟弹出系统对话框

 
阅读更多

好长时间不写笔记了,这段时间就是乱忙,忙看书,忙上课,还忙着玩。只是老师有任务才慢忽悠悠的查一些东西,真的堕落了吗……哎。进入正题……

今天淘到一段不错的代码,是用js模拟弹出系统对话框的。

出现的问题:为什么要模拟这个对话框,主要是因为做的系统是给老外用的,要求一切显示都是英语。在网上查到,其实js里面的conform弹出对话框中显示的“确定”和“取消”按钮,是根据电脑的系统来设置的,所以,这样的话,肯定有的地方显示成中文,有的地方显示英文,不合要求。

在网上查了好多,也有很多的组件,但是,仅仅这么一个小的功能,用一个组件有点浪费了。后来找到了一个好的。功能实现很齐全,根据自己的需要改了一下。其中的代码,我还是放上最初的吧。

下面的代码,我已经测试过了,直接放在一个html中可以运行的。

Code:
  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <htmlxmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
  5. <title>MessageBox演示</title>
  6. <scriptlanguage="javascript">
  7. /*******************************************************************************************
  8. *以下是原作者信息,其中稍微做了一点点修改
  9. *http://2lin.net
  10. *Email:caoailin@gmail.com
  11. *QQ:38062022
  12. *下面的内容可以拷贝到一个JS文件里面
  13. *********************************************************************************************/
  14. //控制按钮常量
  15. varMB_OK=0;
  16. varMB_CANCEL=1;
  17. varMB_OKCANCEL=2;
  18. varMB_YES=3;
  19. varMB_NO=4;
  20. varMB_YESNO=5;
  21. varMB_YESNOCANCEL=6;
  22. //控制按钮文本
  23. varMB_OK_TEXT="submit";
  24. varMB_CANCEL_TEXT="cancel";
  25. varMB_YES_TEXT="yes";
  26. varMB_NO_TEXT="no";
  27. //提示图标
  28. varMB_ICON="http://2lin.net/image/information.gif";
  29. //委托方法
  30. varMB_OK_METHOD=null;
  31. varMB_CANCEL_METHOD=null;
  32. varMB_YES_METHOD=null;
  33. varMB_NO_METHOD=null;
  34. varMB_BACKCALL=null;
  35. varMB_STR='<styletype="text/css"><!--'+
  36. 'body{margin:0px;}'+
  37. '.msgbox_title{background-color:#B1CDF3;height:25px;position:relative;font-size:14px;line-height:25px;padding-left:10px;border-bottom:1pxsolid#000;}'+
  38. '.msgbox_control{text-align:center;clear:both;height:28px;}'+
  39. '.msgbox_button{background-color:#B1CDF3;border:1pxsolid#003366;font-size:12px;line-height:20px;height:21px;}'+
  40. '.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;}'+
  41. '.msgbox_mask{position:absolute;left:0px;top:0px;z-index:99999;background-color:#333333;width:100%;height:100%;}'+
  42. '.msgbox{background-color:#EFFAFE;position:absolute;height:auto;font-size:12px;top:50%;left:50%;border:1pxsolid#999999;}'+
  43. '--></style>'+
  44. '<divid="msgBoxMask"class="msgbox_mask"style="filter:alpha(opacity=0);display:none;"></div>'+
  45. '<divclass="msgbox"style="display:none;z-index:100000;"id="msgBox">'+
  46. '<divclass="msgbox_title"id="msgBoxTitle"></div>'+
  47. '<divclass="msgbox_icon"id="msgBoxIcon"></div>'+
  48. '<divclass="msgbox_content"id="msgBoxContent"></div>'+
  49. '<divclass="msgbox_control"id="msgBoxControl"></div></div>';
  50. varTimer=null;
  51. document.write(MB_STR);
  52. varicon=newImage();
  53. icon.src=MB_ICON;
  54. /*提示对话框
  55. *参数1:提示内容
  56. *参数2:提示标题
  57. *参数3:图标路径
  58. *参数4:按钮类型
  59. */
  60. functionMessageBox(){
  61. var_content=arguments[0]||"这是一个对话框!";
  62. var_title=arguments[1]||"提示";
  63. var_icon=arguments[2]||MB_ICON;
  64. var_button=arguments[3]||MB_OK;
  65. MB_BACKCALL=arguments[4];
  66. var_iconStr='<imgsrc="{0}">';
  67. var_btnStr='<inputname="{0}"id="{0}"type="button"class="msgbox_button"value="{1}"onclick="MBMethod(this)"/>';
  68. switch(_button)
  69. {
  70. caseMB_CANCEL:_btnStr=_btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);break;
  71. caseMB_YES:_btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT);break;
  72. caseMB_NO:_btnStr=_btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT);break;
  73. caseMB_OKCANCEL:
  74. _btnStr=_btnStr.toFormatString("msgBoxBtnOk",MB_OK_TEXT)+""+
  75. _btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);
  76. break;
  77. caseMB_YESNO:
  78. _btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT)+""+
  79. _btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT);
  80. break;
  81. caseMB_YESNOCANCEL:
  82. _btnStr=_btnStr.toFormatString("msgBoxBtnYes",MB_YES_TEXT)+""+
  83. _btnStr.toFormatString("msgBoxBtnNo",MB_NO_TEXT)+""+
  84. _btnStr.toFormatString("msgBoxBtnCancel",MB_CANCEL_TEXT);
  85. break;
  86. default:_btnStr=_btnStr.toFormatString("msgBoxBtnOk",MB_OK_TEXT);break;
  87. }
  88. //解决 FF下会复位
  89. ScrollTop=GetBrowserDocument().scrollTop;
  90. ScrollLeft=GetBrowserDocument().scrollLeft;
  91. GetBrowserDocument().style.overflow="hidden";
  92. GetBrowserDocument().scrollTop=ScrollTop;
  93. GetBrowserDocument().scrollLeft=ScrollLeft;
  94. $("msgBoxTitle").innerHTML=_title;
  95. $("msgBoxIcon").innerHTML=_iconStr.toFormatString(_icon);
  96. $("msgBoxContent").innerHTML=_content;
  97. $("msgBoxControl").innerHTML=_btnStr;
  98. OpacityValue=0;
  99. $("msgBox").style.display="";
  100. try{$("msgBoxMask").filters("alpha").opacity=0;}catch(e){};
  101. $("msgBoxMask").style.opacity=0;
  102. $("msgBoxMask").style.display="";
  103. $("msgBoxMask").style.height=GetBrowserDocument().scrollHeight+"px";
  104. $("msgBoxMask").style.width=GetBrowserDocument().scrollWidth+"px";
  105. Timer=setInterval("DoAlpha()",1);
  106. //设置位置
  107. $("msgBox").style.width="100%";
  108. $("msgBox").style.width=($("msgBoxIcon").offsetWidth+$("msgBoxContent").offsetWidth+2)+"px";
  109. $("msgBox").style.marginTop=(-$("msgBox").offsetHeight/2+GetBrowserDocument().scrollTop)+"px";
  110. $("msgBox").style.marginLeft=(-$("msgBox").offsetWidth/2+GetBrowserDocument().scrollLeft)+"px";
  111. if(_button==MB_OK||_button==MB_OKCANCEL){
  112. $("msgBoxBtnOk").focus();
  113. }elseif(_button==MB_YES||_button==MB_YESNO||_button==MB_YESNOCANCEL){
  114. $("msgBoxBtnYes").focus();
  115. }
  116. }
  117. varOpacityValue=0;
  118. varScrollTop=0;
  119. varScrollLeft=0;
  120. functionGetBrowserDocument()
  121. {
  122. var_dcw=document.documentElement.clientHeight;
  123. var_dow=document.documentElement.offsetHeight;
  124. var_bcw=document.body.clientHeight;
  125. var_bow=document.body.offsetHeight;
  126. if(_dcw==0)returndocument.body;
  127. if(_dcw==_dow)returndocument.documentElement;
  128. if(_bcw==_bow&&_dcw!=0)
  129. returndocument.documentElement;
  130. else
  131. returndocument.body;
  132. }
  133. functionSetOpacity(obj,opacity){
  134. if(opacity>=1)opacity=opacity/100;
  135. try{obj.style.opacity=opacity;}catch(e){}
  136. try{
  137. if(obj.filters){
  138. obj.filters("alpha").opacity=opacity*100;
  139. }
  140. }catch(e){}
  141. }
  142. functionDoAlpha(){
  143. if(OpacityValue>20){clearInterval(Timer);return0;}
  144. OpacityValue+=5;
  145. SetOpacity($("msgBoxMask"),OpacityValue);
  146. }
  147. functionMBMethod(obj)
  148. {
  149. switch(obj.id)
  150. {
  151. case"msgBoxBtnOk":if(MB_BACKCALL){MB_BACKCALL(MB_OK);}else{if(MB_OK_METHOD)MB_OK_METHOD();}break;
  152. case"msgBoxBtnCancel":if(MB_BACKCALL){MB_BACKCALL(MB_CANCEL);}else{if(MB_CANCEL_METHOD)MB_CANCEL_METHOD();}
  153. break;
  154. case"msgBoxBtnYes":if(MB_BACKCALL){MB_BACKCALL(MB_YES);}else{if(MB_YES_METHOD)MB_YES_METHOD();}break;
  155. case"msgBoxBtnNo":if(MB_BACKCALL){MB_BACKCALL(MB_NO);}else{if(MB_NO_METHOD)MB_NO_METHOD();}break;
  156. }
  157. MB_OK_METHOD=null;
  158. MB_CANCEL_METHOD=null;
  159. MB_YES_METHOD=null;
  160. MB_NO_METHOD=null;
  161. MB_BACKCALL=null;
  162. MB_OK_TEXT="确定";
  163. MB_CANCEL_TEXT="取消";
  164. MB_YES_TEXT="是";
  165. MB_NO_TEXT="否";
  166. $("msgBox").style.display="none";
  167. $("msgBoxMask").style.display="none";
  168. GetBrowserDocument().style.overflow="";
  169. GetBrowserDocument().scrollTop=ScrollTop;
  170. GetBrowserDocument().scrollLeft=ScrollLeft;
  171. }
  172. String.prototype.toFormatString=function(){
  173. var_str=this;
  174. for(vari=0;i<arguments.length;i++){
  175. _str=eval("_str.replace(///{"+i+"//}/ig,'"+arguments[i]+"')");
  176. }
  177. return_str;
  178. }
  179. function$(obj){
  180. returndocument.getElementById(obj);
  181. }
  182. ///////////////////////////////////////////////////////////////////////////////////////
  183. </script>
  184. <scriptlanguage="javascript">
  185. functiontest()
  186. {
  187. var_msg="<fontcolor=red><b>演示:</b></font><br/>普通对话框!";
  188. MessageBox(_msg);
  189. }
  190. functiontest1()
  191. {
  192. MB_OK_METHOD=function(){alert('你按了OK');}
  193. MB_YES_METHOD=function(){alert('你按了YES');}
  194. MB_NO_METHOD=function(){alert('你按了NO');}
  195. MB_CANCEL_METHOD=function(){alert('你按了CANCEL');}
  196. var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。是、否、取消";
  197. MessageBox(_msg,"演示",null,MB_YESNOCANCEL);
  198. }
  199. functiontest2()
  200. {
  201. var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。是、否、取消";
  202. MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);
  203. }
  204. functiontest4()
  205. {
  206. var_msg="<fontcolor=red><b>演示:</b></font><br/>调用对话框。确定、取消";
  207. MessageBox(_msg,"演示",MB_ICON,MB_OKCANCEL,callback);
  208. }
  209. functioncallback(value)
  210. {
  211. switch(value)
  212. {
  213. caseMB_OK:alert('你按了OK');break;//或者点击跳转到另一个页面:location.href="http://www.baidu.com";break;
  214. caseMB_YES:alert('你按了YES');break;
  215. caseMB_NO:alert('你按了NO');break;
  216. caseMB_CANCEL:alert('你按了CANCEL');break;
  217. }
  218. }
  219. functiontest3()
  220. {
  221. MB_YES_TEXT="演示一";
  222. MB_NO_TEXT="演示二";
  223. MB_CANCEL_TEXT="演示三";
  224. var_msg="<fontcolor=red><b>演示:</b></font><br/>这是自定义的对话框<br/><fontcolor=green>MB_YES_TEXTMB_NO_TEXTMB_CANCEL_TEXTMB_OK_TEXT</font>";
  225. MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);
  226. }
  227. </script>
  228. </head>
  229. <body>
  230. <tablewidth="1000"align="center"border="1"bordercolor="#000000">
  231. <tr>
  232. <td> </td>
  233. <tdalign="center"><ahref="javascript:test()">普通演示</a></td>
  234. <td> </td>
  235. </tr>
  236. <tr>
  237. <td></td>
  238. <tdalign="center"><ahref="javascript:test1()">回调演示一</a>
  239. <label></label></td>
  240. <td></td>
  241. </tr>
  242. <tr>
  243. <td></td>
  244. <tdalign="center"><ahref="javascript:test2()">回调演示二
  245. </a></td>
  246. <td></td>
  247. </tr>
  248. <tr>
  249. <td></td>
  250. <tdalign="center"><ahref="javascript:test4()">回调演示三</a><ahref="javascript:test3()"></a></td>
  251. <td></td>
  252. </tr>
  253. <tr>
  254. <td></td>
  255. <tdalign="center"><ahref="javascript:test3()">自定义演示
  256. </a></td>
  257. <td></td>
  258. </tr>
  259. </table>
  260. <divalign="center"><inputname=""value="自定义演示"type="button"onclick="test3()"/></div>
  261. </body>
  262. </html>

分享到:
评论

相关推荐

    纯js(javascript)弹出层 对话框,div 模拟系统对话框

    纯js(javascript) 弹出层 对话框 弹出层,可以有半透明遮挡层。 div 模拟系统对话框,Alert Confirm Prompt

    JS实现弹出下载对话框及常见文件类型的下载

    JS要实现下载功能,一般都是这么几个过程:生成下载的URL,动态创建一个A标签,并将其href指向生成的URL,然后触发A标签的单击事件,这样就会弹出下载对话框,从而实现了一个下载的功能。 这里所说的下载,有时候也...

    jQuery的弹出警告对话框美化插件

    基于jQuery的弹出警告对话框美化插件(警告,确认和提示) 这个Jquery插件的目的是替代JavaScript的标准函数alert&#40;&#41;,confirm(),和 prompt()。这个插件有 如下这些特点: 1:这个插件可以使你可以...

    jQuery模拟JS警告、确认、提示弹出对话框效果.rar

    jQuery模拟JS警告、确认、提示弹出对话框效果.rarjQuery模拟JS警告、确认、提示弹出对话框效果.rarjQuery模拟JS警告、确认、提示弹出对话框效果.rar

    jQuery模拟JS警告、确认、提示弹出对话框

    jQuery模拟JS警告、确认、提示弹出对话框效果 jQuery警告/确认/提示弹出对话框效果(替换传统JavaScript下的提示框)

    模拟163弹出对话框(兼容IE firefox)

    用div模拟163对话框,可拖拉,可以根据自己的需求更改源码 大家打开的如果发生脚本错误,出现空白页,没关系那是因为乱码,请加上 ;charset=UTF-8" /&gt;

    artDialog 漂亮的javascript对话框(弹出层)组件

    漂亮的javascript对话框(弹出层)组件 javascript对话框(弹出层)组件artDialog artDialog是一个轻巧且高度兼容的javascript对话框组件,可让你的网页交互拥有桌面软件般的用户体验。 演示地址:...

    风声JS弹出层 弹出框插件.rar

    Javascript弹出窗口,弹出对话框,仿VISTA风格,本程序为模拟WEB弹出窗口和对话框提供一种方案。程序基于 JavaScript/XHTML/CSS 标准实现,适应广泛的服务器/浏览器环境,支持自由度极高的窗口样式定制;交互方面提供...

    js模拟对话框,可拖动,QQ对话框风格

    javacript模拟对话框,可拖动层,QQ对话框风格,包含图片样式,实例说明

    div_js_mask_IE蒙板+对话框

    div+js实现的弹出对话框,调用简单,可拖动,父页面禁止并半透明。弹出框可内嵌功能页面,也可去掉“iframe”然后做成单纯的对话框。 在windowsXP sp2下的 IE8、firefox3.5、opera10、傲游、TT浏览器、搜狗浏览器、...

    Jquery弹出层

    一个关于jquery弹出图层的技术 模拟成弹出对话框形式,然后对话框含文本框获取信息,以提交表单。 比较实用。 适用于弹出框登录之类

    web弹出层组件MyPopup

    MyPopup是一个JavaScript(js)弹出层、弹窗、对话框组件。MyPopup遵循javascript逻辑,容易理解,上手简单。MyPopup不仅模拟了alert、confirm、propmt等等控件,还扩展出tip(小提示框)、loading(加载中)、...

    网站前端——登录按钮,点击弹出层

    这是一个网站的登录按钮前端代码,内含CSS、JS、Html文件,可直接使用。点击可以弹出层,并可选择不同类型的身份进行登录。

    基于jQuery的弹出警告对话框美化插件(警告,确认和提示)

    前不久在官方网站是看见这个插件,所以今天趁有空就看了一下,随便给大家共享一下。... 4:这些方法都模拟了Windows的模式对话框。在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整。 5:如

    JS对话框组件artDialog v4.1.7

    功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… art.Dialog4.1.6更新说明:修复了网友提出的抢焦点的问题

    经典的JS对话框组件 artDialog.zip

    art.Dialog 是一个轻巧...功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… 标签:对话框组件 js对话框

    23个Javascript弹出窗口特效整理

    1. Lightview Lightview是一个基于Prototype与Script.aculo.us开发,用于创建可以覆盖整个页面的模式对话框。展示的内容不仅可以是图片、文字、网页...风声JS窗口为模拟WEB弹出窗口和对话框提供一种方案。程序基于 Jav

    JS对话框组件artDialog v4.1.7.rar

    功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤…… art.Dialog4.1.6更新说明: 修复了网友提出的抢焦点的...

    对话框组件artDialog2.1.1.zip

    artDialog是一个轻巧且高度兼容的javascript对话框组件,...功能: 支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、菜单模式、拖动、鼠标调节窗口大小...

Global site tag (gtag.js) - Google Analytics