http://www.cnblogs.com/walkingboy/archive/2006/08/10/Cilent_KMessageBox.html
接下来应该为MessageBox提供行为能力.我们需要模拟Confirm和Alert.
原始的Confrim需要返回false或者true来决定是否要运行postback事件.
在这里我转换了一下思路,不返回值,而是直接将postback事件的脚本(_doPostBack('',''))传入MessageBox,并绑定到相关的按钮上.所以我们的需要接受传入的参数主要有:消息标题,消息内容,按钮事件
OK,接下来构造Javascript中MessageBox的ShowConfirm函数:
有了显示还需要做隐藏处理,即上面调用的KMessageBox.Hide();
  
至于模拟Alert,就可以模仿ShowConfirm来做了,so easy
    
ok,整个MessageBox 类看起来已经像模像样了.运行一下...
    
噫,不对,好像缺了点什么....没错,它不是ShowModal类型的...用户还可以任意点下面的页面元素.
这个怎么模拟?
当然还是div了...做一个整个页面大小的div覆盖在所有页面元素之上,MessageBox层之下.
     
不过有个弊端,div不能覆盖select控件,那只好搬出iframe了..所谓道高一尺魔高一丈
   
在MessageBox中Show的时候,调用DialogModal.Show,Hide的时候调用DialogModal.Hide 即ok了.
有了上面的两个Javascript类,我们就可以很好的做服务端的封装了,取到control的dopostback函数,直接传入给ShowConfrim就可以了.
   
源码:
代码插入比较慢,而且经常ShowDialogModal框不返回,晕死.....直接down吧: KMessageBox_Source
KMessageBox.js
KMessageBox.css
前言:
    继上文([JavaScript]自定义Title的显示方式)之后,我的工作是进一步增强一些IE所不能提供的东东.
    还记得Windows下的MessageBox嘛?
    IE呢?Alert?Confirm? 是不是好丑呢?
    不过丑就算了,关键是还不好用.
    本次的目标是,提供好看又好用的Web版的Windows MessageBox.(已测试,兼容IE和FF)
正文:
    首先自然是先画好Html下的对话框样子了(用层来模拟):
    画得不专业,先用着,反正后面可以通过css来调整.
    接下来的工作就是需要通过Javascript动态输入这个层的内容.首先参考[JavaScript]自定义Title的显示方式中的方式,代码虽然很多,不过只不过比[JavaScript]自定义Title的显示方式多了几个层而已,大同小异:
    
  1
