您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Js的MessageBox_javascript技巧

2024/3/31 12:54:47发布12次查看
看到论坛上有人模仿alert 自己也写了一个
本来想模仿winapi里的messagebox 
但可惜js 不支持 阻塞模式 
返回值只能用异步了。
支持 ff ie opera
doctype 可以申明 也可以不申明
存在问题 
在opera 里图层不能透明 
对于页面内有iframe的也无法使用
在ie里无法遮住select的
复制代码 代码如下:
nbsp;html public -//w3c//dtd xhtml 1.0 transitional//en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
messagebox演示
' +
            '' +
            '
' +
            '
' +
            '
' +
            '
';
var timer = null;
document.write(mb_str);
var icon = new image();
icon.src = mb_icon;
/* 提示对话框
 * 参数 1 : 提示内容
 * 参数 2 : 提示标题
 * 参数 3 : 图标路径
 * 参数 4 : 按钮类型
*/
function messagebox(){
   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 = '';
   var _btnstr  = '';
switch(_button)
   {      
      case mb_cancel      : _btnstr = _btnstr.toformatstring(msgboxbtncancel, mb_cancel_text); break;
case mb_yes         : _btnstr = _btnstr.toformatstring(msgboxbtnyes, mb_yes_text); break;
case mb_no          : _btnstr = _btnstr.toformatstring(msgboxbtnno, mb_no_text); break;
case mb_okcancel    : 
           _btnstr = _btnstr.toformatstring(msgboxbtnok, mb_ok_text) +    +
                      _btnstr.toformatstring(msgboxbtncancel, mb_cancel_text); 
           break;
case mb_yesno       :
            _btnstr = _btnstr.toformatstring(msgboxbtnyes, mb_yes_text) +    +
                      _btnstr.toformatstring(msgboxbtnno, mb_no_text); 
            break;
case mb_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();
   }else if(_button == mb_yes || _button == mb_yesno || _button == mb_yesnocancel){
       $(msgboxbtnyes).focus();
   }
}
var opacityvalue = 0;
var scrolltop = 0;
var scrollleft = 0;
function getbrowserdocument()
{
   var _dcw = document.documentelement.clientheight;
   var _dow = document.documentelement.offsetheight;
   var _bcw = document.body.clientheight;
   var _bow = document.body.offsetheight;
if(_dcw == 0) return document.body;
   if(_dcw == _dow) return document.documentelement;
if(_bcw == _bow && _dcw != 0) 
     return document.documentelement;
   else
     return document.body;
}
function setopacity(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){}
}
function doalpha(){
    if (opacityvalue > 20){clearinterval(timer);return 0;}
    opacityvalue += 5;    
    setopacity($(msgboxmask),opacityvalue);
}
function mbmethod(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(var i = 0; i       _str = eval(_str.replace(/\\{+ i +\\}/ig,' + arguments[i] + '));
   }
   return _str;
}
function $(obj){
   return document.getelementbyid(obj);
}
///////////////////////////////////////////////////////////////////////////////////////
普通演示
回调演示一
回调演示二
回调演示三
自定义演示
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product