[JS] - 实现Vista操作系统对话框效果

来源:http://www.pc40.cn/html/ASPbiancheng/qitaxiangguan/20100102/513.html

附件1:http://www.5-studio.com/wp-content/uploads/2009/06/Dialog.rar

附件2:http://www.5-studio.com/wp-content/uploads/2009/11/zDialog.rar

 

Dialog.js文件的代码

Dialog.js
var CONTEXTPATH = 'http://www.5-studio.com/wp-content/uploads/2009/06/';//图片路径配置
//
var CONTEXTPATH = 'images/';//图片路径配置
var isIE = navigator.userAgent.toLowerCase().indexOf("msie") != -1;
var isGecko = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;

function $(ele) {
if (typeof(ele) == 'string'){
ele
= document.getElementById(ele)
if(!ele){
return null;
}
}
if(ele){
Core.attachMethod(ele);
}
return ele;
}
function $T(tagName,ele){
ele
= $(ele);
ele
= ele || document;
var ts = ele.getElementsByTagName(tagName);//此处返回的不是数组
var arr = [];
var len = ts.length;
for(var i=0;i<len;i++){
arr.push($(ts[i]));
}
return arr;
}
function stopEvent(event){//阻止一切事件执行,包括浏览器默认的事件
event = window.event||event;
if(!event){
return;
}
if(isGecko){
event.preventDefault();
event.stopPropagation();
}
event.cancelBubble
= true
event.returnValue
= false;
}

Array.prototype.remove
= function(s){
for(var i=0;i<this.length;i++){
if(s == this[i]){
this.splice(i, 1);
}
}
}
if(window.HTMLElement){//给FF添加IE专有的属性和方法
HTMLElement.prototype.__defineGetter__("parentElement",function(){
if(this.parentNode==this.ownerDocument)return null;
return this.parentNode;
});
HTMLElement.prototype.__defineSetter__(
"outerHTML",function(sHTML){
var r=this.ownerDocument.createRange();
r.setStartBefore(
this);
var df=r.createContextualFragment(sHTML);
this.parentNode.replaceChild(df,this);
return sHTML;
});
HTMLElement.prototype.__defineGetter__(
"outerHTML",function(){
var attr;
var attrs=this.attributes;
var str="<"+this.tagName;
for(var i=0;i<attrs.length;i++){
attr
=attrs[i];
if(attr.specified)
str
+=" "+attr.name+'="'+attr.value+'"';
}
if(!this.canHaveChildren)
return str+">";
return str+">"+this.innerHTML+"</"+this.tagName+">";
});
HTMLElement.prototype.__defineSetter__(
"innerText",function(sText){
var parsedText=document.createTextNode(sText);
this.innerHTML=parsedText;
return parsedText;
});
HTMLElement.prototype.__defineGetter__(
"innerText",function(){
var r=this.ownerDocument.createRange();
r.selectNodeContents(
this);
return r.toString();
});
}

var $E = {};
$E.getTopLevelWindow
= function(){
var pw = window;
while(pw!=pw.parent){
pw
= pw.parent;
}
return pw;
}
$E.hide
= function(ele) {
ele
= ele || this;
ele
= $(ele);
ele.style.display
= 'none';
}
$E.show
= function(ele) {
ele
= ele || this;
ele
= $(ele);
ele.style.display
= '';
}
var Core = {};
Core.attachMethod
= function(ele){
if(!ele||ele["$A"]){
return;
}
if(ele.nodeType==9){
return;
}
var win;
try{
if(isGecko){
win
= ele.ownerDocument.defaultView;
}
else{
win
= ele.ownerDocument.parentWindow;
}
for(var prop in $E){
ele[prop]
= win.$E[prop];
}
}
catch(ex){
//alert("Core.attachMethod:"+ele)//有些对象不能附加属性,如flash
}
}