2
KMessageBox = {
3
  name: "KMessageBox",
4
  capiton : "消息框",
5
  content: "提示消息",
6
  msgbox : null,
7
  msgcaptioninfo:null,
8
  msgcontent:null,
9
  msgContenttxtmsg:null,
10
  msgbuttonyes:null,
11
  msbbuttonno:null,
12
  msgico:null 
13
};
14
15
KMessageBox.init = function () {
16
    var msgNameSpaceURI = "http://www.w3.org/1999/xhtml";
17
    
18
    if(!msgContainerID){ var msgContainerID= "KMessageBox"; }
19
20
    if(!msgCaptionID){ var msgCaptionID= "KMessageBox_caption"; }
21
    if(!msgCaptionInfoID){var msgCaptionInfoID = "KMessageBox_caption_info";}
22
    if(!msgContentID){ var msgContentID = "KMessageBox_content"; }
23
    if(!msgContentTxtID){ var msgContentTxtID= "KMessageBox_content_txt"; }
24
    if(!msgContentTxtICOID){var msgContentTxtICOID="KMessageBox_content_txt_ico"};
25
    if(!msgContentTxtMsgID){var msgContentTxtMsgID="KMessageBox_content_txt_msg"};
26
    if(!msgButtons){var msgButtonsID="KMessageBox_buttons"};
27
    if(!msgButtonYes){var msgButtonYesID="KMessageBox_buttons_yes"};
28
    if(!msgButtonNo){var msgButtonNoID="KMessageBox_buttons_no"};    
29
    if(!msgButtonOK){var msgButtonOKID="KMessageBox_buttons_ok"};    
30
31
    var msgContainer = $(msgContainerID);
32
    if(!msgContainer) {
33
      msgContainer = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div");
34
      msgContainer.setAttribute("id", msgContainerID);
35
      msgContainer.setAttribute("style","MARGIN: 0px auto; POSITION: absolute; TEXT-ALIGN: center;");
36
37
38
    var msgCaption = $(msgCaptionID);
39
40
    if(!msgCaption){
41
      msgCaption = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;
42
      msgCaption.setAttribute("id",msgCaptionID);
43
      Element.addClassName(msgCaption,"caption");      
44
45
      
46
      var msgCaptionInfo = $(msgCaptionInfoID);
47
      if(!msgCaptionInfo){
48
      msgCaptionInfo = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;
49
      msgCaptionInfo.setAttribute("id",msgCaptionInfoID);
50
      Element.addClassName(msgCaptionInfo,"info");
51
      msgCaption.appendChild(msgCaptionInfo);
52
      }
53
      msgContainer.appendChild(msgCaption);
54
      
55
    }
56
    
57
    var msgContent = $(msgContentID);
58
59
    if(!msgContent){
60
      msgContent= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;
61
      msgContent.setAttribute("id",msgContentID);
62
      Element.addClassName(msgContent,"content");
63
      
64
      var msgContentTxt = $(msgContentTxtID);
65
      
66
      if(!msgContentTxt ){
67
      msgContentTxt = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;
68
      msgContentTxt.setAttribute("id",msgContentTxtID);
69
      Element.addClassName(msgContentTxt,"txt");
70
           
71
      var msgContentTxtICO = $(msgContentTxtICOID);
72
      if(!msgContentTxtICO)
73
      {
74
         msgContentTxtICO= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "img") : document.createElement("img") ;
75
         msgContentTxtICO.setAttribute("id",msgContentTxtICOID);
76
         msgContentTxtICO.setAttribute("src","icon_alarm.gif");
77
         msgContentTxtICO.setAttribute("align","absMiddle");
78
         msgContentTxtICO.setAttribute("style","height:52px;width:64px;background-image:url('icon_big_info.gif');");
79
         msgContentTxt.appendChild(msgContentTxtICO);
80
      }
81
      
82
      var msgContentTxtMsg= $(msgContentTxtMsgID);
83
      if(!msgContentTxtMsg)
84
      {
85
         msgContentTxtMsg= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "span") : document.createElement("span") ;
86
         msgContentTxtMsg.setAttribute("id",msgContentTxtMsgID);
87
         
88
         msgContentTxt.appendChild(msgContentTxtMsg);
89
      }
90
91
92
      var msgButtons = $(msgButtonsID);
93
      if(!msgButtons)
94
      {
95
         msgButtons = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;
96
         msgButtons.setAttribute("id",msgButtonsID);
97
         Element.addClassName(msgButtons,"btnlist");
98
         var msgButtonYes = $(msgButtonYesID);
99
          if(!msgButtonYes)
100
          {
101
            msgButtonYes= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;
102
            msgButtonYes.setAttribute("id",msgButtonYesID);
103
            msgButtonYes.setAttribute("type","button");
104
            msgButtonYes.setAttribute("value","YES");
105
            Element.addClassName(msgButtonYes,"input_set");
106
                    
107
            msgButtons.appendChild(msgButtonYes);             
108
         }
109
110
         var msgButtonNo = $(msgButtonNoID);
111
          if(!msgButtonNo)
112
          {
113
            msgButtonNo= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;
114
            msgButtonNo.setAttribute("id",msgButtonNoID);
115
            msgButtonNo.setAttribute("type","button");
116
            msgButtonNo.setAttribute("value","NO");
117
            Element.addClassName(msgButtonNo,"input_set");
118
            
119
            msgButtons.appendChild(msgButtonNo); 
120
            
121
         }
122
         
123
         var msgButtonOK= $(msgButtonOKID);
124
          if(!msgButtonOK)
125
          {
126
            msgButtonOK= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;
127
            msgButtonOK.setAttribute("id",msgButtonOKID);
128
            msgButtonOK.setAttribute("type","button");
129
            msgButtonOK.setAttribute("value","OK");
130
            Element.addClassName(msgButtonOK,"input_set");
131
            
132
            msgButtons.appendChild(msgButtonOK); 
133
            
134
         }
135
136
137
         msgContentTxt.appendChild(msgButtons);
138
      }
139
      
140
      msgContent.appendChild(msgContentTxt);
141
      }
142
143
      
144
      msgContainer.appendChild(msgContent);
145
    }
