??xml version="1.0" encoding="utf-8" standalone="yes"?>
<head>
<script language=javascript>
function isDateTime(str){
var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
if (a == null) return false;
if ( a[2]>=13 || a[3]>=32 || a[4]>=24 || a[5]>=60 || a[6]>=60) return false;
return true;
}
</script>
<script language=javascript>
document.write("<div align='center' id=meizzCalendarLayer style='BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 5px; Z-INDEX: 999999; BACKGROUND: #ffffff; FILTER: Alpha(opacity=85); LEFT: 205px; PADDING-BOTTOM: 5px; BORDER-LEFT: #000000 1px solid; WIDTH: 215px; LINE-HEIGHT: 5px; PADDING-TOP: 5px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute; TOP: 220px; HEIGHT: 215px; display: none'>");
document.write("<iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%></iframe></div>");
function writeIframe()
{
var strIframe = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style>"+
"*{font-size: 12px; font-family: 宋体}"+
"</style></head><body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'><form name=meizz>";
if (WebCalendar.drag){ strIframe += "<scr"+"ipt language=javascript>"+
"var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){"+
"if(parent.WebCalendar.drag && drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0;"+
"o.style.left = parseInt(o.style.left) + window.event.clientX-cx;"+
"o.style.top = parseInt(o.style.top) + window.event.clientY-cy;}}"+
"function document.onkeydown(){ switch(window.event.keyCode){ case 27 : parent.hiddenCalendar(); break;"+
"case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break;"+
"case 84 : document.forms[0].today.click(); break;} window.event.keyCode = 0; window.event.returnValue= false;}"+
"function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr"+"ipt>"}
strIframe += "<select name=tmpYearSelect onblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:3;left:40;display:none'"+
" onchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>"+
"<select name=tmpMonthSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:3;left:110;display:none'"+
" onchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>"+
"<select name=tmpHourSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:35;display:none'"+
" onchange='parent.WebCalendar.thisHour=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>"+
"<select name=tmpMinuteSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:80;display:none'"+
" onchange='parent.WebCalendar.thisMinute=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>"+
"<select name=tmpSecondSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:125;display:none'"+
" onchange='parent.WebCalendar.thisSecond=this.value; parent.hiddenSelect(this); parent.writeCalendar();'></select>"+
"<table id=tableMain border='1' cellpadding='0' cellspacing='0' bordercolor='#C0D0E8' bordercolorlight='#C0D0E8' bordercolordark='#C0D0E8' width='100%' height='100%'>"+
"<tr><td height=19 bgcolor='"+ WebCalendar.lightColor +"'>"+
" <table width='98%' id=tableHead border=0 cellspacing=1 cellpadding=0 align='center'><tr align=center>"+
" <td title='向前?1 q? onclick='parent.prevY()' style='cursor: hand' class=bg><<</td>"+
" <td width=15 height=19 class=bg title='向前?1 ? style='cursor: hand' onclick='parent.prevM()'><</td>"+
" <td width=60 id=meizzYearHead title='点击此处选择q䆾' onclick='parent.funYearSelect(parseInt(this.innerText, 10))'"+
" onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
" onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
" <td width=50 id=meizzYearMonth title='点击此处选择月䆾' onclick='parent.funMonthSelect(parseInt(this.innerText, 10))'"+
" onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
" onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
" <td width=15 class=bg title='向后?1 ? onclick='parent.nextM()' style='cursor: hand'>></td>"+
" <td title='向后?1 q? onclick='parent.nextY()' style='cursor: hand' class=bg>>></td>"+
"</tr></table>"+
"</td></tr><tr><td height=20 align='center'><table id=tableWeek border=1 width='98%' cellpadding=0 cellspacing=0 ";
if(WebCalendar.drag){strIframe += "onmousedown='dragStart()' onmouseup='drag=false' onmouseout='drag=false'";}
strIframe += " borderColorLight='#FFFFFF' borderColorDark='#FFFFFF'>"+
" <tr align=center bgcolor='#6699FF'><td height=20><font color='#FF0000'>?lt;/font></td><td>一</td><td>?lt;/td><td>?lt;/td><td>?lt;/td><td>?lt;/td><td><font color='#FF0000'>?lt;/font></td></tr></table>"+
"</td></tr><tr><td valign=top align='center' bgcolor='"+ WebCalendar.lightColor +"'>"+
" <table id=tableDay height='100%' width='98%' border=0 cellspacing=1 cellpadding=0>";
for(var x=0; x<5; x++){ strIframe += "<tr>";
for(var y=0; y<7; y++) strIframe += "<td class=out id='meizzDay"+ (x*7+y) +"'></td>"; strIframe += "</tr>";}
strIframe += "<tr>";
for(var x=35; x<39; x++) strIframe += "<td class=out id='meizzDay"+ x +"'></td>";
strIframe +="<td colspan=3 class=out title='"+ WebCalendar.regInfo +"'><input style=' background-color: "+
WebCalendar.btnBgColor +";cursor: hand; padding-top: 4px; width: 100%; height: 100%; border: 0' onfocus='this.blur()'"+
" type=button value=' 关闭' onclick='parent.hiddenCalendar()'></td></tr></table>"+
"</td></tr><tr><td height=20 align='center' bgcolor='"+ WebCalendar.lightColor +"'>"+
" <table border=0 cellpadding=1 cellspacing=0 width='98%'>"+
" <tr>"+
" <td width=15 height=19 title='向前?1 时' onclick='parent.prevH()' style='cursor: hand' class=bg><<</td>"+
" <td width=15 height=19 title='向前?1 分钟' onclick='parent.prevMi()' style='cursor: hand' class=bg><</td>"+
" <td width=60 id=meizzHourHead title='点击此处选择时' onclick='parent.funHourSelect(parseInt(this.innerText, 10))'"+
" onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
" onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
" <td width=50 id=meizzMinuteHead title='点击此处选择分钟' onclick='parent.funMinuteSelect(parseInt(this.innerText, 10))'"+
" onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
" onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
" <td width=50 id=meizzSecondHead title='点击此处选择U? onclick='parent.funSecondSelect(parseInt(this.innerText, 10))'"+
" onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+
" onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'></td>"+
" <td title='向后?1 分钟' onclick='parent.nextMi()' style='cursor: hand' class=bg>></td>"+
" <td title='向后?1 时' onclick='parent.nextH()' style='cursor: hand' class=bg>>></td>"+
"</tr></table>"+
"</td></tr><table></form></body></html>";
with(WebCalendar.iframe)
{
document.writeln(strIframe); document.close();
for(var i=0; i<39; i++)
{
WebCalendar.dayObj[i] = eval("meizzDay"+ i);
WebCalendar.dayObj[i].onmouseover = dayMouseOver;
WebCalendar.dayObj[i].onmouseout = dayMouseOut;
WebCalendar.dayObj[i].onclick = returnDate;
}
}
}
function WebCalendar() //初始化日历的讄
{
this.daysMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
this.day = new Array(39); //定义日历展示用的数组
this.dayObj = new Array(39); //定义日期展示控g数组
this.dateStyle = null; //保存格式化后日期数组
this.objExport = null; //日历回传的显C控?br />
this.eventSrc = null; //日历昄的触发控?br />
this.inputDate = null; //转化外的输入的日?d/m/yyyy)
this.thisYear = new Date().getFullYear(); //定义q的变量的初始?br />
this.thisMonth = new Date().getMonth()+ 1; //定义月的变量的初始?br />
this.thisDay = new Date().getDate(); //定义日的变量的初始?br />
this.thisHour = new Date().getHours(); //定义时得变量初始?br />
this.thisMinute = new Date().getMinutes(); //定义分钟得变量初始?br />
this.thisSecond = new Date().getSeconds(); //定义U得标量的初始?br />
this.today = this.thisDay +"/"+ this.thisMonth +"/"+ this.thisYear; //今天(d/m/yyyy)
this.iframe = window.frames("meizzCalendarIframe"); //日历?iframe 载体
this.calendar = getObjectById("meizzCalendarLayer"); //日历的层
this.dateReg = ""; //日历格式验证的正则式
this.yearFall = 50; //定义q下拉框的年差?br />
this.format = "yyyy-mm-dd"; //回传日期的格?br />
this.timeShow = true; //是否q回旉
this.drag = false; //是否允许拖动
this.darkColor = "#0000D0"; //控g的暗?br />
this.lightColor = "#FFFFFF"; //控g的亮?br />
this.btnBgColor = "#E6E6FA"; //控g的按钮背景色
this.wordColor = "#000080"; //控g的文字颜?br />
this.wordDark = "#DCDCDC"; //控g的暗文字颜色
this.dayBgColor = "#F5F5FA"; //日期数字背景?br />
this.todayColor = "#FF0000"; //今天在日历上的标C景色
this.DarkBorder = "#D4D0C8"; //日期昄的立体表达色
} var WebCalendar = new WebCalendar();
function calendar() //主调函数
{
var e = window.event.srcElement; writeIframe();
var o = WebCalendar.calendar.style; WebCalendar.eventSrc = e;
if (arguments.length == 0) WebCalendar.objExport = e;
else WebCalendar.objExport = eval(arguments[0]);
WebCalendar.iframe.tableWeek.style.cursor = WebCalendar.drag ? "move" : "default";
var t = e.offsetTop, h = e.clientHeight, l = e.offsetLeft, p = e.type;
while (e = e.offsetParent){t += e.offsetTop; l += e.offsetLeft;}
o.display = ""; WebCalendar.iframe.document.body.focus();
var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;
var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;
if (document.body.clientHeight + dt - t - h >= ch) o.top = (p=="image")? t + h : t + h + 6;
else o.top = (t - dt < ch) ? ((p=="image")? t + h : t + h + 6) : t - ch;
if (dw + dl - l >= cw) o.left = l; else o.left = (dw >= cw) ? dw - cw + dl : dl;
if (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
else WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
try{
if (WebCalendar.objExport.value.trim() != ""){
WebCalendar.dateStyle = WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);
if (WebCalendar.dateStyle == null)
{
WebCalendar.thisYear = new Date().getFullYear();
WebCalendar.thisMonth = new Date().getMonth()+ 1;
WebCalendar.thisDay = new Date().getDate();
alert("原文本框里的日期有错误!\n可能与你定义的显C时分秒有冲H!");
writeCalendar(); return false;
}
else
{
WebCalendar.thisYear = parseInt(WebCalendar.dateStyle[1], 10);
WebCalendar.thisMonth = parseInt(WebCalendar.dateStyle[3], 10);
WebCalendar.thisDay = parseInt(WebCalendar.dateStyle[4], 10);
WebCalendar.inputDate = parseInt(WebCalendar.thisDay, 10) +"/"+ parseInt(WebCalendar.thisMonth, 10) +"/"+
parseInt(WebCalendar.thisYear, 10); writeCalendar();
}
} else writeCalendar();
} catch(e){writeCalendar();}
}
function funMonthSelect() //月䆾的下拉框
{
var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);
var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;
for (var i=1; i<13; i++) e.options.add(new Option(i +"?, i));
e.style.display = ""; e.value = m; e.focus(); window.status = e.style.top;
}
function funYearSelect() //q䆾的下拉框
{
var n = WebCalendar.yearFall;
var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;
var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);
y = (y <= 1000)? 1000 : ((y >= 9999)? 9999 : y);
var min = (y - n >= 1000) ? y - n : 1000;
var max = (y + n <= 9999) ? y + n : 9999;
min = (max == 9999) ? max-n*2 : min;
max = (min == 1000) ? min+n*2 : max;
for (var i=min; i<=max; i++) e.options.add(new Option(i +"q?, i));
e.style.display = ""; e.value = y; e.focus();
}
function funHourSelect() //时的下拉框
{
var e = WebCalendar.iframe.document.forms[0].tmpHourSelect;
var h = isNaN(parseInt(WebCalendar.thisHour, 10)) ? new Date().getHours() : parseInt(WebCalendar.thisHour);
for (var i=0; i<=23; i++) e.options.add(new Option(appendZero(i) +"?, i));
e.style.display = ""; e.value = h; e.focus();
}
function funMinuteSelect() //分钟的下拉框
{
var e = WebCalendar.iframe.document.forms[0].tmpMinuteSelect;
var mi = isNaN(parseInt(WebCalendar.thisMinute, 10)) ? new Date().getMinutes() : parseInt(WebCalendar.thisMinute);
for (var i=0; i<=59; i++) e.options.add(new Option(appendZero(i) +"?, i));
e.style.display = ""; e.value = mi; e.focus();
}
function funSecondSelect() //U的下拉?br />
{
var e = WebCalendar.iframe.document.forms[0].tmpSecondSelect;
var s = isNaN(parseInt(WebCalendar.thisSecond, 10)) ? new Date().getSecondes() : parseInt(WebCalendar.thisSecond);
for (var i=0; i<=59; i++) e.options.add(new Option(appendZero(i) +"U?, i));
e.style.display = ""; e.value = s; e.focus();
}
function prevM() //往前翻月䆾
{
WebCalendar.thisDay = 1;
if (WebCalendar.thisMonth==1)
{
WebCalendar.thisYear--;
WebCalendar.thisMonth=13;
}
WebCalendar.thisMonth--; writeCalendar();
}
function nextM() //往后翻月䆾
{
WebCalendar.thisDay = 1;
if (WebCalendar.thisMonth==12)
{
WebCalendar.thisYear++;
WebCalendar.thisMonth=0;
}
WebCalendar.thisMonth++; writeCalendar();
}
function prevH() //往前翻时
{
WebCalendar.thisHour--;
if(WebCalendar.thisHour==-1)
{
WebCalendar.thisHour=23;
}
writeCalendar();
}
function nextH() //往后翻时
{
WebCalendar.thisHour++;
if(WebCalendar.thisHour==24)
{
WebCalendar.thisHour=0;
}
writeCalendar();
}
function prevMi() //往前翻时
{
WebCalendar.thisMinute--;
if(WebCalendar.thisMinute==-1)
{
WebCalendar.thisMinute=59;
}
writeCalendar();
}
function nextMi() //往后翻时
{
WebCalendar.thisMinute++;
if(WebCalendar.thisMinute==60)
{
WebCalendar.thisMinute=0;
}
writeCalendar();
}
function prevY(){WebCalendar.thisDay = 1; WebCalendar.thisYear--; writeCalendar();}//往前翻 Year
function nextY(){WebCalendar.thisDay = 1; WebCalendar.thisYear++; writeCalendar();}//往后翻 Year
function hiddenSelect(e){for(var i=e.options.length; i>-1; i--)e.options.remove(i); e.style.display="none";}
function getObjectById(id){ if(document.all) return(eval("document.all."+ id)); return(eval(id)); }
function hiddenCalendar(){getObjectById("meizzCalendarLayer").style.display = "none";};
function appendZero(n){return(("00"+ n).substr(("00"+ n).length-2));}//日期自动补零E序
function String.prototype.trim(){return this.replace(/(^\s*)|(\s*$)/g,"");}
function dayMouseOver()
{
this.className = "over";
this.style.backgroundColor = WebCalendar.darkColor;
if(WebCalendar.day[this.id.substr(8)].split("/")[1] == WebCalendar.thisMonth)
this.style.color = WebCalendar.lightColor;
}
function dayMouseOut()
{
this.className = "out"; var d = WebCalendar.day[this.id.substr(8)], a = d.split("/");
this.style.removeAttribute('backgroundColor');
if(a[1] == WebCalendar.thisMonth && d != WebCalendar.today)
{
if(WebCalendar.dateStyle && a[0] == parseInt(WebCalendar.dateStyle[4], 10))
this.style.color = WebCalendar.lightColor;
this.style.color = WebCalendar.wordColor;
}
}
function writeCalendar() //Ҏ历显C的数据的处理程?br />
{
var y = WebCalendar.thisYear;
var m = WebCalendar.thisMonth;
var d = WebCalendar.thisDay;
var h = WebCalendar.thisHour;
var mi = WebCalendar.thisMinute;
var s = WebCalendar.thisSecond;
WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;
if (!(y<=9999 && y >= 1000 && parseInt(m, 10)>0 && parseInt(m, 10)<13 && parseInt(d, 10)>0)){
alert("对不P你输入了错误的日期!");
WebCalendar.thisYear = new Date().getFullYear();
WebCalendar.thisMonth = new Date().getMonth()+ 1;
WebCalendar.thisDay = new Date().getDate();
WebCalendar.thisHour = new Date().getHours();
WebCalendar.thisMinute = new Date().getMinutes();
WebCalendar.thisSecond = new Date().getSeconds();
}
y = WebCalendar.thisYear;
m = WebCalendar.thisMonth;
d = WebCalendar.thisDay;
h = WebCalendar.thisHour;
mi = WebCalendar.thisMinute;
s = WebCalendar.thisSecond;
WebCalendar.iframe.meizzYearHead.innerText = y +" q?;
WebCalendar.iframe.meizzYearMonth.innerText = parseInt(m, 10) +" ?;
WebCalendar.iframe.meizzHourHead.innerText =appendZero(parseInt(h, 10)) +" ?;
WebCalendar.iframe.meizzMinuteHead.innerText =appendZero(parseInt(mi, 10)) +" ?;
WebCalendar.iframe.meizzSecondHead.innerText =appendZero(parseInt(s, 10))+" U?;
WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月?9?br />
var w = new Date(y, m-1, 1).getDay();
var prevDays = m==1 ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];
for(var i=(w-1); i>=0; i--) //q三?for 循环为日历赋数据源(数组 WebCalendar.dayQ格式是 d/m/yyyy
{
WebCalendar.day[i] = prevDays +"/"+ (parseInt(m, 10)-1) +"/"+ y;
if(m==1) WebCalendar.day[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);
prevDays--;
}
for(var i=1; i<=WebCalendar.daysMonth[m-1]; i++) WebCalendar.day[i+w-1] = i +"/"+ m +"/"+ y;
for(var i=1; i<39-w-WebCalendar.daysMonth[m-1]+1; i++)
{
WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ (parseInt(m, 10)+1) +"/"+ y;
if(m==12) WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);
}
for(var i=0; i<39; i++) //q个循环是根据源数组写到日历里显C?br />
{
var a = WebCalendar.day[i].split("/");
WebCalendar.dayObj[i].innerText = a[0];
WebCalendar.dayObj[i].title = a[2] +"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);
WebCalendar.dayObj[i].bgColor = WebCalendar.dayBgColor;
WebCalendar.dayObj[i].style.color = WebCalendar.wordColor;
if ((i<10 && parseInt(WebCalendar.day[i], 10)>20) || (i>27 && parseInt(WebCalendar.day[i], 10)<12))
WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;
if (WebCalendar.inputDate==WebCalendar.day[i]) //讄输入框里的日期在日历上的颜色
{WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}
if (WebCalendar.day[i] == WebCalendar.today) //讄今天在日历上反应出来的颜?br />
{WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}
}
}
function returnDate() //Ҏ日期格式{返回用户选定的日?br />
{
if(WebCalendar.objExport)
{
var returnValue;
var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");
var d = WebCalendar.format.match(/^(\w{4})(-|\/)(\w{1,2})\2(\w{1,2})$/);
if(d==null){alert("你设定的日期输出格式不对Q\r\n\r\n请重新定?WebCalendar.format Q?); return false;}
var flag = d[3].length==2 || d[4].length==2; //判断q回的日期格式是否要补零
returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];
if(WebCalendar.timeShow)
{
var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;
returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+ h +":"+ m +":"+ s;
}
WebCalendar.objExport.value = returnValue;
hiddenCalendar();
}
}
function document.onclick()
{
if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();
}
</script>
</head>
<body>
<input type=button onclick="alert(isDateTime('2006-10-2 12:23:34'))" value="旉格式试">
<input type=text onfocus="calendar()">
</body>
</html>
需要注意的是,q里Ҏ不涉及Q何session的操作。重启动App serverQ试着q接test.jspQ可以看到监听器已经开始工作?br>
2?Attribute监听
作ؓ一个站内消息系l,肯定要获得所有登陆者的IDQ才有可能互发消息。这涉及Attribute监听。假设我们写了个用户登陆的模块,用户通过w䆾验证之后会生一个sessionQ保存它的相关信息,比如Q?/p>
也许你说Q这有什么神奇呢Q监听session而已Q不着急,看看xmlhttp?br>
二?XMLHTTP
XMLHTTP的用处很多,q里只说我们需要的Q就是无h的与server通信Q看q段代码Q?/p>
cellpadding="1" cellspacing="0" id="tb">
<tr>
<td>num1</td>
<td>num2</td>
</tr>
</table>
二、功能类
1、时间与相关控gc?
1.1 日历
1.2 旉控g
1.3 万年?
1.4 昄动态显C时钟效果(文本Q如OA中时_
1.5 昄动态显C时钟效?(囑փQ像手表)
2、表单类
2.1 自动生成表单
2.2 动态添加,修改Q删除下拉框中的元素
2.3 可以输入内容的下拉框
2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发?
3、打印类
3.1 打印控g
4、事件类
4.1 屏蔽右键
4.2 屏蔽所有功能键
4.3 --> ?lt;-- F5 F11,F9,F1
4.4 屏蔽l合键ctrl+N
5、网设计类
5.1 q箋滚动的文字,囄Q注意是q箋的,两段文字和图片中没有I白出现Q?
5.2 html~辑控gc?
5.3 颜色选取框控?
5.4 下拉菜单
5.5 两层或多层次的下拉菜?
5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏?
5.7 状态栏Qtitle栏的动态效果(例子很多Q可以研I一下)
5.8 双击后,|页自动滚屏
6、树型结构?
6.1 asp+SQL?
6.2 asp+xml+sql?
6.3 java+sql或者java+sql+xml
7、无Ҏ效果的制?
8、连动下拉框技?
9、文本排?
10Q画囄Q含饹{柱、矢量贝滋曲U?
11Q操U客L注册表类
12QDIV层相养I拖拽、显C、隐藏、移动、增加)
13QTABLAE相关(客户端动态增加行列,模拟q度条,滚动列表{?
14Q各U?lt;object classid=>相关c,如播攑֙Qflash与脚本互动等
16, h/模拟无刷?异步调用c(XMLHttp或iframe,frameQ?
<script language="JavaScript">
<!--
function check(text){
var checkstr,iMax=5,iMin=3
checkstr="isInt:"+(parseInt(text)==text)+"\n"
checkstr+="isID:"+((parseInt(text)==text)&&(text>=0))+"\n"
checkstr+="于"+iMax+":"+((parseInt(text)==text)&&(text<iMax))+"\n"
checkstr+="大于"+iMin+":"+((parseInt(text)==text)&&(text>iMin))+"\n"
alert(checkstr)
}
//-->
</script>
<form method=post action="">
<input type="text" id="text1" onchange="check(this.value)">
</form>
4、事件类
4.1 屏蔽右键
在body标签里加上oncontextmenu=self.event.returnValue=false
4.2 屏蔽所有功能键
4.3 --> ?lt;-- F5 F11,F9,F1
4.4 屏蔽l合键ctrl+N
<script language=javascript>
function KeyDown(){
if ((window.event.altKey)&&
((window.event.keyCode==37)|| //屏蔽 Alt+ 方向?←
(window.event.keyCode==39))){ //屏蔽 Alt+ 方向?→
alert("不准你用ALT+方向键前q或后退|页Q?);
event.returnValue=false;
}
if ((event.keyCode==8)|| //屏蔽退格删除键
(event.keyCode==116)){ //屏蔽 F5 h?
event.keyCode=0;
event.returnValue=false;
}
if ((event.ctrlKey)&&(event.keyCode==78)){ //屏蔽 Ctrl+n
event.returnValue=false;
}
if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10
event.returnValue=false;
}
if (event.keyCode==122){ //屏蔽 F11
event.returnValue=false;
}
}
只要知道keyCode卛_屏蔽所有功能键
一、验证类
1、数字验证内
1.1 整数
/^(-|\+)?\d+$/.test(str)
1.2 大于0的整?Q用于传来的ID的验?
/^\d+$/.test(str)
1.3 负整数的验证
/^-\d+$/.test(str)
2、时间类
2.1 短时_形如 (13:04:06)
function isTime(str)
{
var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
if (a == null) {alert('输入的参C是时间格?); return false;}
if (a[1]>24 || a[3]>60 || a[4]>60)
{
alert("旉格式不对");
return false
}
return true;
}
2.2 短日期,形如 (2003-12-05)
function strDateTime(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}
2.3 长时_形如 (2003-12-05 13:04:06)
function strDateTime(str)
{
var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
var r = str.match(reg);
if(r==null)return false;
var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
return
(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&
d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==
r[7]);
}
2.4 只有q和月。Ş?2003-05,或?003-5)
2.5 只有时和分?形如(12:03)
3、表单类
3.1 所有的表单的值都不能为空
<input onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')alert('不能为空!')">
3.2 多行文本框的g能ؓI?
3.3 多行文本框的g能超qsMaxStrleng
3.4 多行文本框的g能少于sMixStrleng
3.5 判断单选框是否选择?
3.6 判断复选框是否选择.
3.7 复选框的全选,多选,全不选,反?
3.8 文g上传q程中判断文件类?
4、字W类
4.1 判断字符全部由a-Z或者是A-Z的字字母l成
<input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')">
4.2 判断字符由字母和数字l成?
<input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')">
4.3 判断字符由字母和数字Q下划线,点号l成.且开头的只能是下划线和字?
/^([a-zA-z_]{1})([\w]*)$/g.test(str)
4.4 字符串替换函?Replace();
5、浏览器c?
5.1 判断览器的cd
window.navigator.appName
5.2 判断ie的版?
window.navigator.appVersion
5.3 判断客户端的分L?
window.screen.height; window.screen.width;
6、结合类
6.1 email的判断?
function ismail(mail)
{
return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)
[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail));
}
6.2 手机L的验?
6.3 w䆾证的验证
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("输入的数字位C对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&
D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&
D.getDate()==a[5];
}
if (!B) {alert("输入的n份证?"+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}
3.7 复选框的全选,多选,全不选,反?
<form name=hrong>
<input type=checkbox name=All onclick="checkAll('mm')">全?lt;br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/>
<input type=checkbox name=mm onclick="checkItem('All')"><br/><br/>
<input type=checkbox name=All2 onclick="checkAll('mm2')">全?lt;br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
<input type=checkbox name=mm2 onclick="checkItem('All2')"><br/>
</form>
<SCRIPT LANGUAGE="JavaScript">
function checkAll(str)
{
var a = document.getElementsByName(str);
var n = a.length;
for (var i=0; i<n; i++)
a[i].checked = window.event.srcElement.checked;
}
function checkItem(str)
{
var e = window.event.srcElement;
var all = eval("document.hrong."+ str);
if (e.checked)
{
var a = document.getElementsByName(e.name);
all.checked = true;
for (var i=0; i<a.length; i++)
{
if (!a[i].checked){ all.checked = false; break;}
}
}
else all.checked = false;
}
</SCRIPT>
3.8 文g上传q程中判断文件类?
<input type=file onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})$/)[3])">
不断地清I剪贴板:
<body onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)">
<script language="JavaScript" type="text/JavaScript">
//先复制一样东西,或者文本或者图?
if(clipboardData.getData("Text")||clipboardData.getData("HTML")||
clipboardData.getData("URL"))
{
alert("有效行ؓ");
}
</script>
全屏技术:
真正的全屏页面解决之道!Q全代码Q?nbsp;
真正全屏解决之道Q?nbsp;
1.htm
<html>
<head>
<title>无标题文?lt;/title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body onload="window.open('fullscreen.htm','','fullscreen=1,scroll=no');">
</body>
</html>
fullscreen.htm
<html>
<head>
<title>无标题文?lt;/title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="JavaScript1.2">
<!--
function opensmallwin(myurl){
var w2=300;//惛_出窗口的宽度
var h2=100;//惛_出窗口的高度
var w3=window.screen.width/2-w2/2;
var h3=window.screen.height/2-h2/2;
window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,
scrollbars=no,resizable=0,width='+ w2 +',height='+ h2 +',left='+ w3 +',top='+ h3 +'');
}
//-->
<!--
function modelesswin(url,mwidth,mheight){
if (document.all&&window.print)
eval('window.external.m2_blocked(url,"","help:0;resizable:0;status:0;center:1;
scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px")')
else
eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,
scrollbars=1")')
}
//-->
</script>
</head>
<body scroll="no">
<div align="right"><a href="javascript:" onclick="window.close()">关闭
</a> </div>
<p></P>
<div align="right"><a href="javascript:" onclick="opensmallwin('login.htm')">d
</a> </div>
<p></P>
<div align="center"><a href="javascript:"
onclick="modelesswin('login.htm',300,160)">用模态登录窗?lt;/a> </div>
</body>
</html>
login.htm
<html>
<head>
<title>用户d</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body {
background-color: #EAEAEA;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 24px;
color: #336699;
}
input.boxline {
width: 100px;
font-family: "Times New Roman", "Times", "serif";
font-size: 9pt;
border: 1px solid #669999;
height: 18px;
}
input.whiteline {
font-size: 12px; border: 1px #999999 solid
}
-->
</style></head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="14" bgcolor="#CCCCCC">
<tr valign="top">
<td width="10%" nowrap align="right"><b>用户名:</b></td>
<td width="90%"><input name="textfield1" type="text" size="25"
class="whiteline"></td>
</tr>
<tr valign="top">
<td nowrap align="right"><b>密 码:</b></td>
<td><input name="textfield12" type="password" size="25"
class="whiteline"></td>
</tr>
<tr valign="top">
<td> </td>
<td><input type="submit" name="Submit" value="癅R ?
class="boxline"></td>
</tr>
</table>
</body>
</html>
自动x原窗口:
<html>
<head>
<title>无标题文?lt;/title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>
</head>
<body onload="window.open('fullscreen.htm','','fullscreen=1,scroll=no');
window.opener=null;window.close()">
<input type=button value=关闭 onclick="window.opener=null;window.close()">
<!-- IE5.5+ 不会有弹出提C?-->
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2
height=0 width=0></OBJECT>
<input type=button value=关闭H口 onclick=document.all.WebBrowser.ExecWB(45,1)>
</body>
</html>
关键是在onload事g中加入:
window.opener=null;window.close()
预读囄Q?
<SCRIPT LANGUAGE="JavaScript">
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! <a href=http://javascript.internet.com
target=_blank>http://javascript.internet.com -->
<!-- Begin
image1 = new Image();
image1.src = "image1.gif";
image2 = new Image();
image2.src = "image2.gif";
// End -->
</script>
关于两个|页h交互的问?nbsp;
JS处理ҎQ?nbsp;
a.htm
<a href="b.htm" target=blank>发表留言</a>
<script>
alert("wwwwwwwwwwwwwwwwwwwwwwwwww");
</script>
b.htm
<script language="javascript">
//window.opener.location.reload();h父窗?nbsp;
//window.opener.location="2.htm"http://重定向父H口?.htm?nbsp;
function closewindow()
{
window.opener.location.reload();
self.close();
window.opener.document.write("sssssssssssssssssss");
}
</script>
<a href="b.htm" target=blank onclick="closewindow();">关闭</a>
后台处理ҎQ?nbsp;
private btnForSubmit(Object sender,EventArgs e)
{
.............
Response.Write("<script>window.opener.document.execCommand('refresh');
window.opener='';window.close();</script>");
//string str="<script>window.opener.document.execCommand('refresh');
window.opener='';window.close();</script>";
//this.RegisterStartupScript("mycode",str);
external.m2_blocked()、external.m2_blocked()Ҏ使用详解
Javascript有许多内建的Ҏ来生对话框Q如Qwindow.alert(),
window.confirm(),window.prompt().{?然而IE提供更多的方法支持对话框。如Q?
external.m2_blocked() (IE 4+ 支持)
external.m2_blocked() (IE 5+ 支持)
window.external.m2_blocked()Ҏ用来创徏一个显CHTML内容的模态对话框Q?br>׃是对话框Q因此它q没有一般用window.open()打开的窗口的所有属性?
window.external.m2_blocked()Ҏ用来创徏一个显CHTML内容的非模态对话框?
当我们用external.m2_blocked()打开H口Ӟ不必用window.close()d闭它Q?br>当以非模态方式[IE5]打开Ӟ 打开对话框的H口仍可以进行其他的操作Q即对话?br>不L最上面的焦点,当打开它的H口QRQ改变时Q它自动关闭。而模态[QIQ]
方式的对话框始终有焦点(焦点不可U走Q直到它关闭Q。模态对话框和打开它的H?br>口相联系Q因此我们打开另外的窗口时Q他们的链接关系依然保存Qƈ且隐藏在zd
H口的下面?
使用Ҏ如下Q?
vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures])
vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures])
参数说明Q?
sURL
必选参敎ͼcdQ字W串。用来指定对话框要显C的文档的URL?
vArguments
可选参敎ͼcdQ变体。用来向对话框传递参数。传递的参数cd不限Q包括数l等?br>对话框通过window.dialogArguments来取得传递进来的参数?
sFeatures
可选参敎ͼcdQ字W串。用来描q对话框的外观等信息Q可以用以下的一个或几个Q?br>用分?#8220;;”隔开?
dialogHeight 对话框高度,不小于1Q0pxQテQ4中dialogHeight ?dialogWidth
默认的单位是emQ而テQ5中是pxQؓ方便其见Q在定义modal方式的对话框Ӟ用px
做单位?
dialogWidth: 对话框宽度?
dialogLeft: 距离桌面左的距离?
dialogTop: L面上的距R?
center: {yes | no | 1 | 0 }Q窗口是否居中,默认yesQ但仍可以指定高度和宽度?
help: {yes | no | 1 | 0 }Q是否显C帮助按钮,默认yes?
resizable: {yes | no | 1 | 0 } [QIQ+]Q是否可被改变大。默认no?
status: {yes | no | 1 | 0 } [IE5+]Q是否显C状态栏。默认ؓyes[ Modeless]
或no[Modal]?
scroll:{ yes | no | 1 | 0 | on | off }Q指明对话框是否昄滚动条。默认ؓyes?
q有几个属性是用在HTA中的Q在一般的|页中一般不使用?
dialogHide:{ yes | no | 1 | 0 | on | off }Q在打印或者打印预览时对话框是否隐藏?br>默认为no?
edge:{ sunken | raised }Q指明对话框的边框样式。默认ؓraised?
unadorned:{ yes | no | 1 | 0 | on | off }Q默认ؓno?
传入参数Q?
要想对话框传递参敎ͼ是通过vArguments来进行传递的。类型不限制Q对于字W串cdQ?br>最大ؓ4096个字W。也可以传递对象,例如Q?
test1.htm
====================
<script>
var mxh1 = new Array("mxh","net_lover","孟子E?)
var mxh2 = window.open("about:blank","window_mxh")
// 向对话框传递数l?
window.external.m2_blocked("test2.htm",mxh1)
// 向对话框传递window对象
window.external.m2_blocked("test3.htm",mxh2)
</script>
test2.htm
====================
<script>
var a = window.dialogArguments
alert("您传递的参数为:" + a)
</script>
test3.htm
====================
<script>
var a = window.dialogArguments
alert("您传递的参数为window对象Q名Uͼ" + a.name)
</script>
可以通过window.returnValue向打开对话框的H口q回信息Q当然也可以是对象?br>例如Q?
test4.htm
===================
<script>
var a = window.external.m2_blocked("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
</script>
test5.htm
===================
<script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
</script>
<body>
<form>
<input value="q回" type=button onclick="sendTo()">
</form>
常见问题Q?
1Q如何在模态对话框中进行提交而不新开H口Q?
如果??览器是IE5.5+,可以在对话框中用带name属性的iframeQ提交时可以
制定targetiframe的name。对于IE4+Q你可以用高度ؓ0的frame来作Q例子,
test6.htm
===================
<script>
window.external.m2_blocked("test7.htm")
</script>
test7.htm
===================
if(window.location.search) alert(window.location.search)
<frameset rows="0,*">
<frame src="about:blank">
<frame src="test8.htm">
</frameset>
test8.htm
===================
<form target="_self" method="get">
<input name=txt value="test">
<input type=submit>
</form>
<script>
if(window.location.search) alert(window.location.search)
</script>
2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接?br>对话框传递参数吗Q?
{案是不能。但在frame里是可以的?
//屏蔽 F5 h?
function document.onkeydown()
{
var k = window.event.keyCode;
if (k == 116) //屏蔽 F5 h?
{
window.event.keyCode = 0;
window.event.returnValue= false;
}
}
<script language="Javascript">
//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5h、退格键
//屏蔽F1帮助
function window.onhelp()
{
return false
}
function KeyDown()
{
//alert(event.keyCode);
//屏蔽 Alt+ 方向?← 屏蔽 Alt+ 方向?→
if ((window.event.altKey)&&((window.event.keyCode==37)||
(window.event.keyCode==39)))
{
//alert("不准你用ALT+方向键前q或后退|页Q?);
event.returnValue=false;
}
//屏蔽退格删除键,屏蔽 F5 h?Ctrl + R
if ((event.keyCode==116)||(event.ctrlKey && event.keyCode==82))
{
event.keyCode=0;
event.returnValue=false;
}
//屏蔽 Ctrl+n
if ((event.ctrlKey)&&(event.keyCode==78))
{
event.returnValue=false;
}
//屏蔽 shift+F10
if ((event.shiftKey)&&(event.keyCode==121))
{
event.returnValue=false;
}
//屏蔽 shift 加鼠标左键新开一|页
if (window.event.srcElement.tagName == "A" && window.event.shiftKey)
{
window.event.returnValue = false;
}
//屏蔽Alt+F4
if ((window.event.altKey)&&(window.event.keyCode==115))
{
window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px");
return false;
}
//屏蔽Ctrl+A
if((event.ctrlKey)&&(event.keyCode==65))
{
return false;
}
}
</script>
</body>
</HTML>
//各种寸
//qo数字
//Ҏ用?
//不缓?
//无提C关?
//取得控g得绝对位|?1)
//获得控g的绝对位|?2)
//最化,最大化,关闭
//光标停在文字最?
//面q入和退出的Ҏ
//|页是否被检?
//打印分页
//讄打印
//自带的打印预?
//L打印时的늜脚
//览器验?
//计算内容宽和?
//无模式的提示?
//屏蔽按键
//Ud的图层,拖动
//文档状态改?
//h后不变的文本?
//讉K剪脓?
//操作COOKIE
//setTimeout增加参数
//自定义的apply,call
//下蝲文g
//验连接是否有?
//lg是否安装
isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID"))
//查网|否存?
//POST代替FORM
//readyState是xmlhttpq回数据的进度,0=载入?1=未初始化,2=已蝲?3=q行?4=完成
//屏蔽打印
<style>
@media print{
* {display:none}
}
</style>
//消除囑փ工具?
[1] <body ="this.focus();">
[2]模态窗口showModalDialog(url); 不过模式H口中对老页面无法回?打开的子H口不能得到openner,因此子窗口无法访问父H口数据. 如果要传递数据的? 只能在DialogH口中用return,然后父窗口通过var some = showModalDialog(...)得到?
[3]非模态窗?span style="COLOR: #c60a00">window.showModelessDialog
[4]open来打开新窗?/span>