function Dialog(strID){
if(!strID){
alert(
"错误的Dialog ID!");
return;
}
this.ID = strID;
this.isModal = true;
this.Width = 400;
this.Height = 300;
this.Top = 0;
this.Left = 0;
this.ParentWindow = null;
this.onLoad = null;
this.Window = null;

this.Title = "";
this.URL = null;
this.DialogArguments = {};
this.WindowFlag = false;
this.Message = null;
this.MessageTitle = null;
this.ShowMessageRow = false;
this.ShowButtonRow = true;
this.Icon = null;
this.bgdivID=null;
}

Dialog._Array
= [];

Dialog.prototype.showWindow
= function(){
if(isIE){
this.ParentWindow.showModalessDialog( this.URL, this.DialogArguments, "dialogWidth:" + this.Width + ";dialogHeight:" + this.Height + ";help:no;scroll:no;status:no") ;
}
if(isGecko){
var sOption = "location=no,menubar=no,status=no;toolbar=no,dependent=yes,dialog=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=no";
this.Window = this.ParentWindow.open( '', this.URL, sOption, true ) ;
var w = this.Window;
if ( !w ){
alert(
"发现弹出窗口被阻止,请更改浏览器设置,以便正常使用本功能!" ) ;
return ;
}
w.moveTo(
this.Left, this.Top ) ;
w.resizeTo(
this.Width, this.Height+30 ) ;
w.focus() ;
w.location.href
= this.URL ;
w.Parent
= this.ParentWindow;
w.dialogArguments
= this.DialogArguments;
}
}

Dialog.prototype.show
= function(){
var pw = $E.getTopLevelWindow();
var doc = pw.document;
var cw = doc.compatMode == "BackCompat"?doc.body.clientWidth:doc.documentElement.clientWidth;
var ch = doc.compatMode == "BackCompat"?doc.body.clientHeight:doc.documentElement.clientHeight;//必须考虑文本框处于页面边缘处,控件显示不全的问题
var sl = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
var st = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);//考虑滚动的情况
var sw = Math.max(doc.documentElement.scrollWidth, doc.body.scrollWidth);
var sh = Math.max(doc.documentElement.scrollHeight, doc.body.scrollHeight);//考虑滚动的情况
sw=Math.max(sw,cw);
sh
=Math.max(sh,ch);
// alert("\n"+cw+"\n"+ch+"\n"+sw+"\n"+sh)

if ( !this.ParentWindow ){
this.ParentWindow = window ;
}
this.DialogArguments._DialogInstance = this;
this.DialogArguments.ID = this.ID;

if(!this.Height){
this.Height = this.Width/2;
}