146
147
     document.getElementsByTagName("body").item(0).appendChild(msgContainer);
148
    }
149
       
150
    this.msgbox = $(this.name);
151
    this.msgcaptioninfo = $(msgCaptionInfoID);
152
    this.msgContenttxtmsg= $(msgContentTxtMsgID);
153
    this.msgbuttonyes = $(msgButtonYesID);
154
    this.msgbuttonno = $(msgButtonNoID);
155
    this.msgbuttonok = $(msgButtonOKID);
156
    this.msgico = $(msgContentTxtICOID);
157
    Element.hide(this.msgbox);
158
   
159
}
160
161

2
KMessageBox = {3
  name: "KMessageBox",4
  capiton : "消息框",5
  content: "提示消息",6
  msgbox : null,7
  msgcaptioninfo:null,8
  msgcontent:null,9
  msgContenttxtmsg:null,10
  msgbuttonyes:null,11
  msbbuttonno:null,12
  msgico:null 13
};14

15
KMessageBox.init = function () {16
    var msgNameSpaceURI = "http://www.w3.org/1999/xhtml";17
    18
    if(!msgContainerID){ var msgContainerID= "KMessageBox"; }19

20
    if(!msgCaptionID){ var msgCaptionID= "KMessageBox_caption"; }21
    if(!msgCaptionInfoID){var msgCaptionInfoID = "KMessageBox_caption_info";}22
    if(!msgContentID){ var msgContentID = "KMessageBox_content"; }23
    if(!msgContentTxtID){ var msgContentTxtID= "KMessageBox_content_txt"; }24
    if(!msgContentTxtICOID){var msgContentTxtICOID="KMessageBox_content_txt_ico"};25
    if(!msgContentTxtMsgID){var msgContentTxtMsgID="KMessageBox_content_txt_msg"};26
    if(!msgButtons){var msgButtonsID="KMessageBox_buttons"};27
    if(!msgButtonYes){var msgButtonYesID="KMessageBox_buttons_yes"};28
    if(!msgButtonNo){var msgButtonNoID="KMessageBox_buttons_no"};    29
    if(!msgButtonOK){var msgButtonOKID="KMessageBox_buttons_ok"};    30

31
    var msgContainer = $(msgContainerID);32
    if(!msgContainer) {33
      msgContainer = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div");34
      msgContainer.setAttribute("id", msgContainerID);35
      msgContainer.setAttribute("style","MARGIN: 0px auto; POSITION: absolute; TEXT-ALIGN: center;");36

37

38
    var msgCaption = $(msgCaptionID);39

40
    if(!msgCaption){41
      msgCaption = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;42
      msgCaption.setAttribute("id",msgCaptionID);43
      Element.addClassName(msgCaption,"caption");      44

45
      46
      var msgCaptionInfo = $(msgCaptionInfoID);47
      if(!msgCaptionInfo){48
      msgCaptionInfo = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;49
      msgCaptionInfo.setAttribute("id",msgCaptionInfoID);50
      Element.addClassName(msgCaptionInfo,"info");51
      msgCaption.appendChild(msgCaptionInfo);52
      }53
      msgContainer.appendChild(msgCaption);54
      55
    }56
    57
    var msgContent = $(msgContentID);58

59
    if(!msgContent){60
      msgContent= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;61
      msgContent.setAttribute("id",msgContentID);62
      Element.addClassName(msgContent,"content");63
      64
      var msgContentTxt = $(msgContentTxtID);65
      66
      if(!msgContentTxt ){67
      msgContentTxt = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;68
      msgContentTxt.setAttribute("id",msgContentTxtID);69
      Element.addClassName(msgContentTxt,"txt");70
           71
      var msgContentTxtICO = $(msgContentTxtICOID);72
      if(!msgContentTxtICO)73
      {74
         msgContentTxtICO= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "img") : document.createElement("img") ;75
         msgContentTxtICO.setAttribute("id",msgContentTxtICOID);76
         msgContentTxtICO.setAttribute("src","icon_alarm.gif");77
         msgContentTxtICO.setAttribute("align","absMiddle");78
         msgContentTxtICO.setAttribute("style","height:52px;width:64px;background-image:url('icon_big_info.gif');");79
         msgContentTxt.appendChild(msgContentTxtICO);80
      }81
      82
      var msgContentTxtMsg= $(msgContentTxtMsgID);83
      if(!msgContentTxtMsg)84
      {85
         msgContentTxtMsg= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "span") : document.createElement("span") ;86
         msgContentTxtMsg.setAttribute("id",msgContentTxtMsgID);87
         88
         msgContentTxt.appendChild(msgContentTxtMsg);89
      }90

91

92
      var msgButtons = $(msgButtonsID);93
      if(!msgButtons)94
      {95
         msgButtons = document.createElementNS ? document.createElementNS(msgNameSpaceURI, "div") : document.createElement("div") ;96
         msgButtons.setAttribute("id",msgButtonsID);97
         Element.addClassName(msgButtons,"btnlist");98
         var msgButtonYes = $(msgButtonYesID);99
          if(!msgButtonYes)100
          {101
            msgButtonYes= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;102
            msgButtonYes.setAttribute("id",msgButtonYesID);103
            msgButtonYes.setAttribute("type","button");104
            msgButtonYes.setAttribute("value","YES");105
            Element.addClassName(msgButtonYes,"input_set");106
                    107
            msgButtons.appendChild(msgButtonYes);             108
         }109

110
         var msgButtonNo = $(msgButtonNoID);111
          if(!msgButtonNo)112
          {113
            msgButtonNo= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;114
            msgButtonNo.setAttribute("id",msgButtonNoID);115
            msgButtonNo.setAttribute("type","button");116
            msgButtonNo.setAttribute("value","NO");117
            Element.addClassName(msgButtonNo,"input_set");118
            119
            msgButtons.appendChild(msgButtonNo); 120
            121
         }122
         123
         var msgButtonOK= $(msgButtonOKID);124
          if(!msgButtonOK)125
          {126
            msgButtonOK= document.createElementNS ? document.createElementNS(msgNameSpaceURI, "input") : document.createElement("input") ;127
            msgButtonOK.setAttribute("id",msgButtonOKID);128
            msgButtonOK.setAttribute("type","button");129
            msgButtonOK.setAttribute("value","OK");130
            Element.addClassName(msgButtonOK,"input_set");131
            132
            msgButtons.appendChild(msgButtonOK); 133
            134
         }135

136

137
         msgContentTxt.appendChild(msgButtons);138
      }139
      140
      msgContent.appendChild(msgContentTxt);141
      }142

143
      144
      msgContainer.appendChild(msgContent);145
    }146

