포럼에서 누군가가 Alert를 모방하는 것을 보고 직접 작성했습니다. 원래는 winapi의 MessageBox를 모방하고 싶었습니다하지만 안타깝게도 js는 차단 모드를 지원하지 않습니다반환 값은 비동기식만 가능합니다. FF ie Opera 지원 DOCTYPE 선언 가능 여부문제 있음오페라에서 레이어를 투명하게 할 수 없습니다페이지의 iframe에 사용할 수 없습니다In 즉, 선택한 항목을 가릴 수 없습니다. 코드를 복사하세요 코드는 다음과 같습니다. MessageBox演示 <br>/******************************************************************************************* <br> * http://2lin.net <br> * Email:caoailin@gmail.com <br> * QQ:38062022 <br> * Creation date: 2006-11-27 <br> * 下面的内容可以拷贝到一个JS文件里面 <br>*********************************************************************************************/ <br><br><br>// 控制按钮常量 <br>var MB_OK = 0; <br>var MB_CANCEL = 1; <br>var MB_OKCANCEL = 2; <br>var MB_YES = 3; <br>var MB_NO = 4; <br>var MB_YESNO = 5; <br>var MB_YESNOCANCEL = 6; <br><br>// 控制按钮文本 <br>var MB_OK_TEXT = "确定"; <br>var MB_CANCEL_TEXT = "取消"; <br>var MB_YES_TEXT = " 是 "; <br>var MB_NO_TEXT = " 否 "; <br><br>//提示图标 <br>var MB_ICON = "http://2lin.net/image/information.gif"; <br><br><br>//委托方法 <br>var MB_OK_METHOD = null; <br>var MB_CANCEL_METHOD = null; <br>var MB_YES_METHOD = null; <br>var MB_NO_METHOD = null; <br>var MB_BACKCALL = null; <br><br>var MB_STR = '<style type="text/css"><!--' + <BR> 'body{margin:0px;}' + <BR> '.msgbox_title{background-color: #B1CDF3;height:25px;position:relative;font-size:14px;line-height:25px;padding-left:10px;border-bottom:1px solid #000;}' + <BR> '.msgbox_control{text-align:center;clear:both;height:28px;}' + <BR> '.msgbox_button{background-color: #B1CDF3;border:1px solid #003366;font-size:12px;line-height:20px;height:21px;}' + <BR> '.msgbox_content{padding:10px;float:left;line-height: 20px;}' + <BR> '.msgbox_icon{width: 50px;height: 50px;float: left;text-align: center;line-height:50px;padding-top:10px;}' + <BR> '.msgbox_mask{position:absolute;left:0px;top:0px;z-index:99999;background-color:#333333;width:100%;height:100%;}' + <BR> '.msgbox{background-color: #EFFAFE;position: absolute;height:auto;font-size:12px;top:50%;left:50%;border:1px solid #999999;}' + <BR> '--></style>' + <br> '<div id="msgBoxMask" class="msgbox_mask" style="filter: alpha(opacity=0);display:none;"></div>' + <br> '<div class="msgbox" style="display:none; z-index:100000;" id="msgBox">' + <br> '<div class="msgbox_title" id="msgBoxTitle"></div>' + <br> '<div class="msgbox_icon" id="msgBoxIcon"></div>' + <br> '<div class="msgbox_content" id="msgBoxContent"></div>' + <br> '<div class="msgbox_control" id="msgBoxControl"></div></div>'; <br><br>var Timer = null; <br><br>document.write(MB_STR); <br>var icon = new Image() <br>icon.src = <br> <br>/* 프롬프트 대화상자 <br> * 매개변수 1: 프롬프트 내용 <br> * 매개변수 2: 프롬프트 제목 <br> * 매개변수 3: 아이콘 경로 <br> * 매개변수 4: 버튼 종류 <br>*/ <br><br>function MessageBox(){ <br> var _content = 인수[0] || "이것은 대화 상자입니다!"; <br> var _title = 인수[1] || "提示"; <br> var _icon = arguments[2] || MB_ICON; <br> var _button = 인수[3] || MB_OK; <br> MB_BACKCALL = 인수[4]; var _iconStr = '<img src="{0}">' {0}" type="button" class="msgbox_button" value="{1}" onclick="MBMethod(this)" />'; <br><br> <br> 스위치(_button) <br> { <br> case MB_CANCEL : _btnStr = _btnStr.toFormatString("msgBoxBtnCancel", MB_CANCEL_TEXT); break; <br><br> case MB_YES : _btnStr = _b tnStr.toFormatString("msgBoxBtnYes", MB_YES_TEXT); 중단; 🎜> case MB_NO : _btnStr = _btnStr.toFormatString("msgBoxBtnNo", MB_NO_TEXT); break; <br><br> case MB_OKCANCEL : <br> _bt nStr = _btnStr.toFormatString("msgBoxBtnOk", MB_OK_TEXT) " " <br> _btnStr .toFormatString("msgBoxBtnCancel", MB_CANCEL_TEXT); <br> break; <br><br> case MB_YESNO : <br> _btnStr = _btnStr.toFormatString("msgBox BtnYes", MB_YES_TEXT) " " <br> _btnStr.toFormatString("msgBoxBtnNo ", MB_NO_TEXT); <br> 휴식; <br><br> 케이스 MB_YESNOCANCEL : <br> _btnStr = _btnStr.toFormatString("msgBoxBtnYes", MB_YES_TEXT) " " <br> _bt nStr.toFormatString("msgBoxBtnNo", MB_NO_TEXT) " " <br> _btnStr.toFormatString("msgBoxBtnCancel ", MB_CANCEL_TEXT); <br> 휴식; <br><br> 기본값 : _btnStr = _btnStr.toFormatString("msgBoxBtnOk", MB_OK_TEXT); 부서지다; <br><br> } <br> //解决 FF 下会复位 <br> ScrollTop = GetBrowserDocument().scrollTop; <br> ScrollLeft = GetBrowserDocument().scrollLeft; <br> GetBrowserDocument().style.overflow = "숨김"; <br> GetBrowserDocument().scrollTop = ScrollTop; <br> GetBrowserDocument().scrollLeft = ScrollLeft; <br><br> $("msgBoxTitle").innerHTML = _title; <br> $("msgBoxIcon").innerHTML = _iconStr.toFormatString(_icon); <br> $("msgBoxContent").innerHTML = _content; <br> $("msgBoxControl").innerHTML = _btnStr; <br><br> 불투명도 값 = 0; <br> $("msgBox").style.display = ""; <br> 시도{$("msgBoxMask").filters("alpha").opacity = 0;}catch(e){}; <br> $("msgBoxMask").style.opacity = 0; <br> $("msgBoxMask").style.display = ""; <br> $("msgBoxMask").style.height = GetBrowserDocument().scrollHeight "px"; <br> $("msgBoxMask").style.width = GetBrowserDocument().scrollWidth "px"; <br><br> 타이머 = setInterval("DoAlpha()",1); <br> //设置位置 <br> $("msgBox").style.width = "100%"; <br> $("msgBox").style.width = ($("msgBoxIcon").offsetWidth $("msgBoxContent").offsetWidth 2) "px"; <br><br> $("msgBox").style.marginTop = (-$("msgBox").offsetHeight/2 GetBrowserDocument().scrollTop) "px"; <br> $("msgBox").style.marginLeft = (-$("msgBox").offsetWidth/2 GetBrowserDocument().scrollLeft) "px"; <br><br> if(_button == MB_OK || _button == MB_OKCANCEL){ <br> $("msgBoxBtnOk").focus(); <br> }else if(_button == MB_YES || _button == MB_YESNO || _button == MB_YESNOCANCEL){ <br> $("msgBoxBtnYes").focus(); <br> } <br><br>} <br><br>var OpacityValue = 0; <br>var ScrollTop = 0; <br>var ScrollLeft = 0; <br><br>함수 GetBrowserDocument() <br>{ <br> var _dcw = document.documentElement.clientHeight; <br> var _dow = document.documentElement.offsetHeight; <br> var _bcw = document.body.clientHeight; <br> var _bow = document.body.offsetHeight; <br><br> if(_dcw == 0) return document.body; <br> if(_dcw == _dow) return document.documentElement; <br><br> if(_bcw == _bow && _dcw != 0) <br> return document.documentElement; <br> else <br> return document.body; <br>} <br><br>function SetOpacity(obj,opacity){ <br> if(opacity >=1 ) opacity = opacity / 100; <br><br> try{obj.style.opacity = 불투명도; }catch(e){} <br><br> 시도해 보세요{ <br> if(obj.filters){ <br> obj.filters("alpha").opacity = 불투명도 * 100; <br> } <br><br> }catch(e){} <br>} <br><br>function DoAlpha(){ <br> if (OpacityValue > 20){clearInterval(Timer);return 0 ;} <br> OpacityValue = 5; <br> SetOpacity($("msgBoxMask"),OpacityValue); <br>} <br><br>함수 MBMethod(obj) <br>{ <br> switch(obj.id) <br> { <br> case "msgBoxBtnOk" : if(MB_BACKCALL) {MB_BACKCALL(MB_OK); } else {if(MB_OK_METHOD) MB_OK_METHOD();} break; <br> case "msgBoxBtnCancel" : if(MB_BACKCALL) {MB_BACKCALL(MB_CANCEL);} else {if(MB_CANCEL_METHOD) MB_CANCEL_METHOD();} break; <br> case "msgBoxBtnYes" : if(MB_BACKCALL) {MB_BACKCALL(MB_YES);} else {if(MB_YES_METHOD) MB_YES_METHOD();} break; <br> case "msgBoxBtnNo" : if(MB_BACKCALL) {MB_BACKCALL(MB_NO);} else {if(MB_NO_METHOD) MB_NO_METHOD();} break; <br> } <br><br> MB_OK_METHOD = null; <br> MB_CANCEL_METHOD = null; <br> MB_YES_METHOD = null; <br> MB_NO_METHOD = null; <br> MB_BACKCALL = null; <br><br> MB_OK_TEXT = "결정"; <br> MB_CANCEL_TEXT = "취소"; <br> MB_YES_TEXT = " 是 "; <br> MB_NO_TEXT = " 否 "; <br><br> $("msgBox").style.display = "없음"; <br> $("msgBoxMask").style.display = "없음"; <br> GetBrowserDocument().style.overflow = ""; <br> GetBrowserDocument().scrollTop = ScrollTop; <br> GetBrowserDocument().scrollLeft = ScrollLeft; <br>} <br><br>String.prototype.toFormatString = function(){ <br> var _str = this; <br> for(var i = 0; i < arguments.length; i ){ <BR> _str = eval("_str.replace(/\{" i "\}/ig,'" arguments[i] " ')"); <BR> } <BR> return _str; <BR>} <br><br>함수 $(obj){ <BR> return document.getElementById(obj); <BR>} <BR>///////////////////////////////////////////////////////////////////// ////////////////////////////////////////// <BR></ 스크립트> <br><script 언어="javascript"> <br>함수 테스트() <br>{ <br> var _msg = "<font color=red><b>演示:</b></font><br/>普通对话框!"; <br> MessageBox(_msg); <br>} <br><br>function test1() <br>{ <br> MB_OK_METHOD = function(){alert('你按了OK');} <br> MB_YES_METHOD = function(){alert('你按了YES');} <br> MB_NO_METHOD = function(){alert('你按了NO');} <br> MB_CANCEL_METHOD = function(){alert('你按了CANCEL');} <br><br> var _msg = "<font color=red><b>演示:</b></font><br/>调用对话框。是、否、取消"; <br> MessageBox(_msg,"演示",null,MB_YESNOCANCEL); <br>} <br><br>function test2() <br>{ <br> var _msg = "<font color=red><b>演示:</b></font>< br/>调用对话框。是、否、取消"; <br> MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback); <br>} <br><br>function test4() <br>{ <br> var _msg = "<font color=red><b>演示:</b></font>< br/>사용할 수 있는 기능입니다.확인, 취소"; <BR> MessageBox(_msg,"Demo",MB_ICON,MB_OKCANCEL,callback); <BR>} <br><br>함수 콜백(값) <BR>{ <BR> 스위치(값) <BR> { <BR> case MB_OK : Alert('확인'을 눌렀습니다.'); break <BR> case MB_YES : Alert('예를 눌렀습니다.') break; ); break; <BR> case MB_CANCEL : Alert('취소를 눌렀습니다.') break <BR> } <BR>function test3() <BR>{ <br> MB_YES_TEXT = " one"; <br> MB_NO_TEXT = "데모 2"; <BR> MB_CANCEL_TEXT = "데모 3"; <BR> var _msg = "<font color=red><b>데모:</ b>< /font><br/>사용자 정의 대화 상자입니다<br/> <font color=green>MB_YES_TEXT MB_NO_TEXT MB_CANCEL_TEXT MB_OK_TEXT</font>"; <br> MessageBox(_msg, "Demo",MB_ICON, MB_YESNOCANCEL,콜백) <br><br> ="1000" border="1" bordercolor="#000000"> 일반 데모 ; 콜백 데모 1 🎜> 콜백 데모 2 a> ; td align="center">콜백 데모 3 /td> align="center">맞춤형 데모 < td>