if(this.Top==0){
this.Top = (ch - this.Height - 30) / 2 + st - 8;
}
if(this.Left==0){
this.Left = (cw - this.Width - 12) / 2 +sl;
}
if(this.ShowButtonRow){//按钮行高36
this.Top -= 18;
}
if(this.WindowFlag){
this.showWindow();
return;
}
var arr = [];
arr.push(
"<table style='-moz-user-select:none;' oncontextmenu='stopEvent(event);' onselectstart='stopEvent(event);' border='0' cellpadding='0' cellspacing='0' width='"+(this.Width+26)+"'>");
arr.push(
" <tr style='cursor:;'>");
arr.push(
" <td width='13' height='33' style=\"background-image:url("+CONTEXTPATH+"dialog_lt.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_lt.png', sizingMethod='crop');\"><div style='width:13px;'></div></td>");
arr.push(
" <td height='33' style=\"background-image:url("+CONTEXTPATH+"dialog_ct.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_ct.png', sizingMethod='crop');\"><div style=\"float:left;font-weight:bold; color:#FFFFFF; padding:9px 0 0 4px;\"><img src=\""+CONTEXTPATH+"icon_dialog.gif\" align=\"absmiddle\">&nbsp;"+this.Title+"</div>");
arr.push(
" <div style=\"position: relative;cursor:pointer; float:right; margin:5px 0 0; _margin:4px 0 0;height:17px; width:28px; background-image:url("+CONTEXTPATH+"dialog_closebtn.gif)\" onMouseOver=\"this.style.backgroundImage='url("+CONTEXTPATH+"dialog_closebtn_over.gif)'\" onMouseOut=\"this.style.backgroundImage='url("+CONTEXTPATH+"dialog_closebtn.gif)'\" drag='false' onClick=\"Dialog.getInstance('"+this.ID+"').CancelButton.onclick.apply(Dialog.getInstance('"+this.ID+"').CancelButton,[]);\"></div></td>");
arr.push(
" <td width='13' height='33' style=\"background-image:url("+CONTEXTPATH+"dialog_rt.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_rt.png', sizingMethod='crop');\"><div style=\"width:13px;\"></div></td>");
arr.push(
" </tr>");
arr.push(
" <tr drag='false'><td width='13' style=\"background-image:url("+CONTEXTPATH+"dialog_mlm.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_mlm.png', sizingMethod='crop');\"></td>");
arr.push(
" <td align='center' valign='top'>");
arr.push(
" <table width='100%' border='0' cellpadding='0' cellspacing='0' bgcolor='#FFFFFF'>");
arr.push(
" <tr id='_MessageRow_"+this.ID+"' style='display:none'>");
arr.push(
" <td height='50' valign='top'><table id='_MessageTable_"+this.ID+"' width='100%' border='0' cellspacing='0' cellpadding='8' style=\" background:#EAECE9 url("+CONTEXTPATH+"dialog_bg.jpg) no-repeat right top;\">");
arr.push(
" <tr><td width='25' height='50' align='right'><img id='_MessageIcon_"+this.ID+"' src='"+CONTEXTPATH+"window.gif' width='32' height='32'></td>");
arr.push(
" <td align='left' style='line-height:16px;'>");
arr.push(
" <h5 class='fb' id='_MessageTitle_"+this.ID+"'>&nbsp;</h5>");
arr.push(
" <div id='_Message_"+this.ID+"'>&nbsp;</div></td>");
arr.push(
" </tr></table></td></tr>");
arr.push(
" <tr><td align='center' valign='top'>");
arr.push(
" <iframe src='");
if(this.URL.indexOf(":")==-1){
arr.push(CONTEXTPATH
+this.URL);
}
else{
arr.push(
this.URL);
}
arr.push(
"' id='_DialogFrame_"+this.ID+"' allowTransparency='true' width='"+this.Width+"' height='"+this.Height+"' frameborder='0' style=\"background-color: #transparent; border:none;\"></iframe></td></tr>");
arr.push(
" <tr drag='false' id='_ButtonRow_"+this.ID+"'><td height='36'>");
arr.push(
" <div id='_DialogButtons_"+this.ID+"' style='text-align:right; border-top:#dadee5 1px solid; padding:8px 20px; background-color:#f6f6f6;'>");
arr.push(
" <input id='_ButtonOK_"+this.ID+"' type='button' value='确 定'>");
arr.push(
" <input id='_ButtonCancel_"+this.ID+"' type='button' onclick=\"Dialog.getInstance('"+this.ID+"').close();\" value='取 消'>");
arr.push(
" </div></td></tr>");
arr.push(
" </table></td>");
arr.push(
" <td width='13' style=\"background-image:url("+CONTEXTPATH+"dialog_mrm.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_mrm.png', sizingMethod='crop');\"></td></tr>");
arr.push(
" <tr><td width='13' height='13' style=\"background-image:url("+CONTEXTPATH+"dialog_lb.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_lb.png', sizingMethod='crop');\"></td>");
arr.push(
" <td style=\"background-image:url("+CONTEXTPATH+"dialog_cb.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_cb.png', sizingMethod='crop');\"></td>");
arr.push(
" <td width='13' height='13' style=\"background-image:url("+CONTEXTPATH+"dialog_rb.png) !important;background-image: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+CONTEXTPATH+"dialog_rb.png', sizingMethod='crop');\"></td>");
arr.push(
" </tr></table>");
this.TopWindow = pw;

var bgdiv = pw.$("_DialogBGDiv");
if(!bgdiv){
bgdiv
= pw.document.createElement("div");
bgdiv.id
= "_DialogBGDiv";
$E.hide(bgdiv);
pw.$T(
"body")[0].appendChild(bgdiv);
}

var div = pw.$("_DialogDiv_"+this.ID);
if(!div){
div
= pw.document.createElement("div");
$E.hide(div);
div.id
= "_DialogDiv_"+this.ID;
div.className
= "dialogdiv";
div.setAttribute(
"dragStart","Dialog.dragStart");
pw.$T(
"body")[0].appendChild(div);
}
/*div.onmousedown = function(evt){
var w = $E.getTopLevelWindow();
//w.DragManager.onMouseDown(evt||w.event,this);//拖拽处理
}
*/

this.DialogDiv = div;
div.innerHTML
= arr.join('\n');

pw.$(
"_DialogFrame_"+this.ID).DialogInstance = this;

this.OKButton = pw.$("_ButtonOK_"+this.ID);
this.CancelButton = pw.$("_ButtonCancel_"+this.ID);

//显示标题图片
if(this.ShowMessageRow){
$E.show(pw.$(
"_MessageRow_"+this.ID));
if(this.MessageTitle){
pw.$(
"_MessageTitle_"+this.ID).innerHTML = this.MessageTitle;
}
if(this.Message){
pw.$(
"_Message_"+this.ID).innerHTML = this.Message;
}
}

//显示按钮栏
if(!this.ShowButtonRow){
pw.$(
"_ButtonRow_"+this.ID).hide();
}
if(this.CancelEvent){
this.CancelButton.onclick = this.CancelEvent;
}
if(this.OKEvent){
this.OKButton.onclick = this.OKEvent;
}
if(!this.AlertFlag){
$E.show(bgdiv);
this.bgdivID = "_DialogBGDiv";
}
else{
bgdiv
= pw.$("_AlertBGDiv");
if(!bgdiv){
bgdiv
= pw.document.createElement("div");
bgdiv.id
= "_AlertBGDiv";
$E.hide(bgdiv);
pw.$T(
"body")[0].appendChild(bgdiv);
bgdiv.style.cssText
= "background-color:#333;position:absolute;left:0px;top:0px;opacity:0.4;filter:alpha(opacity=40);width:" + sw + "px;height:" + sh + "px;z-index:991";
}
$E.show(bgdiv);
this.bgdivID = "_AlertBGDiv";
}
this.DialogDiv.style.cssText = "position:absolute; display:block;z-index:"+(this.AlertFlag?992:990)+";left:"+this.Left+"px;top:"+this.Top+"px";

//判断当前窗口是否是对话框,如果是,则将其置在bgdiv之后
if(!this.AlertFlag){
var win = window;
var flag = false;
while(win!=win.parent){//需要考虑父窗口是弹出窗口中的一个iframe的情况
if(win._DialogInstance){
win._DialogInstance.DialogDiv.style.zIndex
= 959;
flag
= true;
break;
}
win
= win.parent;
}
if(!flag){
bgdiv.style.cssText
= "background-color:#333;position:absolute;left:0px;top:0px;opacity:0.4;filter:alpha(opacity=40);width:" + sw + "px;height:" + sh + "px;z-index:960";
}
}
this.OKButton.focus();
//放入队列中,以便于ESC时正确关闭
pw.Dialog._Array.push(this.ID);
}