147
     document.getElementsByTagName("body").item(0).appendChild(msgContainer);148
    }149
       150
    this.msgbox = $(this.name);151
    this.msgcaptioninfo = $(msgCaptionInfoID);152
    this.msgContenttxtmsg= $(msgContentTxtMsgID);153
    this.msgbuttonyes = $(msgButtonYesID);154
    this.msgbuttonno = $(msgButtonNoID);155
    this.msgbuttonok = $(msgButtonOKID);156
    this.msgico = $(msgContentTxtICOID);157
    Element.hide(this.msgbox);158
   159
}160

161

接下来应该为MessageBox提供行为能力.我们需要模拟Confirm和Alert.
原始的Confrim需要返回false或者true来决定是否要运行postback事件.
在这里我转换了一下思路,不返回值,而是直接将postback事件的脚本(_doPostBack('',''))传入MessageBox,并绑定到相关的按钮上.所以我们的需要接受传入的参数主要有:消息标题,消息内容,按钮事件
OK,接下来构造Javascript中MessageBox的ShowConfirm函数:
 1
KMessageBox.ShowConfirm = function (imgdir,caption,msg,YesClick,NoClick) {
2
    
3
    if (!this.msgbox ) return;
4
    
5
    this.msgcaptioninfo.innerHTML = caption;
6
    this.msgContenttxtmsg.innerHTML = msg;
7
    //为了提示消息前面的图片可以适应实际的相对位置,传入程序父目录,主要为封装为Server控件做准备
8
       if(imgdir != "")
9
       {
10
         this.msgico.setAttribute("src",imgdir+"/kinnsoft_client/KMessageBox/icon_alarm.gif");
11
       }
12
       else
13
       {
14
         this.msgico.setAttribute("src","/kinnsoft_client/KMessageBox/icon_alarm.gif");
15
       }
16
    
17
        //使用prototype类库
18
    Element.show(this.msgbox);
19
    Element.show(this.msgbuttonyes);
20
    Element.show(this.msgbuttonno);
21
    Element.hide(this.msgbuttonok);
22
    
23
    var x=0,y=0;
24
    x = (document.documentElement.scrollLeft || document.body.scrollLeft);
25
    y = (document.documentElement.scrollTop || document.body.scrollTop);
26
    
27
        /*一下这段这么复杂的处理方法,是为了符合最新web标准,因为在aspx页面中会默认加入
28
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
29
新的标准中不支持document.body.clientHeight 属性,它是MSIE所有的
30
31
*/
32
    var theWidth=0,theHeight=0;
33
    
34
    if (window.innerWidth) 
35
    { 
36
      theWidth = window.innerWidth 
37
      theHeight = window.innerHeight 
38
    } 
39
    else if (document.documentElement && document.documentElement.clientWidth) 
40
    { 
41
      theWidth = document.documentElement.clientWidth 
42
      theHeight = document.documentElement.clientHeight 
43
    } 
44
    else if (document.body) 
45
    { 
46
      theWidth = document.body.clientWidth 
47
      theHeight = document.body.clientHeight 
48
    }
49
    
50
       //做div居中处理
51
    this.msgbox.style.left = (theWidth  - this.msgbox.offsetWidth)/2+x;
52
    this.msgbox.style.top = (theHeight - this.msgbox.offsetHeight)/2+y; 
53
54
      //绑定传入的事件
55
    this.msgbuttonyes.onclick = YesClick;//function(){ alert('yes');};
56
    this.msgbuttonno.onclick = NoClick;
57
      //绑定隐藏div的事件,使用prototype类库
58
    Event.observe(this.msgbuttonyes,"click",function(){KMessageBox.Hide();},true);
59
    Event.observe(this.msgbuttonno,"click",function(){KMessageBox.Hide();},true);
60
}
KMessageBox.ShowConfirm = function (imgdir,caption,msg,YesClick,NoClick) {2
    3
    if (!this.msgbox ) return;4
    5
    this.msgcaptioninfo.innerHTML = caption;6
    this.msgContenttxtmsg.innerHTML = msg;7
    //为了提示消息前面的图片可以适应实际的相对位置,传入程序父目录,主要为封装为Server控件做准备8
       if(imgdir != "")9
       {10
         this.msgico.setAttribute("src",imgdir+"/kinnsoft_client/KMessageBox/icon_alarm.gif");11
       }12
       else13
       {14
         this.msgico.setAttribute("src","/kinnsoft_client/KMessageBox/icon_alarm.gif");15
       }16
    17
        //使用prototype类库18
    Element.show(this.msgbox);19
    Element.show(this.msgbuttonyes);20
    Element.show(this.msgbuttonno);21
    Element.hide(this.msgbuttonok);22
    23
    var x=0,y=0;24
    x = (document.documentElement.scrollLeft || document.body.scrollLeft);25
    y = (document.documentElement.scrollTop || document.body.scrollTop);26
    27
        /*一下这段这么复杂的处理方法,是为了符合最新web标准,因为在aspx页面中会默认加入28
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">29
新的标准中不支持document.body.clientHeight 属性,它是MSIE所有的30

31
*/32
    var theWidth=0,theHeight=0;33
    34
    if (window.innerWidth) 35
    { 36
      theWidth = window.innerWidth 37
      theHeight = window.innerHeight 38
    } 39
    else if (document.documentElement && document.documentElement.clientWidth) 40
    { 41
      theWidth = document.documentElement.clientWidth 42
      theHeight = document.documentElement.clientHeight 43
    } 44
    else if (document.body) 45
    { 46
      theWidth = document.body.clientWidth 47
      theHeight = document.body.clientHeight 48
    }49
    50
       //做div居中处理51
    this.msgbox.style.left = (theWidth  - this.msgbox.offsetWidth)/2+x;52
    this.msgbox.style.top = (theHeight - this.msgbox.offsetHeight)/2+y; 53

54
      //绑定传入的事件55
    this.msgbuttonyes.onclick = YesClick;//function(){ alert('yes');};56
    this.msgbuttonno.onclick = NoClick;57
      //绑定隐藏div的事件,使用prototype类库58
    Event.observe(this.msgbuttonyes,"click",function(){KMessageBox.Hide();},true);59
    Event.observe(this.msgbuttonno,"click",function(){KMessageBox.Hide();},true);60
}有了显示还需要做隐藏处理,即上面调用的KMessageBox.Hide();
 1