Dialog.prototype.addParam
= function(paramName,paramValue){
this.DialogArguments[paramName] = paramValue;
}

Dialog.prototype.close
= function(){
if(this.WindowFlag){
this.ParentWindow.$D = null;
this.ParentWindow.$DW = null;
this.Window.opener = null;
this.Window.close();
this.Window = null;
}
else{
//如果上级窗口是对话框,则将其置于bgdiv前
var pw = $E.getTopLevelWindow();
var win = window;
var flag = false;
while(win!=win.parent){
if(win._DialogInstance){
flag
= true;
win._DialogInstance.DialogDiv.style.zIndex
= 960;
break;
}
win
= win.parent;
}
if(this.AlertFlag){
$E.hide(pw.$(
"_AlertBGDiv"));
}
if(!flag&&!this.AlertFlag){//此处是为处理弹出窗口被关闭后iframe立即被重定向时背景层不消失的问题
pw.eval('window._OpacityFunc = function(){var w = $E.getTopLevelWindow();$E.hide(w.$("_DialogBGDiv"));}');
pw._OpacityFunc();
}
this.DialogDiv.outerHTML = "";
pw.Dialog._Array.remove(
this.ID);
}
}

Dialog.prototype.addButton
= function(id,txt,func){
var html = "<input id='_Button_"+this.ID+"_"+id+"' type='button' value='"+txt+"'> ";
var pw = $E.getTopLevelWindow();
pw.$(
"_DialogButtons_"+this.ID).$T("input")[0].getParent("a").insertAdjacentHTML("beforeBegin",html);
pw.$(
"_Button_"+this.ID+"_"+id).onclick = func;
}

Dialog.close
= function(evt){
window.Args._DialogInstance.close();
}

Dialog.getInstance
= function(id){
var pw = $E.getTopLevelWindow()
var f = pw.$("_DialogFrame_"+id);
if(!f){
return null;
}
return f.DialogInstance;
}

Dialog.AlertNo
= 0;
Dialog.alert
= function(msg,func,w,h){
var pw = $E.getTopLevelWindow()
var diag = new Dialog("_DialogAlert"+Dialog.AlertNo++);
diag.ParentWindow
= pw;
diag.Width
= w?w:300;
diag.Height
= h?h:120;
diag.Title
= "系统提示";
diag.URL
= "javascript:void(0);";
diag.AlertFlag
= true;
diag.CancelEvent
= function(){
diag.close();
if(func){
func();
}
};
diag.show();
pw.$(
"_AlertBGDiv").style.display="";
$E.hide(pw.$(
"_ButtonOK_"+diag.ID));
var win = pw.$("_DialogFrame_"+diag.ID).contentWindow;
var doc = win.document;
doc.open();
doc.write(
"<body oncontextmenu='return false;'></body>") ;
var arr = [];
arr.push(
"<table height='100%' border='0' align='center' cellpadding='10' cellspacing='0'>");
arr.push(
"<tr><td align='right'><img id='Icon' src='"+CONTEXTPATH+"icon_alert.gif' width='34' height='34' align='absmiddle'></td>");
arr.push(
"<td align='left' id='Message' style='font-size:9pt'>"+msg+"</td></tr></table>");
var div = doc.createElement("div");
div.innerHTML
= arr.join('');
doc.body.appendChild(div);
doc.close();
var h = Math.max(doc.documentElement.scrollHeight, doc.body.scrollHeight);
var w = Math.max(doc.documentElement.scrollWidth, doc.body.scrollWidth);
if(w>300){
win.frameElement.width
= w;
}
if(h>120){
win.frameElement.height
= h;
}

diag.CancelButton.value
= "确 定";
diag.CancelButton.focus();
pw.$(
"_DialogButtons_"+diag.ID).style.textAlign = "center";
}

Dialog.confirm
= function(msg,func1,func2,w,h){
var pw = $E.getTopLevelWindow()
var diag = new Dialog("_DialogAlert"+Dialog.AlertNo++);
diag.Width
= w?w:300;
diag.Height
= h?h:120;
diag.Title
= "信息确认";
diag.URL
= "javascript:void(0);";
diag.AlertFlag
= true;
diag.CancelEvent
= function(){
diag.close();
if(func2){
func2();
}
};
diag.OKEvent
= function(){
diag.close();
if(func1){
func1();
}
};
diag.show();
pw.$(
"_AlertBGDiv").style.dispaly="";
var win = pw.$("_DialogFrame_"+diag.ID).contentWindow;
var doc = win.document;
doc.open();
doc.write(
"<body oncontextmenu='return false;'></body>") ;
var arr = [];
arr.push(
"<table height='100%' border='0' align='center' cellpadding='10' cellspacing='0'>");
arr.push(
"<tr><td align='right'><img id='Icon' src='"+CONTEXTPATH+"icon_query.gif' width='34' height='34' align='absmiddle'></td>");
arr.push(
"<td align='left' id='Message' style='font-size:9pt'>"+msg+"</td></tr></table>");
var div = doc.createElement("div");
div.innerHTML
= arr.join('');
doc.body.appendChild(div);
doc.close();
diag.OKButton.focus();
pw.$(
"_DialogButtons_"+diag.ID).style.textAlign = "center";
}