KMessageBox.Hide = function()
2
{
3
    if (!this.msgbox ) return;
4
    Element.hide(this.msgbox);
5
    //detach 事件,防止IE 内存泄漏
6
    Event.stopObserving(this.msgbuttonyes,"click",function(){KMessageBox.Hide();},true)
7
    Event.stopObserving(this.msgbuttonno,"click",function(){KMessageBox.Hide();},true)
8
    Event.stopObserving(this.msgbuttonok,"click",function(){KMessageBox.Hide();},true)
9
}
10
KMessageBox.Hide = function()2
{3
    if (!this.msgbox ) return;4
    Element.hide(this.msgbox);5
    //detach 事件,防止IE 内存泄漏6
    Event.stopObserving(this.msgbuttonyes,"click",function(){KMessageBox.Hide();},true)7
    Event.stopObserving(this.msgbuttonno,"click",function(){KMessageBox.Hide();},true)8
    Event.stopObserving(this.msgbuttonok,"click",function(){KMessageBox.Hide();},true)9
}10

至于模拟Alert,就可以模仿ShowConfirm来做了,so easy
ok,整个MessageBox 类看起来已经像模像样了.运行一下...
噫,不对,好像缺了点什么....没错,它不是ShowModal类型的...用户还可以任意点下面的页面元素.
这个怎么模拟?
当然还是div了...做一个整个页面大小的div覆盖在所有页面元素之上,MessageBox层之下.
不过有个弊端,div不能覆盖select控件,那只好搬出iframe了..所谓道高一尺魔高一丈
 1