var _DialogInstance = window.frameElement?window.frameElement.DialogInstance:null;
var Page={};
Page.onDialogLoad
= function(){
if(_DialogInstance){
if(_DialogInstance.Title){
document.title
= _DialogInstance.Title;
}
window.Args
= _DialogInstance.DialogArguments;
_DialogInstance.Window
= window;
window.Parent
= _DialogInstance.ParentWindow;
}
}

Page.onDialogLoad();

PageOnLoad
=function (){
var d = _DialogInstance;
if(d){
try{
d.ParentWindow.$D
= d;
d.ParentWindow.$DW
= d.Window;
var flag = false;
if(!this.AlertFlag){
var win = d.ParentWindow;
while(win!=win.parent){
if(win._DialogInstance){
flag
= true;
break;
}
win
= win.parent;
}
if(!flag){
$E.getTopLevelWindow().$(
"_DialogBGDiv").style.opacity="0";
$E.getTopLevelWindow().$(
"_DialogBGDiv").style.filter="alpha(opacity=0)";
}
}
if(d.AlertFlag){
$E.show($E.getTopLevelWindow().$(
"_AlertBGDiv"));
}
if(d.ShowButtonRow&&$E.visible(d.CancelButton)){
d.CancelButton.focus();
}
if(d.onLoad){
d.onLoad();
}
}
catch(ex){alert("DialogOnLoad:"+ex.message+"\t("+ex.fileName+" "+ex.lineNumber+")");}
}
}

Dialog.onKeyUp
= function(event){
if(event.keyCode==9){
var pw = $E.getTopLevelWindow();
if(pw.Dialog._Array.length>0){
stopEvent(event);
}
}
if(event.keyCode==27){
var pw = $E.getTopLevelWindow();
if(pw.Dialog._Array.length>0){
//Page.mousedown();
//Page.click();
var diag = pw.Dialog.getInstance(pw.Dialog._Array[pw.Dialog._Array.length-1]);
diag.CancelButton.onclick.apply(diag.CancelButton,[]);
}
}
}

Dialog.dragStart
= function(evt){
//DragManager.doDrag(evt,this.getParent("div"));//拖拽处理
}
Dialog.setPosition
=function(){
if(window.parent!=window)return;
var pw = $E.getTopLevelWindow();
var DialogArr=pw.Dialog._Array;
if(DialogArr==null||DialogArr.length==0)return;

for(i=0;i<DialogArr.length;i++)
{
pw.$(
"_DialogFrame_"+DialogArr[i]).DialogInstance.setPosition();
}
}
Dialog.prototype.setPosition
=function(){
var pw = $E.getTopLevelWindow();
var doc = pw.document;
var cw = doc.compatMode == "BackCompat"?doc.body.clientWidth:doc.documentElement.clientWidth;
var ch = doc.compatMode == "BackCompat"?doc.body.clientHeight:doc.documentElement.clientHeight;//必须考虑文本框处于页面边缘处,控件显示不全的问题
var sl = Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);
var st = Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);//考虑滚动的情况
var sw = Math.max(doc.documentElement.scrollWidth, doc.body.scrollWidth);
var sh = Math.max(doc.documentElement.scrollHeight, doc.body.scrollHeight);
sw
=Math.max(sw,cw);
sh
=Math.max(sh,ch);
this.Top = (ch - this.Height - 30) / 2 + st - 8;//有8像素的透明背景
this.Left = (cw - this.Width - 12) / 2 +sl;
if(this.ShowButtonRow){//按钮行高36
this.Top -= 18;
}
this.DialogDiv.style.top=this.Top+"px";
this.DialogDiv.style.left=this.Left+"px";
pw.$(
this.bgdivID).style.width= sw + "px";
pw.$(
this.bgdivID).style.height= sh + "px";
}