function DialogModal(){ 
2
    this.blankImgHandle = null; 
3
    this.tags = new Array("applet", "iframe", "select","object","embed");  
4
}
5
6
 
7
DialogModal.Show = function() 
8
{     
9
debugger;
10
        var NameSpaceURI = "http://www.w3.org/1999/xhtml";
11
        this.blankImgHandle = document.createElementNS ? document.createElementNS(NameSpaceURI, "iframe") : document.createElement("iframe") ;//iframe
12
        this.blankImgHandle.setAttribute("id","blankImgHanldle");
13
        with (this.blankImgHandle.style){ 
14
            position = "absolute"; 
15
            left     = 0; 
16
            top      = (document.documentElement.scrollTop || document.body.scrollTop); 
17
            height   = "100%"; //这边用100%在 标准生成的aspx页面好像比起效果,去掉doctype那句就可以,所以我直接设置一个分辨率即1024X768
18
            width    = "100%"; 
19
            zIndex   = "9999"; //这个zIndex比页面所有元素大,但是要比MessageBox小,保证MessageBox 不被罩住
20
            filter   = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=40)"; 
21
            opacity  = "0.1";             
22
        }          
23
         
24
       document.getElementsByTagName("body").item(0).appendChild(this.blankImgHandle);         
25
   }         