//按ESC关闭对话框
if(isIE){
document.attachEvent(
"onkeydown",Dialog.onKeyUp);
window.attachEvent(
"onload",PageOnLoad);
window.attachEvent(
'onresize',Dialog.setPosition);
}
else{
document.addEventListener(
"keydown",Dialog.onKeyUp,false);
window.addEventListener(
"load",PageOnLoad,false);
window.addEventListener(
'resize',Dialog.setPosition,false);
}

 

 

 

使用实例:

Demo.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JS仿Vista操作系统代码</title>
<style>
body
{ background: #ffffff; color: #444; }
a
{ color: #09d; text-decoration: none; border: 0; background-color: transparent; }
body,div,q,iframe,form,h5
{ margin: 0; padding: 0; }
img,fieldset
{ border: none 0; }
body,td,textarea
{ word-break: break-all; word-wrap: break-word; line-height:1.5; }
body,input,textarea,select,button
{ margin: 0; font-size: 12px; font-family: Tahoma, SimSun, sans-serif; }
div,p,table,th,td
{ font-size:1em; font-family:inherit; line-height:inherit; }
h5
{ font-size:12px; }
</style>
<script type="text/javascript" src="Dialog.js"></script>
<script type="text/javascript">
/*
function $(ele) {
if (typeof(ele) == 'string'){
ele = document.getElementById(ele)
if(!ele){ return null; }
}
if(ele){ Core.attachMethod(ele); }
return ele;
}
*/
/*
var Core = { };
Core.attachMethod = function(ele){
if(!ele||ele["$A"]){ return; }
if(ele.nodeType==9){ return; }

var win;
try{
if(isGecko){
win = ele.ownerDocument.defaultView;
}else{
win = ele.ownerDocument.parentWindow;
}

for(var prop in $E){
ele[prop] = win.$E[prop];
}
}catch(ex){
//alert("Core.attachMethod:"+ele) // 有些对象不能附加属性,如flash
}
}
*/
function zOpenD(){
var diag = new Dialog("Diag1");
diag.Width
= 900;
diag.Height
= 400;
diag.Title
= "弹出窗口示例";
diag.URL
= "http://www.aspprogram.cn/";
diag.ShowMessageRow
= true;
diag.MessageTitle
= "弹出窗口示例";
diag.Message
= "在这儿你可以对这个窗口的内容或功能作一些说明";
diag.OKEvent
= zAlert; // 点击确定后调用的方法
diag.show();
}

function zOpen(){
var diag = new Dialog("Diag2");
diag.Width
= 900;
diag.Height
= 400;
diag.Title
= "弹出窗口示例";
diag.URL
= "http://www.aspprogram.cn/";
diag.OKEvent
= zAlert; // 点击确定后调用的方法
diag.show();
}

function zAlert(){
Dialog.alert(
"此为信息提示对话框");
}

function zConfirm(){
Dialog.confirm(
'警告:您确认要删除吗?',function(){ Dialog.alert("删除成功"); });
}

/*
function sometext(ele,n){
var strArr=["背","景","文","字","1"];
var writeStr=""

for(i=0;i<n;i++){
index=parseInt(Math.random()*5);
for(j=0;j<5;j++){
str=index+j>4?index+j-5:index+j;
writeStr+=strArr[str];
}
}
$(ele).innerHTML=writeStr;
}
*/
</script>
</head>
<body>
<input type="button" value="弹出新窗口" onclick="zOpen()" />
<input type="button" value="弹出带说明的新窗口" onclick="zOpenD()" />
<input type="button" value="弹出信息提示对话框" onclick="zAlert()" />
<input type="button" value="弹出选择对话框" onclick="zConfirm()" />
</body>
</html>
posted @ 2010-03-25 13:41  炎峰森林影  阅读(472)  评论(1编辑  收藏  举报