26
         
27
DialogModal.Close = function(){                
28
      if (this.blankImgHandle) 
29
      { 
30
          Element.remove(this.blankImgHandle);
31
          this.blankImgHandle = null;
32
      }             
33
  }; 
34
function DialogModal(){ 2
    this.blankImgHandle = null; 3
    this.tags = new Array("applet", "iframe", "select","object","embed");  4
}5

6
 7
DialogModal.Show = function() 8
{     9
debugger;10
        var NameSpaceURI = "http://www.w3.org/1999/xhtml";11
        this.blankImgHandle = document.createElementNS ? document.createElementNS(NameSpaceURI, "iframe") : document.createElement("iframe") ;//iframe12
        this.blankImgHandle.setAttribute("id","blankImgHanldle");13
        with (this.blankImgHandle.style){ 14
            position = "absolute"; 15
            left     = 0; 16
            top      = (document.documentElement.scrollTop || document.body.scrollTop); 17
            height   = "100%"; //这边用100%在 标准生成的aspx页面好像比起效果,去掉doctype那句就可以,所以我直接设置一个分辨率即1024X76818
            width    = "100%"; 19
            zIndex   = "9999"; //这个zIndex比页面所有元素大,但是要比MessageBox小,保证MessageBox 不被罩住20
            filter   = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=40)"; 21
            opacity  = "0.1";             22
        }          23
         24
       document.getElementsByTagName("body").item(0).appendChild(this.blankImgHandle);         25
   }         26
         27
DialogModal.Close = function(){                28
      if (this.blankImgHandle) 29
      { 30
          Element.remove(this.blankImgHandle);31
          this.blankImgHandle = null;32
      }             33
  }; 34

在MessageBox中Show的时候,调用DialogModal.Show,Hide的时候调用DialogModal.Hide 即ok了.
有了上面的两个Javascript类,我们就可以很好的做服务端的封装了,取到control的dopostback函数,直接传入给ShowConfrim就可以了.
1
//ShowConfirm客户端事件
2
private string JS_CONFIRM = "KMessageBox.ShowConfirm('{0}','{1}','{2}',{3},{4});return false;";
3
4
//获取DoPostBack事件,这边还有个难点,怎么取得客户端验证事件,目前我还没有解决
5
strOnClickScript = "function(){" + Page.ClientScript.GetPostBackEventReference(control, "") + ";}";
6
//注册MessageBox事件,
7
 control.Attributes["onclick"] += string.Format(JS_CONFIRM, this.mImgDir, caption, content, strOnClickScript, "function(){}");
//ShowConfirm客户端事件2
private string JS_CONFIRM = "KMessageBox.ShowConfirm('{0}','{1}','{2}',{3},{4});return false;";3

4
//获取DoPostBack事件,这边还有个难点,怎么取得客户端验证事件,目前我还没有解决5
strOnClickScript = "function(){" + Page.ClientScript.GetPostBackEventReference(control, "") + ";}";6
//注册MessageBox事件,7
 control.Attributes["onclick"] += string.Format(JS_CONFIRM, this.mImgDir, caption, content, strOnClickScript, "function(){}");源码:
代码插入比较慢,而且经常ShowDialogModal框不返回,晕死.....直接down吧: KMessageBox_Source
                    
                

    
                
            
        
浙公网安备 33010602011771号