﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-常言笑的家-随笔分类-JAVASCRIPT/AJAX</title><link>http://www.blogjava.net/wealupa/category/23609.html</link><description>Spring, Hibernate, Struts, Ajax, RoR</description><language>zh-cn</language><lastBuildDate>Thu, 24 Apr 2008 06:58:48 GMT</lastBuildDate><pubDate>Thu, 24 Apr 2008 06:58:48 GMT</pubDate><ttl>60</ttl><item><title>JavaScript日期控件</title><link>http://www.blogjava.net/wealupa/archive/2008/04/24/195390.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Thu, 24 Apr 2008 01:51:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2008/04/24/195390.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/195390.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2008/04/24/195390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/195390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/195390.html</trackback:ping><description><![CDATA[<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;script language=javascript&gt;<br />
function isDateTime(str){ <br />
var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/); <br />
if (a == null) return false; <br />
if ( a[2]&gt;=13 || a[3]&gt;=32 || a[4]&gt;=24 || a[5]&gt;=60 || a[6]&gt;=60) return false; <br />
return true; <br />
}<br />
&lt;/script&gt;<br />
&lt;script language=javascript&gt;<br />
document.write("&lt;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'&gt;");<br />
document.write("&lt;iframe name=meizzCalendarIframe scrolling=no frameborder=0 width=100% height=100%&gt;&lt;/iframe&gt;&lt;/div&gt;");<br />
function writeIframe()<br />
{<br />
&nbsp;&nbsp;&nbsp; var strIframe = "&lt;html&gt;&lt;head&gt;&lt;meta http-equiv='Content-Type' content='text/html; charset=gb2312'&gt;&lt;style&gt;"+<br />
&nbsp;&nbsp;&nbsp; "*{font-size: 12px; font-family: 宋体}"+</p>
<p>&nbsp;&nbsp;&nbsp; "&lt;/style&gt;&lt;/head&gt;&lt;body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'&gt;&lt;form name=meizz&gt;";<br />
&nbsp;&nbsp;&nbsp; if (WebCalendar.drag){ strIframe += "&lt;scr"+"ipt language=javascript&gt;"+<br />
&nbsp;&nbsp;&nbsp; "var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){"+<br />
&nbsp;&nbsp;&nbsp; "if(parent.WebCalendar.drag &amp;&amp; drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0;"+<br />
&nbsp;&nbsp;&nbsp; "o.style.left = parseInt(o.style.left) + window.event.clientX-cx;"+<br />
&nbsp;&nbsp;&nbsp; "o.style.top&nbsp; = parseInt(o.style.top)&nbsp; + window.event.clientY-cy;}}"+<br />
&nbsp;&nbsp;&nbsp; "function document.onkeydown(){ switch(window.event.keyCode){&nbsp; case 27 : parent.hiddenCalendar(); break;"+<br />
&nbsp;&nbsp;&nbsp; "case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break;"+<br />
&nbsp;&nbsp;&nbsp; "case 84 : document.forms[0].today.click(); break;} window.event.keyCode = 0; window.event.returnValue= false;}"+<br />
&nbsp;&nbsp;&nbsp; "function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}&lt;/scr"+"ipt&gt;"}<br />
&nbsp;&nbsp;&nbsp; strIframe += "&lt;select name=tmpYearSelect&nbsp; onblur='parent.hiddenSelect(this)' style='z-index:1;position:absolute;top:3;left:40;display:none'"+<br />
&nbsp;&nbsp;&nbsp; " onchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'&gt;&lt;/select&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;select name=tmpMonthSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:3;left:110;display:none'"+<br />
&nbsp;&nbsp;&nbsp; " onchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'&gt;&lt;/select&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;select name=tmpHourSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:35;display:none'"+<br />
&nbsp;&nbsp;&nbsp; " onchange='parent.WebCalendar.thisHour=this.value; parent.hiddenSelect(this); parent.writeCalendar();'&gt;&lt;/select&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;select name=tmpMinuteSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:80;display:none'"+<br />
&nbsp;&nbsp;&nbsp; " onchange='parent.WebCalendar.thisMinute=this.value; parent.hiddenSelect(this); parent.writeCalendar();'&gt;&lt;/select&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;select name=tmpSecondSelect onblur='parent.hiddenSelect(this)' style='z-index:1; position:absolute;top:179;left:125;display:none'"+<br />
&nbsp;&nbsp;&nbsp; " onchange='parent.WebCalendar.thisSecond=this.value; parent.hiddenSelect(this); parent.writeCalendar();'&gt;&lt;/select&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;table id=tableMain border='1' cellpadding='0' cellspacing='0' bordercolor='#C0D0E8' bordercolorlight='#C0D0E8' bordercolordark='#C0D0E8' width='100%' height='100%'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;tr&gt;&lt;td height=19 bgcolor='"+ WebCalendar.lightColor +"'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;table width='98%' id=tableHead border=0 cellspacing=1 cellpadding=0 align='center'&gt;&lt;tr align=center&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td title='向前翻 1 年' onclick='parent.prevY()' style='cursor: hand' class=bg&gt;&lt;&lt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=15 height=19 class=bg title='向前翻 1 月' style='cursor: hand' onclick='parent.prevM()'&gt;&lt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=60 id=meizzYearHead&nbsp; title='点击此处选择年份' onclick='parent.funYearSelect(parseInt(this.innerText, 10))'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=50 id=meizzYearMonth title='点击此处选择月份' onclick='parent.funMonthSelect(parseInt(this.innerText, 10))'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=15 class=bg title='向后翻 1 月' onclick='parent.nextM()' style='cursor: hand'&gt;&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td title='向后翻 1 年' onclick='parent.nextY()' style='cursor: hand' class=bg&gt;&gt;&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/tr&gt;&lt;/table&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 align='center'&gt;&lt;table id=tableWeek border=1 width='98%' cellpadding=0 cellspacing=0 ";<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.drag){strIframe += "onmousedown='dragStart()' onmouseup='drag=false' onmouseout='drag=false'";}<br />
&nbsp;&nbsp;&nbsp; strIframe += " borderColorLight='#FFFFFF' borderColorDark='#FFFFFF'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;tr align=center bgcolor='#6699FF'&gt;&lt;td height=20&gt;&lt;font color='#FF0000'&gt;日&lt;/font&gt;&lt;/td&gt;&lt;td&gt;一&lt;/td&gt;&lt;td&gt;二&lt;/td&gt;&lt;td&gt;三&lt;/td&gt;&lt;td&gt;四&lt;/td&gt;&lt;td&gt;五&lt;/td&gt;&lt;td&gt;&lt;font color='#FF0000'&gt;六&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign=top align='center' bgcolor='"+ WebCalendar.lightColor +"'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;table id=tableDay height='100%' width='98%' border=0 cellspacing=1 cellpadding=0&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var x=0; x&lt;5; x++){ strIframe += "&lt;tr&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var y=0; y&lt;7; y++)&nbsp; strIframe += "&lt;td class=out id='meizzDay"+ (x*7+y) +"'&gt;&lt;/td&gt;"; strIframe += "&lt;/tr&gt;";}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strIframe += "&lt;tr&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var x=35; x&lt;39; x++) strIframe += "&lt;td class=out id='meizzDay"+ x +"'&gt;&lt;/td&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strIframe +="&lt;td colspan=3 class=out title='"+ WebCalendar.regInfo +"'&gt;&lt;input style=' background-color: "+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.btnBgColor +";cursor: hand; padding-top: 4px; width: 100%; height: 100%; border: 0' onfocus='this.blur()'"+<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " type=button value='&nbsp;&nbsp;&nbsp; 关闭' onclick='parent.hiddenCalendar()'&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20&nbsp; align='center' bgcolor='"+ WebCalendar.lightColor +"'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;table border=0 cellpadding=1 cellspacing=0 width='98%'&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;tr&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=15 height=19 title='向前翻 1 小时' onclick='parent.prevH()' style='cursor: hand' class=bg&gt;&lt;&lt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=15 height=19 title='向前翻 1 分钟' onclick='parent.prevMi()' style='cursor: hand' class=bg&gt;&lt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=60 id=meizzHourHead&nbsp; title='点击此处选择小时' onclick='parent.funHourSelect(parseInt(this.innerText, 10))'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=50 id=meizzMinuteHead title='点击此处选择分钟' onclick='parent.funMinuteSelect(parseInt(this.innerText, 10))'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp; &lt;td width=50 id=meizzSecondHead title='点击此处选择秒' onclick='parent.funSecondSelect(parseInt(this.innerText, 10))'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td title='向后翻 1 分钟' onclick='parent.nextMi()' style='cursor: hand' class=bg&gt;&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td title='向后翻 1 小时' onclick='parent.nextH()' style='cursor: hand' class=bg&gt;&gt;&gt;&lt;/td&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/tr&gt;&lt;/table&gt;"+<br />
&nbsp;&nbsp;&nbsp; "&lt;/td&gt;&lt;/tr&gt;&lt;table&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;";<br />
&nbsp;&nbsp;&nbsp; with(WebCalendar.iframe)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.writeln(strIframe); document.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(var i=0; i&lt;39; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i] = eval("meizzDay"+ i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].onmouseover = dayMouseOver;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].onmouseout&nbsp; = dayMouseOut;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].onclick&nbsp;&nbsp;&nbsp;&nbsp; = returnDate;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
function WebCalendar() //初始化日历的设置<br />
{<br />
&nbsp;&nbsp;&nbsp; this.daysMonth&nbsp; = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);<br />
&nbsp;&nbsp;&nbsp; this.day&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new Array(39);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义日历展示用的数组<br />
&nbsp;&nbsp;&nbsp; this.dayObj&nbsp;&nbsp;&nbsp;&nbsp; = new Array(39);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义日期展示控件数组<br />
&nbsp;&nbsp;&nbsp; this.dateStyle&nbsp; = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //保存格式化后日期数组<br />
&nbsp;&nbsp;&nbsp; this.objExport&nbsp; = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //日历回传的显示控件<br />
&nbsp;&nbsp;&nbsp; this.eventSrc&nbsp;&nbsp; = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //日历显示的触发控件<br />
&nbsp;&nbsp;&nbsp; this.inputDate&nbsp; = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转化外的输入的日期(d/m/yyyy)<br />
&nbsp;&nbsp;&nbsp; this.thisYear&nbsp;&nbsp; = new Date().getFullYear(); //定义年的变量的初始值<br />
&nbsp;&nbsp;&nbsp; this.thisMonth&nbsp; = new Date().getMonth()+ 1; //定义月的变量的初始值<br />
&nbsp;&nbsp;&nbsp; this.thisDay&nbsp;&nbsp;&nbsp; = new Date().getDate();&nbsp;&nbsp;&nbsp;&nbsp; //定义日的变量的初始值<br />
&nbsp;&nbsp;&nbsp; this.thisHour&nbsp;&nbsp; = new Date().getHours();&nbsp;&nbsp;&nbsp; //定义小时得变量初始值<br />
&nbsp;&nbsp;&nbsp; this.thisMinute = new Date().getMinutes();&nbsp; //定义分钟得变量初始值<br />
&nbsp;&nbsp;&nbsp; this.thisSecond = new Date().getSeconds();&nbsp; //定义秒得标量的初始值<br />
&nbsp;&nbsp;&nbsp; this.today&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = this.thisDay +"/"+ this.thisMonth +"/"+ this.thisYear;&nbsp;&nbsp; //今天(d/m/yyyy)<br />
&nbsp;&nbsp;&nbsp; this.iframe&nbsp;&nbsp;&nbsp;&nbsp; = window.frames("meizzCalendarIframe"); //日历的 iframe 载体<br />
&nbsp;&nbsp;&nbsp; this.calendar&nbsp;&nbsp; = getObjectById("meizzCalendarLayer");&nbsp; //日历的层<br />
&nbsp;&nbsp;&nbsp; this.dateReg&nbsp;&nbsp;&nbsp; = "";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //日历格式验证的正则式<br />
&nbsp;&nbsp;&nbsp; this.yearFall&nbsp;&nbsp; = 50;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义年下拉框的年差值<br />
&nbsp;&nbsp;&nbsp; this.format&nbsp;&nbsp;&nbsp;&nbsp; = "yyyy-mm-dd"; //回传日期的格式<br />
&nbsp;&nbsp;&nbsp; this.timeShow&nbsp;&nbsp; = true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否返回时间<br />
&nbsp;&nbsp;&nbsp; this.drag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否允许拖动<br />
&nbsp;&nbsp;&nbsp; this.darkColor&nbsp; = "#0000D0";&nbsp;&nbsp;&nbsp; //控件的暗色<br />
&nbsp;&nbsp;&nbsp; this.lightColor = "#FFFFFF";&nbsp;&nbsp;&nbsp; //控件的亮色<br />
&nbsp;&nbsp;&nbsp; this.btnBgColor = "#E6E6FA";&nbsp;&nbsp;&nbsp; //控件的按钮背景色<br />
&nbsp;&nbsp;&nbsp; this.wordColor&nbsp; = "#000080";&nbsp;&nbsp;&nbsp; //控件的文字颜色<br />
&nbsp;&nbsp;&nbsp; this.wordDark&nbsp;&nbsp; = "#DCDCDC";&nbsp;&nbsp;&nbsp; //控件的暗文字颜色<br />
&nbsp;&nbsp;&nbsp; this.dayBgColor = "#F5F5FA";&nbsp;&nbsp;&nbsp; //日期数字背景色<br />
&nbsp;&nbsp;&nbsp; this.todayColor = "#FF0000";&nbsp;&nbsp;&nbsp; //今天在日历上的标示背景色<br />
&nbsp;&nbsp;&nbsp; this.DarkBorder = "#D4D0C8";&nbsp;&nbsp;&nbsp; //日期显示的立体表达色<br />
}&nbsp;&nbsp; var WebCalendar = new WebCalendar();<br />
function calendar() //主调函数<br />
{<br />
&nbsp;&nbsp;&nbsp; var e = window.event.srcElement;&nbsp;&nbsp; writeIframe();<br />
&nbsp;&nbsp;&nbsp; var o = WebCalendar.calendar.style; WebCalendar.eventSrc = e;<br />
&nbsp;if (arguments.length == 0) WebCalendar.objExport = e;<br />
&nbsp;&nbsp;&nbsp; else WebCalendar.objExport = eval(arguments[0]);<br />
&nbsp;&nbsp;&nbsp; WebCalendar.iframe.tableWeek.style.cursor = WebCalendar.drag ? "move" : "default";<br />
&nbsp;var t = e.offsetTop,&nbsp; h = e.clientHeight, l = e.offsetLeft, p = e.type;<br />
&nbsp;while (e = e.offsetParent){t += e.offsetTop; l += e.offsetLeft;}<br />
&nbsp;&nbsp;&nbsp; o.display = ""; WebCalendar.iframe.document.body.focus();<br />
&nbsp;&nbsp;&nbsp; var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;<br />
&nbsp;&nbsp;&nbsp; var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; if (document.body.clientHeight + dt - t - h &gt;= ch) o.top = (p=="image")? t + h : t + h + 6;<br />
&nbsp;&nbsp;&nbsp; else o.top&nbsp; = (t - dt &lt; ch) ? ((p=="image")? t + h : t + h + 6) : t - ch;<br />
&nbsp;&nbsp;&nbsp; if (dw + dl - l &gt;= cw) o.left = l; else o.left = (dw &gt;= cw) ? dw - cw + dl : dl;<br />
&nbsp;&nbsp;&nbsp; if&nbsp; (!WebCalendar.timeShow) WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;<br />
&nbsp;&nbsp;&nbsp; else WebCalendar.dateReg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;<br />
&nbsp;&nbsp;&nbsp; try{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WebCalendar.objExport.value.trim() != ""){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dateStyle = WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WebCalendar.dateStyle == null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisYear&nbsp;&nbsp; = new Date().getFullYear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth&nbsp; = new Date().getMonth()+ 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisDay&nbsp;&nbsp;&nbsp; = new Date().getDate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("原文本框里的日期有错误！\n可能与你定义的显示时分秒有冲突！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writeCalendar(); return false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisYear&nbsp;&nbsp; = parseInt(WebCalendar.dateStyle[1], 10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth&nbsp; = parseInt(WebCalendar.dateStyle[3], 10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisDay&nbsp;&nbsp;&nbsp; = parseInt(WebCalendar.dateStyle[4], 10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.inputDate&nbsp; = parseInt(WebCalendar.thisDay, 10) +"/"+ parseInt(WebCalendar.thisMonth, 10) +"/"+ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parseInt(WebCalendar.thisYear, 10); writeCalendar();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; else writeCalendar();<br />
&nbsp;&nbsp;&nbsp; }&nbsp; catch(e){writeCalendar();}<br />
}<br />
function funMonthSelect() //月份的下拉框<br />
{<br />
&nbsp;&nbsp;&nbsp; var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);<br />
&nbsp;&nbsp;&nbsp; var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;<br />
&nbsp;&nbsp;&nbsp; for (var i=1; i&lt;13; i++) e.options.add(new Option(i +"月", i));<br />
&nbsp;&nbsp;&nbsp; e.style.display = ""; e.value = m; e.focus(); window.status = e.style.top;<br />
}<br />
function funYearSelect() //年份的下拉框<br />
{<br />
&nbsp;&nbsp;&nbsp; var n = WebCalendar.yearFall;<br />
&nbsp;&nbsp;&nbsp; var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;<br />
&nbsp;&nbsp;&nbsp; var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y = (y &lt;= 1000)? 1000 : ((y &gt;= 9999)? 9999 : y);<br />
&nbsp;&nbsp;&nbsp; var min = (y - n &gt;= 1000) ? y - n : 1000;<br />
&nbsp;&nbsp;&nbsp; var max = (y + n &lt;= 9999) ? y + n : 9999;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min = (max == 9999) ? max-n*2 : min;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max = (min == 1000) ? min+n*2 : max;<br />
&nbsp;&nbsp;&nbsp; for (var i=min; i&lt;=max; i++) e.options.add(new Option(i +"年", i));<br />
&nbsp;&nbsp;&nbsp; e.style.display = ""; e.value = y; e.focus();<br />
}</p>
<p>function funHourSelect() //小时的下拉框<br />
{<br />
&nbsp;&nbsp;&nbsp; var e = WebCalendar.iframe.document.forms[0].tmpHourSelect;<br />
&nbsp;&nbsp;&nbsp; var h = isNaN(parseInt(WebCalendar.thisHour, 10)) ? new Date().getHours() : parseInt(WebCalendar.thisHour);<br />
&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;=23; i++) e.options.add(new Option(appendZero(i) +"时", i));<br />
&nbsp;&nbsp;&nbsp; e.style.display = ""; e.value = h; e.focus();<br />
}</p>
<p>function funMinuteSelect() //分钟的下拉框<br />
{<br />
&nbsp;&nbsp;&nbsp; var e = WebCalendar.iframe.document.forms[0].tmpMinuteSelect;<br />
&nbsp;&nbsp;&nbsp; var mi = isNaN(parseInt(WebCalendar.thisMinute, 10)) ? new Date().getMinutes() : parseInt(WebCalendar.thisMinute);<br />
&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;=59; i++) e.options.add(new Option(appendZero(i) +"分", i));<br />
&nbsp;&nbsp;&nbsp; e.style.display = ""; e.value = mi; e.focus();<br />
}</p>
<p>function funSecondSelect() //秒的下拉框<br />
{<br />
&nbsp;&nbsp;&nbsp; var e = WebCalendar.iframe.document.forms[0].tmpSecondSelect;<br />
&nbsp;&nbsp;&nbsp; var s = isNaN(parseInt(WebCalendar.thisSecond, 10)) ? new Date().getSecondes() : parseInt(WebCalendar.thisSecond);<br />
&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;=59; i++) e.options.add(new Option(appendZero(i) +"秒", i));<br />
&nbsp;&nbsp;&nbsp; e.style.display = ""; e.value = s; e.focus();<br />
}</p>
<p>function prevM()&nbsp; //往前翻月份<br />
{<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisDay = 1;<br />
&nbsp;&nbsp;&nbsp; if (WebCalendar.thisMonth==1)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisYear--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth=13;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth--; writeCalendar();<br />
}<br />
function nextM()&nbsp; //往后翻月份<br />
{<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisDay = 1;<br />
&nbsp;&nbsp;&nbsp; if (WebCalendar.thisMonth==12)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisYear++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth=0;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth++; writeCalendar();<br />
}</p>
<p>function prevH()&nbsp;&nbsp; //往前翻小时<br />
{<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisHour--;<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.thisHour==-1)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisHour=23;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; writeCalendar();<br />
}<br />
function nextH()&nbsp;&nbsp; //往后翻小时<br />
{ <br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisHour++;<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.thisHour==24)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisHour=0;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; writeCalendar();<br />
}</p>
<p><br />
function prevMi()&nbsp;&nbsp; //往前翻小时<br />
{<br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisMinute--;<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.thisMinute==-1)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMinute=59;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; writeCalendar();<br />
}<br />
function nextMi()&nbsp;&nbsp; //往后翻小时<br />
{ <br />
&nbsp;&nbsp;&nbsp; WebCalendar.thisMinute++;<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.thisMinute==60)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMinute=0;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; writeCalendar();<br />
}</p>
<p><br />
function prevY(){WebCalendar.thisDay = 1; WebCalendar.thisYear--; writeCalendar();}//往前翻 Year<br />
function nextY(){WebCalendar.thisDay = 1; WebCalendar.thisYear++; writeCalendar();}//往后翻 Year<br />
function hiddenSelect(e){for(var i=e.options.length; i&gt;-1; i--)e.options.remove(i); e.style.display="none";}<br />
function getObjectById(id){ if(document.all) return(eval("document.all."+ id)); return(eval(id)); }<br />
function hiddenCalendar(){getObjectById("meizzCalendarLayer").style.display = "none";};<br />
function appendZero(n){return(("00"+ n).substr(("00"+ n).length-2));}//日期自动补零程序<br />
function String.prototype.trim(){return this.replace(/(^\s*)|(\s*$)/g,"");}<br />
function dayMouseOver()<br />
{<br />
&nbsp;&nbsp;&nbsp; this.className = "over";<br />
&nbsp;&nbsp;&nbsp; this.style.backgroundColor = WebCalendar.darkColor;<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.day[this.id.substr(8)].split("/")[1] == WebCalendar.thisMonth)<br />
&nbsp;&nbsp;&nbsp; this.style.color = WebCalendar.lightColor;<br />
}<br />
function dayMouseOut()<br />
{<br />
&nbsp;&nbsp;&nbsp; this.className = "out"; var d = WebCalendar.day[this.id.substr(8)], a = d.split("/");<br />
&nbsp;&nbsp;&nbsp; this.style.removeAttribute('backgroundColor');<br />
&nbsp;&nbsp;&nbsp; if(a[1] == WebCalendar.thisMonth &amp;&amp; d != WebCalendar.today)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(WebCalendar.dateStyle &amp;&amp; a[0] == parseInt(WebCalendar.dateStyle[4], 10))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.color = WebCalendar.lightColor;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.style.color = WebCalendar.wordColor;<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
function writeCalendar() //对日历显示的数据的处理程序<br />
{<br />
&nbsp;&nbsp;&nbsp; var y = WebCalendar.thisYear;<br />
&nbsp;&nbsp;&nbsp; var m = WebCalendar.thisMonth; <br />
&nbsp;&nbsp;&nbsp; var d = WebCalendar.thisDay;<br />
&nbsp;&nbsp;&nbsp; var h = WebCalendar.thisHour;<br />
&nbsp;&nbsp;&nbsp; var mi = WebCalendar.thisMinute;<br />
&nbsp;&nbsp;&nbsp; var s = WebCalendar.thisSecond;<br />
&nbsp;&nbsp;&nbsp; WebCalendar.daysMonth[1] = (0==y%4 &amp;&amp; (y%100!=0 || y%400==0)) ? 29 : 28;<br />
&nbsp;&nbsp;&nbsp; if (!(y&lt;=9999 &amp;&amp; y &gt;= 1000 &amp;&amp; parseInt(m, 10)&gt;0 &amp;&amp; parseInt(m, 10)&lt;13 &amp;&amp; parseInt(d, 10)&gt;0)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("对不起，你输入了错误的日期！");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisYear&nbsp;&nbsp; = new Date().getFullYear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMonth&nbsp; = new Date().getMonth()+ 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisDay&nbsp;&nbsp;&nbsp; = new Date().getDate(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisHour&nbsp;&nbsp; = new Date().getHours();&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisMinute = new Date().getMinutes();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.thisSecond = new Date().getSeconds(); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y = WebCalendar.thisYear;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m = WebCalendar.thisMonth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d = WebCalendar.thisDay;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h = WebCalendar.thisHour;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi = WebCalendar.thisMinute;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s = WebCalendar.thisSecond;</p>
<p>&nbsp;&nbsp;&nbsp; WebCalendar.iframe.meizzYearHead.innerText&nbsp; = y +" 年";<br />
&nbsp;&nbsp;&nbsp; WebCalendar.iframe.meizzYearMonth.innerText = parseInt(m, 10) +" 月";<br />
&nbsp;&nbsp;&nbsp; WebCalendar.iframe.meizzHourHead.innerText =appendZero(parseInt(h, 10)) +" 时";<br />
&nbsp;&nbsp;&nbsp; WebCalendar.iframe.meizzMinuteHead.innerText =appendZero(parseInt(mi, 10)) +" 分";<br />
&nbsp;&nbsp;&nbsp; WebCalendar.iframe.meizzSecondHead.innerText =appendZero(parseInt(s, 10))+" 秒";</p>
<p>&nbsp;&nbsp;&nbsp; WebCalendar.daysMonth[1] = (0==y%4 &amp;&amp; (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天<br />
&nbsp;&nbsp;&nbsp; var w = new Date(y, m-1, 1).getDay();<br />
&nbsp;&nbsp;&nbsp; var prevDays = m==1&nbsp; ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];<br />
&nbsp;&nbsp;&nbsp; for(var i=(w-1); i&gt;=0; i--) //这三个 for 循环为日历赋数据源（数组 WebCalendar.day）格式是 d/m/yyyy<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.day[i] = prevDays +"/"+ (parseInt(m, 10)-1) +"/"+ y;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m==1) WebCalendar.day[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prevDays--;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; for(var i=1; i&lt;=WebCalendar.daysMonth[m-1]; i++) WebCalendar.day[i+w-1] = i +"/"+ m +"/"+ y;<br />
&nbsp;&nbsp;&nbsp; for(var i=1; i&lt;39-w-WebCalendar.daysMonth[m-1]+1; i++)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ (parseInt(m, 10)+1) +"/"+ y;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m==12) WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; for(var i=0; i&lt;39; i++)&nbsp;&nbsp;&nbsp; //这个循环是根据源数组写到日历里显示<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = WebCalendar.day[i].split("/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].innerText&nbsp;&nbsp;&nbsp; = a[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = a[2] +"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].bgColor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = WebCalendar.dayBgColor;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].style.color&nbsp; = WebCalendar.wordColor;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((i&lt;10 &amp;&amp; parseInt(WebCalendar.day[i], 10)&gt;20) || (i&gt;27 &amp;&amp; parseInt(WebCalendar.day[i], 10)&lt;12))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WebCalendar.inputDate==WebCalendar.day[i])&nbsp;&nbsp;&nbsp; //设置输入框里的日期在日历上的颜色<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (WebCalendar.day[i] == WebCalendar.today)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置今天在日历上反应出来的颜色<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
function returnDate() //根据日期格式等返回用户选定的日期<br />
{<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.objExport)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var returnValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var d = WebCalendar.format.match(/^(\w{4})(-|\/)(\w{1,2})\2(\w{1,2})$/);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(d==null){alert("你设定的日期输出格式不对！\r\n\r\n请重新定义 WebCalendar.format ！"); return false;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(WebCalendar.timeShow)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var h = WebCalendar.thisHour, m = WebCalendar.thisMinute, s = WebCalendar.thisSecond;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+&nbsp; h&nbsp; +":"+ m +":"+ s;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WebCalendar.objExport.value = returnValue;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hiddenCalendar();<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>function document.onclick()<br />
{<br />
&nbsp;&nbsp;&nbsp; if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;input type=button onclick="alert(isDateTime('2006-10-2 12:23:34'))" value="时间格式测试"&gt;<br />
&lt;input type=text onfocus="calendar()"&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</p>
<img src ="http://www.blogjava.net/wealupa/aggbug/195390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2008-04-24 09:51 <a href="http://www.blogjava.net/wealupa/archive/2008/04/24/195390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用xmlhttp和Java session监听改善站内消息系统</title><link>http://www.blogjava.net/wealupa/archive/2007/06/26/126304.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Tue, 26 Jun 2007 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2007/06/26/126304.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/126304.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2007/06/26/126304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/126304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/126304.html</trackback:ping><description><![CDATA[<p>　　这个题目含有许多需要解释的概念，最容易说明的是&#8220;站内消息&#8221;，这是很多论坛都有的功能，可以通过web向其他的在线用户发送消息，很多用户都使用过。站内消息的第一个好处是大家都不需要安装客户端，你不用知道对方的MSN或者QQ，就能与他联系，称赞他的观点或者是给他一顿臭骂。第二个好处是客户管理方便，利用session来维护在线名单，各种脚本都已经把session操作封装得很易用了，不用像其他无状态的即时通信工具（比如使用UDP通信的工具）一样，要费一些脑细胞来解决在线名单的问题。缺点嘛，就是实时性不好，一般是在用户跳转或者刷新页面才能探测消息、更新在线名单。<br><br>　　Session监听嘛，没什么好解释的，java提供了很灵活的事件机制来监听session，可以监听session的创建和销毁，监控session所携带数据的创建、变化和销毁，可以监听session的锐化和钝化（了解对象序列化的兄弟应该知道这个），其他的平台是个什么情况我不太清楚，估计也差不多吧。如果能够对所有客户的session进行监控，就不用再去操作麻烦而危险的Application了。<br><br>　　Xmlhttp是MS推的一项技术，功能很复杂，可以做很多事情，比如客户端可以在简单的HTML中打开HTTP连接，主动向server请求数据并获得返回数据，是DOM技术一个非常重要的应用，利用它来写无刷新的动态页面简直是so easy，做过web开发的兄弟应该明白它的意义有多么重大。<br><br><strong>一、 session监听</strong><br><br>　　servlet中对session的监听有很多接口，功能很灵活，最常用的是监听Session和Attribute。这里要澄清一下概念，servlet中的session监听和Attribute监听含义有差别，session监听指的不是我们一般所理解的放置一个session或者销毁一个session，这是Attribute监听的功能，因为servlet中放置session的语法是session.setAttribute(&#8220;session名&#8221;,要放入的对象)。而session监听，监听的是HTTP连接，只要有用户与server连接，就算连接的是一个空白的jsp页面，也会触发session事件，所以此处的session实际上指的是connection，用来统计当前在线用户数最合适了。不知道我说清楚了没有。下面分别讲解这两种监听方式。<br><br>　　<strong>1、 session监听</strong><br><br>　　首先编写一个session监听类，实作HttpSessionListener接口，它的作用是计算当前有多少个在线用户：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;org.bromon.test;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.http.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SessionCount&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;HttpSessionListener&nbsp;<br><img id=Codehighlighter1_141_472_Open_Image onclick="this.style.display='none'; Codehighlighter1_141_472_Open_Text.style.display='none'; Codehighlighter1_141_472_Closed_Image.style.display='inline'; Codehighlighter1_141_472_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_141_472_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_141_472_Closed_Text.style.display='none'; Codehighlighter1_141_472_Open_Image.style.display='inline'; Codehighlighter1_141_472_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_141_472_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_141_472_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;count</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;sessionCreated(HttpSessionEvent&nbsp;se)&nbsp;<br><img id=Codehighlighter1_223_292_Open_Image onclick="this.style.display='none'; Codehighlighter1_223_292_Open_Text.style.display='none'; Codehighlighter1_223_292_Closed_Image.style.display='inline'; Codehighlighter1_223_292_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_223_292_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_223_292_Closed_Text.style.display='none'; Codehighlighter1_223_292_Open_Image.style.display='inline'; Codehighlighter1_223_292_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_223_292_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_223_292_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>count</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>System.out.println(&#8220;session创建：&#8221;</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;java.util.Date());&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;sessionDestroyed(HttpSessionEvent&nbsp;se)&nbsp;<br><img id=Codehighlighter1_347_416_Open_Image onclick="this.style.display='none'; Codehighlighter1_347_416_Open_Text.style.display='none'; Codehighlighter1_347_416_Closed_Image.style.display='inline'; Codehighlighter1_347_416_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_347_416_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_416_Closed_Text.style.display='none'; Codehighlighter1_347_416_Open_Image.style.display='inline'; Codehighlighter1_347_416_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_347_416_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_347_416_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>count</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>System.out.println(&#8220;session销毁:&#8221;</span><span style="COLOR: #000000">+</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;java.util.Date());&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;getCount()&nbsp;<br><img id=Codehighlighter1_450_469_Open_Image onclick="this.style.display='none'; Codehighlighter1_450_469_Open_Text.style.display='none'; Codehighlighter1_450_469_Closed_Image.style.display='inline'; Codehighlighter1_450_469_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_450_469_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_450_469_Closed_Text.style.display='none'; Codehighlighter1_450_469_Open_Image.style.display='inline'; Codehighlighter1_450_469_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_450_469_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_450_469_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">(count);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;</span></div>
<br>　　怎么样，是不是一目了然？count被定义为static，是因为要保证整个系统只有这一个count。如果你实在不放心，可以把它写成一个单例类。<br><br>　　然后在web.xml中声明这个监听器：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">listener</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">listener-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>org.bromon.test.SessionCount<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">listener-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">listener</span><span style="COLOR: #0000ff">&gt;</span></div>
<br>　　编写一个测试页面test.jsp，内容是获得count：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_2_73_Open_Image onclick="this.style.display='none'; Codehighlighter1_2_73_Open_Text.style.display='none'; Codehighlighter1_2_73_Closed_Image.style.display='inline'; Codehighlighter1_2_73_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_2_73_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_73_Closed_Text.style.display='none'; Codehighlighter1_2_73_Open_Image.style.display='inline'; Codehighlighter1_2_73_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_2_73_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_2_73_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">int</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;count</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">org.bromon.test.SessionCount.getCount();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>out.println(count);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span></div>
<p class=code><br>　　需要注意的是，这里根本不涉及任何session的操作。重启动App server，试着连接test.jsp，可以看到监听器已经开始工作。<br><br>　　<strong>2、 Attribute监听</strong></p>
<p>　　作为一个站内消息系统，肯定要获得所有登陆者的ID，才有可能互发消息。这就涉及Attribute监听。假设我们写了个用户登陆的模块，用户通过身份验证之后会产生一个session，保存它的相关信息，比如：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">//check.jsp&nbsp;<br><img id=Codehighlighter1_15_141_Open_Image onclick="this.style.display='none'; Codehighlighter1_15_141_Open_Text.style.display='none'; Codehighlighter1_15_141_Closed_Image.style.display='inline'; Codehighlighter1_15_141_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_15_141_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_15_141_Closed_Text.style.display='none'; Codehighlighter1_15_141_Open_Image.style.display='inline'; Codehighlighter1_15_141_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_15_141_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_15_141_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">String</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">request.getParameter(&#8220;name&#8221;);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>Name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">String</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(name.getBytes(&#8220;ISO8859</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#8221;));&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>session.setAttribute(&#8220;user&#8221;,name);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span></div>
<br>　　做过jsp的兄弟应该对这段代码再熟悉不过了，下面写个监听器来监听用户登陆，把所有用户的ID保存到一个List当中，这个监听器实作HttpSessionAttributeListener接口：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000">&nbsp;org.bromon.test;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;javax.servlet.http.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">&nbsp;java.util.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;OnlineList&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;HttpSessionAttributeListener&nbsp;<br><img id=Codehighlighter1_169_590_Open_Image onclick="this.style.display='none'; Codehighlighter1_169_590_Open_Text.style.display='none'; Codehighlighter1_169_590_Closed_Image.style.display='inline'; Codehighlighter1_169_590_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_169_590_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_169_590_Closed_Text.style.display='none'; Codehighlighter1_169_590_Open_Image.style.display='inline'; Codehighlighter1_169_590_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_169_590_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_169_590_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;List&nbsp;list</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ArrayList();&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;attributeAdded(HttpSessionBindingEvent&nbsp;se)&nbsp;<br><img id=Codehighlighter1_272_340_Open_Image onclick="this.style.display='none'; Codehighlighter1_272_340_Open_Text.style.display='none'; Codehighlighter1_272_340_Closed_Image.style.display='inline'; Codehighlighter1_272_340_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_272_340_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_272_340_Closed_Text.style.display='none'; Codehighlighter1_272_340_Open_Image.style.display='inline'; Codehighlighter1_272_340_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_272_340_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_272_340_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&#8220;user&#8221;.equals(se.getName()))&nbsp;<br><img id=Codehighlighter1_308_337_Open_Image onclick="this.style.display='none'; Codehighlighter1_308_337_Open_Text.style.display='none'; Codehighlighter1_308_337_Closed_Image.style.display='inline'; Codehighlighter1_308_337_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_308_337_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_308_337_Closed_Text.style.display='none'; Codehighlighter1_308_337_Open_Image.style.display='inline'; Codehighlighter1_308_337_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_308_337_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_308_337_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>list.add(se.getValue());&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;attributeRemoved(HttpSessionBindingEvent&nbsp;se)&nbsp;<br><img id=Codehighlighter1_402_473_Open_Image onclick="this.style.display='none'; Codehighlighter1_402_473_Open_Text.style.display='none'; Codehighlighter1_402_473_Closed_Image.style.display='inline'; Codehighlighter1_402_473_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_402_473_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_402_473_Closed_Text.style.display='none'; Codehighlighter1_402_473_Open_Image.style.display='inline'; Codehighlighter1_402_473_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_402_473_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_402_473_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&#8220;user&#8221;.equals(se.getName()))&nbsp;<br><img id=Codehighlighter1_438_470_Open_Image onclick="this.style.display='none'; Codehighlighter1_438_470_Open_Text.style.display='none'; Codehighlighter1_438_470_Closed_Image.style.display='inline'; Codehighlighter1_438_470_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_438_470_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_438_470_Closed_Text.style.display='none'; Codehighlighter1_438_470_Open_Image.style.display='inline'; Codehighlighter1_438_470_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_438_470_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_438_470_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>list.remove(se.getValue());&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_534_535_Open_Image onclick="this.style.display='none'; Codehighlighter1_534_535_Open_Text.style.display='none'; Codehighlighter1_534_535_Closed_Image.style.display='inline'; Codehighlighter1_534_535_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_534_535_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_534_535_Closed_Text.style.display='none'; Codehighlighter1_534_535_Open_Image.style.display='inline'; Codehighlighter1_534_535_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;attributeReplaced(HttpSessionBindingEvent&nbsp;se)</span><span id=Codehighlighter1_534_535_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_534_535_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;List&nbsp;getList()&nbsp;<br><img id=Codehighlighter1_569_587_Open_Image onclick="this.style.display='none'; Codehighlighter1_569_587_Open_Text.style.display='none'; Codehighlighter1_569_587_Closed_Image.style.display='inline'; Codehighlighter1_569_587_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_569_587_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_569_587_Closed_Text.style.display='none'; Codehighlighter1_569_587_Open_Image.style.display='inline'; Codehighlighter1_569_587_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_569_587_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_569_587_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">(list);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>　　写个简单的jsp来得到用户列表：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_2_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_2_162_Open_Text.style.display='none'; Codehighlighter1_2_162_Closed_Image.style.display='inline'; Codehighlighter1_2_162_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_2_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2_162_Closed_Text.style.display='none'; Codehighlighter1_2_162_Open_Image.style.display='inline'; Codehighlighter1_2_162_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">&lt;%</span><span id=Codehighlighter1_2_162_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_2_162_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>java.util.List&nbsp;list</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">org.bromon.test.OnlineList.getList();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>out.println(&#8220;共有&#8221;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">list.size()</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&#8221;名用户已登陆：&#8221;);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">int</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;I</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;I</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">lise.size();i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>out.println(list.get(i));<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #ffff00">%&gt;</span></div>
<p><br>　　也许你说，这有什么神奇呢，监听session而已，不着急，看看xmlhttp。<br><br clear=all><br><strong>二、 XMLHTTP<br></strong><br>　　XMLHTTP的用处很多，这里只说我们需要的，就是无刷新的与server通信，看这段代码：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>xml&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Microsoft.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;post</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">构造要携带的数据&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">xml.open(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">POST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:7001/TestWL/index.jsp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">使用POST方法打开一个到服务器的连接，以异步方式通信&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">xml.setrequestheader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">content-length</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,post.length);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>xml.setrequestheader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">content-type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">application/x-www-form-urlencoded</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>xml.send(post);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">发送数据&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;xml.responseText;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">接收服务器返回的数据&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">document.write(res);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<br>　　豁然开朗，这段代码就是打开一个HTTP连接，以标准的HTTP格式传递数据，如果你喜欢，可以用XML的格式来传递。更改一下xml对象的构造方式就可以兼容Mozilla和Netscape。下面来写一个轮询，每隔一段时间刷新一次用户列表，当然，是不需要刷新页面的：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">head</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">探测器</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_64_511_Open_Image onclick="this.style.display='none'; Codehighlighter1_64_511_Open_Text.style.display='none'; Codehighlighter1_64_511_Closed_Image.style.display='inline'; Codehighlighter1_64_511_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_64_511_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_64_511_Closed_Text.style.display='none'; Codehighlighter1_64_511_Open_Image.style.display='inline'; Codehighlighter1_64_511_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="javascript"</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter1_64_511_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_64_511_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;detect()&nbsp;<br><img id=Codehighlighter1_85_509_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_509_Open_Text.style.display='none'; Codehighlighter1_85_509_Closed_Image.style.display='inline'; Codehighlighter1_85_509_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_85_509_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_509_Closed_Text.style.display='none'; Codehighlighter1_85_509_Open_Image.style.display='inline'; Codehighlighter1_85_509_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_85_509_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_85_509_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>xml&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ActiveXObject(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Microsoft.XMLHTTP</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;post</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">构造要携带的数据&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">xml.open(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">POST</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">http://localhost:7001/TestWL/index.jsp</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">使用POST方法打开一个到服务器的连接，以异步方式通信&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">xml.setrequestheader(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">content-length</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,post.length);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>xml.setrequestheader(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">content-type</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">application/x-www-form-urlencoded</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>xml.send(post);</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">发送数据&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;res&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;xml.responseText;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">接收服务器返回的数据&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">list.innerText</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">res;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>setTimeout(&#8220;detect()&#8221;,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">5000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">每隔5秒钟轮询一次&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body&nbsp;</span><span style="COLOR: #ff0000">onload</span><span style="COLOR: #0000ff">=&#8221;detect()&#8221;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">=&#8221;list&#8221;</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div>
<br>　　这样的通信方式数据量很小，不用重新传递整个页面，5秒钟轮一次，普通PC也能承受较大的在线数。构造一个探测器来监听在线列表和消息，效果是很好的，即使你的客户坐在电脑前袖手旁观，键鼠都不碰一下，也能保证数据即时传递，页面也不会发生跳转和刷新。<br><br>　　Session监听加上XMLHTTP通信，开发一个较为完善的站内消息系统实在易如反掌。 <br clear=all>
<img src ="http://www.blogjava.net/wealupa/aggbug/126304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2007-06-26 11:34 <a href="http://www.blogjava.net/wealupa/archive/2007/06/26/126304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XMLHTTP无刷新自动实时更新数据 ajax技术</title><link>http://www.blogjava.net/wealupa/archive/2007/06/26/126280.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Tue, 26 Jun 2007 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2007/06/26/126280.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/126280.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2007/06/26/126280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/126280.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/126280.html</trackback:ping><description><![CDATA[<pre>&lt;script language="JavaScript"&gt;<br><br>function GetResult()<br><br>{<br><br>/*<br><br>*--------------- GetResult() -----------------<br><br>* GetResult() <br><br>* 功能:通过XMLHTTP发送请求,返回结果.<br><br>* 参数:str,字符串,发送条件.<br><br>* 实例:GetResult();<br><br>*--------------- GetResult() -----------------<br><br>*/<br><br>var oBao = new ActiveXObject("Microsoft.XMLHTTP");<br><br>//特殊字符：+,%,&amp;,=,?等的传输解决办法.字符串先用escape编码的.<br><br>//Update:2004-6-1 12:22<br><br>oBao.open("POST","Server.asp",false);<br><br>oBao.send();<br><br>//服务器端处理返回的是经过escape编码的字符串.<br><br>var strResult = unescape(oBao.responseText);<br><br>//将字符串分开.<br><br>var arrResult = strResult.split("###");<br><br>RemoveRow(); //删除以前的数据.<br><br>//将取得的字符串分开,并写入表格中.<br><br>for(var i=0;i&lt;arrResult.length;i++)<br><br>{<br><br>arrTmp = arrResult[i].split("@@@");<br><br>num1 = arrTmp[0]; //字段num1的值<br><br>num2 = arrTmp[1]; //字段num2的值<br><br>row1 = tb.insertRow();<br><br>cell1 = row1.insertCell();<br><br>cell1.innerText = num1;<br><br>cell2 = row1.insertCell();<br><br>cell2.innerText = num2;<br><br>}<br><br>}<br><br>function RemoveRow()<br><br>{<br><br>//保留第一行表头,其余数据均删除.<br><br>var iRows = tb.rows.length;<br><br>for(var i=0;i&lt;iRows-1;i++)<br><br>{<br><br>tb.deleteRow(1);<br><br>}<br><br>}<br><br>function MyShow()<br><br>{<br><br>//2秒自动刷新一次,2秒取得一次数据.<br><br>timer = window.setInterval("GetResult()",2000);<br><br>}<br><br>&lt;/script&gt;<br><br>&lt;body onload="MyShow()"&gt;<br><br>&lt;p&gt;<br><br>&lt;/p&gt;<br><br>&lt;table width="47%" height="23" border="0" </pre>
<pre>cellpadding="1" cellspacing="0" id="tb"&gt;<br><br>&lt;tr&gt;<br><br>&lt;td&gt;num1&lt;/td&gt;<br><br>&lt;td&gt;num2&lt;/td&gt;<br><br>&lt;/tr&gt;<br><br>&lt;/table&gt;<br></pre>
<img src ="http://www.blogjava.net/wealupa/aggbug/126280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2007-06-26 10:36 <a href="http://www.blogjava.net/wealupa/archive/2007/06/26/126280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BS开发中常用的Javascript技术</title><link>http://www.blogjava.net/wealupa/archive/2007/05/08/115943.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Tue, 08 May 2007 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2007/05/08/115943.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/115943.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2007/05/08/115943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/115943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/115943.html</trackback:ping><description><![CDATA[<p>一、验证类 <br>1、数字验证内 <br>&nbsp; 1.1 整数 <br>&nbsp; 1.2 大于0的整数 （用于传来的ID的验证) <br>&nbsp; 1.3 负整数的验证 <br>&nbsp; 1.4 整数不能大于iMax <br>&nbsp; 1.5 整数不能小于iMin <br>2、时间类 <br>&nbsp; 2.1 短时间，形如 (13:04:06) <br>&nbsp; 2.2 短日期，形如 (2003-12-05) <br>&nbsp; 2.3 长时间，形如 (2003-12-05 13:04:06) <br>&nbsp; 2.4 只有年和月。形如(2003-05,或者2003-5) <br>&nbsp; 2.5 只有小时和分钟,形如(12:03) <br>3、表单类 <br>&nbsp; 3.1 所有的表单的值都不能为空 <br>&nbsp; 3.2 多行文本框的值不能为空。 <br>&nbsp; 3.3 多行文本框的值不能超过sMaxStrleng <br>&nbsp; 3.4 多行文本框的值不能少于sMixStrleng <br>&nbsp; 3.5 判断单选框是否选择。 <br>&nbsp; 3.6 判断复选框是否选择. <br>&nbsp; 3.7 复选框的全选，多选，全不选，反选 <br>&nbsp; 3.8 文件上传过程中判断文件类型 <br>4、字符类 <br>&nbsp; 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 <br>&nbsp; 4.2 判断字符由字母和数字组成。 <br>&nbsp; 4.3 判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母 <br>&nbsp; 4.4 字符串替换函数.Replace(); <br>5、浏览器类 <br>&nbsp; 5.1 判断浏览器的类型 <br>&nbsp; 5.2 判断ie的版本 <br>&nbsp; 5.3 判断客户端的分辨率 <br>&nbsp;&nbsp; <br>6、结合类 <br>&nbsp; 6.1 email的判断。 <br>&nbsp; 6.2 手机号码的验证 <br>&nbsp; 6.3 身份证的验证 <br>&nbsp;&nbsp; </p>
<p>二、功能类 </p>
<p>1、时间与相关控件类 <br>&nbsp; 1.1 日历 <br>&nbsp; 1.2 时间控件 <br>&nbsp; 1.3 万年历 <br>&nbsp; 1.4 显示动态显示时钟效果（文本，如OA中时间） <br>&nbsp; 1.5 显示动态显示时钟效果 (图像，像手表)&nbsp; <br>2、表单类 <br>&nbsp; 2.1 自动生成表单 <br>&nbsp; 2.2 动态添加，修改，删除下拉框中的元素 <br>&nbsp; 2.3 可以输入内容的下拉框 <br>&nbsp; 2.4 多行文本框中只能输入iMax文字。如果多输入了，自动减少到iMax个文字（多用于短信发送) <br>&nbsp;&nbsp; <br>3、打印类 <br>&nbsp; 3.1 打印控件 <br>4、事件类 <br>&nbsp; 4.1 屏蔽右键 <br>&nbsp; 4.2 屏蔽所有功能键 <br>&nbsp; 4.3 --&gt; 和&lt;-- F5 F11,F9,F1 <br>&nbsp; 4.4 屏蔽组合键ctrl+N <br>5、网页设计类 <br>&nbsp; 5.1 连续滚动的文字，图片（注意是连续的，两段文字和图片中没有空白出现） <br>&nbsp; 5.2 html编辑控件类 <br>&nbsp; 5.3 颜色选取框控件 <br>&nbsp; 5.4 下拉菜单 <br>&nbsp; 5.5 两层或多层次的下拉菜单 <br>&nbsp; 5.6 仿IE菜单的按钮。（效果如rongshuxa.com的导航栏目) <br>&nbsp; 5.7 状态栏，title栏的动态效果（例子很多，可以研究一下） <br>&nbsp; 5.8 双击后，网页自动滚屏 <br>6、树型结构。 <br>&nbsp; 6.1 asp+SQL版 <br>&nbsp; 6.2 asp+xml+sql版 <br>&nbsp; 6.3 java+sql或者java+sql+xml <br>7、无边框效果的制作 <br>8、连动下拉框技术 <br>9、文本排序 <br>10，画图类，含饼、柱、矢量贝滋曲线 <br>11，操纵客户端注册表类 <br>12，DIV层相关（拖拽、显示、隐藏、移动、增加） <br>13，TABLAE相关(客户端动态增加行列，模拟进度条，滚动列表等) <br>14，各种&lt;object classid=&gt;相关类，如播放器，flash与脚本互动等 <br>16, 刷新/模拟无刷新 异步调用类（XMLHttp或iframe,frame） </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&lt;script language="JavaScript"&gt; <br>&lt;!-- <br>function check(text){ <br>var checkstr,iMax=5,iMin=3 <br>checkstr="isInt:"+(parseInt(text)==text)+"\n" <br>checkstr+="isID:"+((parseInt(text)==text)&amp;&amp;(text&gt;=0))+"\n" <br>checkstr+="小于"+iMax+":"+((parseInt(text)==text)&amp;&amp;(text&lt;iMax))+"\n" <br>checkstr+="大于"+iMin+":"+((parseInt(text)==text)&amp;&amp;(text&gt;iMin))+"\n" <br>alert(checkstr) <br>} <br>//--&gt; <br>&lt;/script&gt; <br>&lt;form method=post action=""&gt; <br>&lt;input type="text" id="text1" onchange="check(this.value)"&gt; <br>&lt;/form&gt; </p>
<p>&nbsp;</p>
<p>4、事件类 <br>&nbsp; 4.1 屏蔽右键 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在body标签里加上oncontextmenu=self.event.returnValue=false&nbsp;&nbsp; <br>&nbsp; 4.2 屏蔽所有功能键 </p>
<p>&nbsp; 4.3 --&gt; 和&lt;-- F5 F11,F9,F1 </p>
<p>&nbsp; 4.4 屏蔽组合键ctrl+N </p>
<p>&lt;script language=javascript&gt; <br>function KeyDown(){&nbsp;&nbsp;&nbsp; <br>&nbsp; if ((window.event.altKey)&amp;&amp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((window.event.keyCode==37)||&nbsp;&nbsp; //屏蔽 Alt+ 方向键 &#8592; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (window.event.keyCode==39))){&nbsp; //屏蔽 Alt+ 方向键 &#8594; <br>&nbsp;&nbsp;&nbsp;&nbsp; alert("不准你使用ALT+方向键前进或后退网页！"); <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; if ((event.keyCode==8)||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //屏蔽退格删除键 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (event.keyCode==116)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //屏蔽 F5 刷新键 <br>&nbsp;&nbsp;&nbsp;&nbsp; event.keyCode=0; <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; if ((event.ctrlKey)&amp;&amp;(event.keyCode==78)){&nbsp;&nbsp; //屏蔽 Ctrl+n <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; if ((event.shiftKey)&amp;&amp;(event.keyCode==121)){ //屏蔽 shift+F10 <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; if (event.keyCode==122){ //屏蔽 F11 <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; } <br>只要知道keyCode即可屏蔽所有功能键 </p>
<p><br>一、验证类 <br>1、数字验证内 <br>&nbsp; 1.1 整数 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /^(-|\+)?\d+$/.test(str) <br>&nbsp; 1.2 大于0的整数 （用于传来的ID的验证) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /^\d+$/.test(str) <br>&nbsp; 1.3 负整数的验证 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /^-\d+$/.test(str) <br>2、时间类 <br>&nbsp; 2.1 短时间，形如 (13:04:06) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function isTime(str) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (a == null) {alert('输入的参数不是时间格式'); return false;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (a[1]&gt;24 || a[3]&gt;60 || a[4]&gt;60) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("时间格式不对"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; 2.2 短日期，形如 (2003-12-05) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function strDateTime(str) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(r==null)return false;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var d= new Date(r[1], r[3]-1, r[4]);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; 2.3 长时间，形如 (2003-12-05 13:04:06) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function strDateTime(str) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var r = str.match(reg);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(r==null)return false;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp; </p>
<p>(d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]&amp;&amp;<br>d.getHours()==r[5]&amp;&amp;d.getMinutes()==r[6]&amp;&amp;d.getSeconds()== </p>
<p>r[7]); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; 2.4 只有年和月。形如(2003-05,或者2003-5) <br>&nbsp; 2.5 只有小时和分钟,形如(12:03) <br>3、表单类 <br>&nbsp; 3.1 所有的表单的值都不能为空 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input onblur="if(this.value.replace(/^\s+|\s+$/g,'')=='')alert('不能为空!')"&gt; <br>&nbsp; 3.2 多行文本框的值不能为空。 <br>&nbsp; 3.3 多行文本框的值不能超过sMaxStrleng <br>&nbsp; 3.4 多行文本框的值不能少于sMixStrleng <br>&nbsp; 3.5 判断单选框是否选择。 <br>&nbsp; 3.6 判断复选框是否选择. <br>&nbsp; 3.7 复选框的全选，多选，全不选，反选 <br>&nbsp; 3.8 文件上传过程中判断文件类型 <br>4、字符类 <br>&nbsp; 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"&gt; <br>&nbsp; 4.2 判断字符由字母和数字组成。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"&gt; <br>&nbsp; 4.3 判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /^([a-zA-z_]{1})([\w]*)$/g.test(str) <br>&nbsp; 4.4 字符串替换函数.Replace(); <br>5、浏览器类 <br>&nbsp; 5.1 判断浏览器的类型 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.navigator.appName <br>&nbsp; 5.2 判断ie的版本 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.navigator.appVersion <br>&nbsp; 5.3 判断客户端的分辨率 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.screen.height;&nbsp; window.screen.width; <br>&nbsp;&nbsp; <br>6、结合类 <br>&nbsp; 6.1 email的判断。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function ismail(mail) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)<br>[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail)); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp; 6.2 手机号码的验证 <br>&nbsp; 6.3 身份证的验证 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function isIdCardNo(num) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isNaN(num)) {alert("输入的不是数字！"); return false;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var len = num.length, re;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (len == 15) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (len == 18) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {alert("输入的数字位数不对！"); return false;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var a = num.match(re); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (a != null) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (len==15) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var B = D.getYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<br>D.getDate()==a[5]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var D = new Date(a[3]+"/"+a[4]+"/"+a[5]); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var B = D.getFullYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<br>D.getDate()==a[5]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对！"); return false;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p><br>3.7 复选框的全选，多选，全不选，反选 <br>&lt;form name=hrong&gt; <br>&lt;input type=checkbox name=All onclick="checkAll('mm')"&gt;全选&lt;br/&gt; <br>&lt;input type=checkbox name=mm onclick="checkItem('All')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm onclick="checkItem('All')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm onclick="checkItem('All')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm onclick="checkItem('All')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm onclick="checkItem('All')"&gt;&lt;br/&gt;&lt;br/&gt; </p>
<p><br>&lt;input type=checkbox name=All2 onclick="checkAll('mm2')"&gt;全选&lt;br/&gt; <br>&lt;input type=checkbox name=mm2 onclick="checkItem('All2')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm2 onclick="checkItem('All2')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm2 onclick="checkItem('All2')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm2 onclick="checkItem('All2')"&gt;&lt;br/&gt; <br>&lt;input type=checkbox name=mm2 onclick="checkItem('All2')"&gt;&lt;br/&gt; </p>
<p>&lt;/form&gt; </p>
<p>&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br>function checkAll(str) <br>{ <br>&nbsp; var a = document.getElementsByName(str); <br>&nbsp; var n = a.length; <br>&nbsp; for (var i=0; i&lt;n; i++) <br>&nbsp; a[i].checked = window.event.srcElement.checked; <br>} <br>function checkItem(str) <br>{ <br>&nbsp; var e = window.event.srcElement; <br>&nbsp; var all = eval("document.hrong."+ str); <br>&nbsp; if (e.checked) <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp; var a = document.getElementsByName(e.name); <br>&nbsp;&nbsp;&nbsp; all.checked = true; <br>&nbsp;&nbsp;&nbsp; for (var i=0; i&lt;a.length; i++) <br>&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!a[i].checked){ all.checked = false; break;} <br>&nbsp;&nbsp;&nbsp; } <br>&nbsp; } <br>&nbsp; else all.checked = false; <br>} <br>&lt;/SCRIPT&gt; </p>
<p>3.8 文件上传过程中判断文件类型 <br>&lt;input type=file onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})$/)[3])"&gt; </p>
<p>&nbsp;</p>
<p>不断地清空剪贴板: <br>&lt;body onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"&gt; </p>
<p><br>&lt;script language="JavaScript" type="text/JavaScript"&gt; <br>//先复制一样东西，或者文本或者图片 <br>if(clipboardData.getData("Text")||clipboardData.getData("HTML")||<br>clipboardData.getData("URL")) <br>{ <br>alert("有效行为"); <br>} <br>&lt;/script&gt; </p>
<p><br>全屏技术： <br>真正的全屏页面解决之道！（全代码）&nbsp; <br>真正全屏解决之道：&nbsp; <br>1.htm&nbsp; <br>&lt;html&gt;&nbsp; <br>&lt;head&gt;&nbsp; <br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;&nbsp; <br>&lt;/head&gt;&nbsp; </p>
<p>&lt;body onload="window.open('fullscreen.htm','','fullscreen=1,scroll=no');"&gt;&nbsp; <br>&lt;/body&gt;&nbsp; <br>&lt;/html&gt;&nbsp; </p>
<p><br>fullscreen.htm&nbsp; <br>&lt;html&gt;&nbsp; <br>&lt;head&gt;&nbsp; <br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;&nbsp; <br>&lt;script language="JavaScript1.2"&gt;&nbsp;&nbsp; <br>&lt;!--&nbsp;&nbsp; <br>function opensmallwin(myurl){&nbsp;&nbsp; <br>var w2=300;//想弹出窗口的宽度&nbsp;&nbsp; <br>var h2=100;//想弹出窗口的高度&nbsp;&nbsp; <br>var w3=window.screen.width/2-w2/2;&nbsp;&nbsp; <br>var h3=window.screen.height/2-h2/2;&nbsp;&nbsp; <br>window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,<br>scrollbars=no,resizable=0,width='+ w2 +',height='+ h2 +',left='+ w3 +',top='+ h3 +'');&nbsp;&nbsp; <br>}&nbsp;&nbsp; <br>//--&gt;&nbsp;&nbsp; </p>
<p>&lt;!--&nbsp; <br>function modelesswin(url,mwidth,mheight){&nbsp; <br>&nbsp; if (document.all&amp;&amp;window.print)&nbsp; <br>&nbsp;&nbsp;&nbsp; eval('window.external.m2_blocked(url,"","help:0;resizable:0;status:0;center:1;<br>scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px")')&nbsp;&nbsp; <br>&nbsp; else&nbsp; <br>&nbsp;&nbsp;&nbsp; eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,<br>scrollbars=1")')&nbsp; <br>&nbsp; }&nbsp; <br>//--&gt;&nbsp; </p>
<p>&lt;/script&gt;&nbsp;&nbsp; <br>&lt;/head&gt;&nbsp; </p>
<p>&lt;body&nbsp; scroll="no"&gt;&nbsp; <br>&lt;div align="right"&gt;&lt;a href="javascript:" onclick="window.close()"&gt;关闭<br>&lt;/a&gt; &lt;/div&gt;&nbsp; <br>&lt;p&gt;&lt;/P&gt;&nbsp; <br>&lt;div align="right"&gt;&lt;a href="javascript:" onclick="opensmallwin('login.htm')"&gt;登录<br>&lt;/a&gt; &lt;/div&gt;&nbsp; </p>
<p>&lt;p&gt;&lt;/P&gt;&nbsp; <br>&lt;div align="center"&gt;&lt;a href="javascript:" <br>onclick="modelesswin('login.htm',300,160)"&gt;用模态登录窗口&lt;/a&gt; &lt;/div&gt;&nbsp; <br>&lt;/body&gt;&nbsp; <br>&lt;/html&gt;&nbsp; </p>
<p><br>login.htm&nbsp; <br>&lt;html&gt;&nbsp; <br>&lt;head&gt;&nbsp; <br>&lt;title&gt;用户登录&lt;/title&gt;&nbsp; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;&nbsp; </p>
<p>&lt;style type="text/css"&gt;&nbsp; <br>&lt;!--&nbsp; <br>body {&nbsp; <br>&nbsp;&nbsp; background-color: #EAEAEA;&nbsp; <br>&nbsp;&nbsp; font-family: Arial, Helvetica, sans-serif;&nbsp; <br>&nbsp;&nbsp; font-size: 12px;&nbsp; <br>&nbsp;&nbsp; line-height: 24px;&nbsp; <br>&nbsp;&nbsp; color: #336699;&nbsp; <br>}&nbsp; <br>input.boxline {&nbsp; <br>&nbsp;&nbsp; width: 100px;&nbsp; <br>&nbsp;&nbsp; font-family: "Times New Roman", "Times", "serif";&nbsp; <br>&nbsp;&nbsp; font-size: 9pt;&nbsp; <br>&nbsp;&nbsp; border: 1px solid #669999;&nbsp; <br>&nbsp;&nbsp; height: 18px;&nbsp; </p>
<p>}&nbsp; </p>
<p>input.whiteline {&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; font-size: 12px; border: 1px #999999 solid&nbsp; <br>}&nbsp; <br>--&gt;&nbsp; <br>&lt;/style&gt;&lt;/head&gt;&nbsp; <br>&lt;body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"&gt;&nbsp; <br>&lt;table width="100%" height="100%" border="0" cellpadding="0"<br>&nbsp;cellspacing="14" bgcolor="#CCCCCC"&gt;&nbsp; <br>&nbsp; &lt;tr valign="top"&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td width="10%" nowrap&nbsp; align="right"&gt;&lt;b&gt;用户名：&lt;/b&gt;&lt;/td&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td width="90%"&gt;&lt;input name="textfield1" type="text" size="25"<br>&nbsp;class="whiteline"&gt;&lt;/td&gt;&nbsp; <br>&nbsp; &lt;/tr&gt;&nbsp; <br>&nbsp; &lt;tr valign="top"&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;&lt;b&gt;密　码：&lt;/b&gt;&lt;/td&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input name="textfield12" type="password" size="25" <br>class="whiteline"&gt;&lt;/td&gt;&nbsp; <br>&nbsp; &lt;/tr&gt;&nbsp; <br>&nbsp; &lt;tr valign="top"&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td&gt; &lt;/td&gt;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="submit" name="Submit" value="登　　录" <br>class="boxline"&gt;&lt;/td&gt;&nbsp; <br>&nbsp; &lt;/tr&gt;&nbsp; <br>&lt;/table&gt;&nbsp; <br>&lt;/body&gt;&nbsp; <br>&lt;/html&gt;&nbsp; </p>
<p><br>自动关掉原窗口：&nbsp; </p>
<p><br>&lt;html&gt;&nbsp; <br>&lt;head&gt;&nbsp; <br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;&nbsp; <br>&lt;style type="text/css"&gt;&nbsp; <br>&lt;!--&nbsp; <br>body {&nbsp; <br>&nbsp;&nbsp; margin-left: 0px;&nbsp; <br>&nbsp;&nbsp; margin-top: 0px;&nbsp; <br>&nbsp;&nbsp; margin-right: 0px;&nbsp; <br>&nbsp;&nbsp; margin-bottom: 0px;&nbsp; <br>}&nbsp; <br>--&gt;&nbsp; <br>&lt;/style&gt;&nbsp; <br>&lt;/head&gt;&nbsp; </p>
<p>&lt;body onload="window.open('fullscreen.htm','','fullscreen=1,scroll=no');<br>window.opener=null;window.close()"&gt;&nbsp; <br>&lt;input type=button value=关闭 onclick="window.opener=null;window.close()"&gt;&nbsp;&nbsp; <br>&lt;!-- IE5.5+ 不会有弹出提示 --&gt;&nbsp;&nbsp; </p>
<p>&lt;OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 <br>height=0 width=0&gt;&lt;/OBJECT&gt;&nbsp;&nbsp; <br>&lt;input type=button value=关闭窗口 onclick=document.all.WebBrowser.ExecWB(45,1)&gt;&nbsp;&nbsp; <br>&lt;/body&gt;&nbsp; <br>&lt;/html&gt;&nbsp; </p>
<p>关键是在onload事件中加入：&nbsp; <br>window.opener=null;window.close()&nbsp; </p>
<p><br>预读图片： <br>&lt;SCRIPT LANGUAGE="JavaScript"&gt; </p>
<p>&lt;!-- This script and many more are available free online at --&gt; <br>&lt;!-- The JavaScript Source!! &lt;a href=http://javascript.internet.com <br>target=_blank&gt;http://javascript.internet.com --&gt; </p>
<p>&lt;!-- Begin </p>
<p>image1 = new Image(); <br>image1.src = "image1.gif"; </p>
<p>image2 = new Image(); <br>image2.src = "image2.gif"; </p>
<p>// End --&gt; <br>&lt;/script&gt; </p>
<p>&nbsp;</p>
<p>关于两个网页刷新交互的问题&nbsp; <br>JS处理方法：&nbsp; </p>
<p>a.htm&nbsp; </p>
<p>&lt;a href="b.htm" target=blank&gt;发表留言&lt;/a&gt;&nbsp; <br>&lt;script&gt;&nbsp; <br>alert("wwwwwwwwwwwwwwwwwwwwwwwwww");&nbsp; <br>&lt;/script&gt;&nbsp; </p>
<p>b.htm&nbsp; </p>
<p>&lt;script language="javascript"&gt;&nbsp; <br>//window.opener.location.reload();刷新父窗口&nbsp; <br>//window.opener.location="2.htm"//重定向父窗口到2.htm页&nbsp; <br>function closewindow()&nbsp; <br>{&nbsp; <br>window.opener.location.reload();&nbsp; <br>self.close();&nbsp; <br>window.opener.document.write("sssssssssssssssssss");&nbsp; <br>}&nbsp; <br>&lt;/script&gt;&nbsp; <br>&lt;a href="b.htm" target=blank onclick="closewindow();"&gt;关闭&lt;/a&gt;&nbsp; </p>
<p>&nbsp;</p>
<p>后台处理方法：&nbsp; </p>
<p>private btnForSubmit(Object sender,EventArgs e)&nbsp; <br>{&nbsp; <br>&nbsp;.............&nbsp; <br>&nbsp;Response.Write("&lt;script&gt;window.opener.document.execCommand('refresh');<br>window.opener='';window.close();&lt;/script&gt;");&nbsp; <br>//string str="&lt;script&gt;window.opener.document.execCommand('refresh');<br>window.opener='';window.close();&lt;/script&gt;";&nbsp; <br>//this.RegisterStartupScript("mycode",str);&nbsp; <br>external.m2_blocked()、external.m2_blocked()方法使用详解 </p>
<p>&nbsp;Javascript有许多内建的方法来产生对话框，如：window.alert(), <br>window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如： </p>
<p>　　external.m2_blocked() (IE 4+ 支持) <br>　　external.m2_blocked() (IE 5+ 支持) </p>
<p><br>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的模态对话框，<br>由于是对话框，因此它并没有一般用window.open()打开的窗口的所有属性。 <br>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的非模态对话框。 </p>
<p>&nbsp;当我们用external.m2_blocked()打开窗口时，不必用window.close()去关闭它，<br>当以非模态方式[IE5]打开时， 打开对话框的窗口仍可以进行其他的操作，即对话框<br>不总是最上面的焦点，当打开它的窗口ＵＲＬ改变时，它自动关闭。而模态[ＩＥ４]<br>方式的对话框始终有焦点（焦点不可移走，直到它关闭）。模态对话框和打开它的窗<br>口相联系，因此我们打开另外的窗口时，他们的链接关系依然保存，并且隐藏在活动<br>窗口的下面。 </p>
<p>使用方法如下： <br>&nbsp;vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures]) <br>&nbsp;vReturnValue=window.external.m2_blocked(sURL [,vArguments] [,sFeatures]) <br>参数说明： <br>&nbsp;sURL <br>&nbsp;必选参数，类型：字符串。用来指定对话框要显示的文档的URL。 <br>&nbsp;vArguments <br>&nbsp;可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。<br>对话框通过window.dialogArguments来取得传递进来的参数。 <br>&nbsp;sFeatures <br>&nbsp;可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，<br>用分号&#8220;;&#8221;隔开。 <br>&nbsp; dialogHeight 对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth<br>&nbsp;默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px<br>做单位。 <br>&nbsp;　　dialogWidth: 对话框宽度。 <br>&nbsp;　　dialogLeft: 距离桌面左的距离。 <br>&nbsp;　　dialogTop: 离桌面上的距离。 <br>&nbsp;　　center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。 <br>&nbsp;　　help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。 <br>&nbsp;　　resizable: {yes | no | 1 | 0 } [ＩＥ５＋]：是否可被改变大小。默认no。 <br>&nbsp;　　status: {yes | no | 1 | 0 } [IE5+]：是否显示状态栏。默认为yes[ Modeless]<br>或no[Modal]。 <br>&nbsp; scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。 </p>
<p>&nbsp; 还有几个属性是用在HTA中的，在一般的网页中一般不使用。 <br>&nbsp; dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。<br>默认为no。 <br>&nbsp; edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。 <br>&nbsp; unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。 </p>
<p>&nbsp;传入参数： <br>&nbsp;要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，<br>最大为4096个字符。也可以传递对象，例如： </p>
<p>&nbsp;test1.htm <br>&nbsp;==================== <br>&nbsp;&lt;script&gt; <br>&nbsp; var mxh1 = new Array("mxh","net_lover","孟子E章") <br>&nbsp; var mxh2 = window.open("about:blank","window_mxh") <br>&nbsp; // 向对话框传递数组 <br>&nbsp; window.external.m2_blocked("test2.htm",mxh1) <br>&nbsp; // 向对话框传递window对象 <br>&nbsp; window.external.m2_blocked("test3.htm",mxh2) <br>&nbsp;&lt;/script&gt; </p>
<p>&nbsp;test2.htm <br>&nbsp;==================== <br>&nbsp;&lt;script&gt; <br>&nbsp; var a = window.dialogArguments <br>&nbsp; alert("您传递的参数为：" + a) <br>&nbsp;&lt;/script&gt; </p>
<p>&nbsp;test3.htm <br>&nbsp;==================== <br>&nbsp;&lt;script&gt; <br>&nbsp; var a = window.dialogArguments <br>&nbsp; alert("您传递的参数为window对象，名称：" + a.name) <br>&nbsp;&lt;/script&gt; </p>
<p>&nbsp;可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。<br>例如： </p>
<p>&nbsp;test4.htm <br>&nbsp;=================== <br>&nbsp;&lt;script&gt; <br>&nbsp; var a = window.external.m2_blocked("test5.htm") <br>&nbsp; for(i=0;i&lt;a.length;i++) alert(a[i]) <br>&nbsp;&lt;/script&gt; </p>
<p>&nbsp;test5.htm <br>&nbsp;=================== <br>&nbsp;&lt;script&gt; <br>&nbsp;function sendTo() <br>&nbsp;{ <br>&nbsp; var a=new Array("a","b") <br>&nbsp; window.returnValue = a <br>&nbsp; window.close() <br>&nbsp;} <br>&nbsp;&lt;/script&gt; <br>&nbsp;&lt;body&gt; <br>&nbsp;&lt;form&gt; <br>&nbsp; &lt;input value="返回" type=button onclick="sendTo()"&gt; <br>&nbsp;&lt;/form&gt; </p>
<p>&nbsp;常见问题： <br>&nbsp;1，如何在模态对话框中进行提交而不新开窗口？ <br>&nbsp;如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe，提交时可以<br>制定target为该iframe的name。对于IE4+，你可以用高度为0的frame来作：例子， </p>
<p>&nbsp;test6.htm <br>&nbsp;=================== <br>&nbsp;&lt;script&gt; <br>&nbsp; window.external.m2_blocked("test7.htm") <br>&nbsp;&lt;/script&gt; </p>
<p>&nbsp;test7.htm <br>&nbsp;=================== <br>&nbsp;if(window.location.search) alert(window.location.search) <br>&nbsp;&lt;frameset rows="0,*"&gt; <br>&nbsp; &lt;frame src="about:blank"&gt; <br>&nbsp; &lt;frame src="test8.htm"&gt; <br>&nbsp;&lt;/frameset&gt; </p>
<p>&nbsp;test8.htm <br>&nbsp;=================== <br>&nbsp;&lt;form target="_self" method="get"&gt; <br>&nbsp;&lt;input name=txt value="test"&gt; <br>&nbsp;&lt;input type=submit&gt; <br>&nbsp;&lt;/form&gt; <br>&nbsp;&lt;script&gt; <br>&nbsp;if(window.location.search) alert(window.location.search) <br>&nbsp;&lt;/script&gt; <br>&nbsp;2,可以通过<a href="http://servername/virtualdirname/test.htm?name=mxh"><font color=#444444>http://servername/virtualdirname/test.htm?name=mxh</font></a>方式直接向<br>对话框传递参数吗？ <br>&nbsp;答案是不能。但在frame里是可以的。 <br>//屏蔽 F5 刷新键 </p>
<p><br>function document.onkeydown() <br>{ <br>&nbsp;&nbsp;&nbsp; var k = window.event.keyCode; <br>&nbsp;&nbsp;&nbsp; if (k == 116)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //屏蔽 F5 刷新键 <br>&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.keyCode&nbsp;&nbsp;&nbsp; = 0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.event.returnValue= false; <br>&nbsp;&nbsp;&nbsp; } <br>} </p>
<p><br>&lt;script language="Javascript"&gt; <br>&nbsp;//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键 <br>&nbsp;//屏蔽F1帮助 <br>function window.onhelp() <br>{ <br>&nbsp;&nbsp; return false <br>} <br>function KeyDown() <br>{ <br>&nbsp; //alert(event.keyCode); <br>&nbsp;&nbsp; //屏蔽 Alt+ 方向键 &#8592; 屏蔽 Alt+ 方向键 &#8594; <br>&nbsp; if ((window.event.altKey)&amp;&amp;((window.event.keyCode==37)||<br>(window.event.keyCode==39))) <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; //alert("不准你使用ALT+方向键前进或后退网页！"); <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp; } <br>&nbsp; //屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R <br>&nbsp; if ((event.keyCode==116)||(event.ctrlKey &amp;&amp; event.keyCode==82)) <br>&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; event.keyCode=0; <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp; }&nbsp; <br>&nbsp;&nbsp; <br>&nbsp; //屏蔽 Ctrl+n <br>&nbsp; if ((event.ctrlKey)&amp;&amp;(event.keyCode==78)) <br>&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp; } <br>&nbsp;&nbsp; <br>&nbsp; //屏蔽 shift+F10 <br>&nbsp; if ((event.shiftKey)&amp;&amp;(event.keyCode==121)) <br>&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; event.returnValue=false; <br>&nbsp; } <br>&nbsp;&nbsp; <br>&nbsp; //屏蔽 shift 加鼠标左键新开一网页 <br>&nbsp; if (window.event.srcElement.tagName == "A" &amp;&amp; window.event.shiftKey)&nbsp; <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp; window.event.returnValue = false; <br>&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; //屏蔽Alt+F4 <br>&nbsp; if ((window.event.altKey)&amp;&amp;(window.event.keyCode==115)) <br>&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px"); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false; <br>&nbsp; } <br>&nbsp;&nbsp; <br>&nbsp; //屏蔽Ctrl+A <br>&nbsp; if((event.ctrlKey)&amp;&amp;(event.keyCode==65)) <br>&nbsp; { <br>&nbsp;&nbsp; return false; <br>&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>} <br>&lt;/script&gt; <br>&lt;/body&gt; <br>&lt;/HTML&gt;&nbsp; <br></p>
<img src ="http://www.blogjava.net/wealupa/aggbug/115943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2007-05-08 14:43 <a href="http://www.blogjava.net/wealupa/archive/2007/05/08/115943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript小技巧</title><link>http://www.blogjava.net/wealupa/archive/2006/12/26/90126.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Tue, 26 Dec 2006 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2006/12/26/90126.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/90126.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2006/12/26/90126.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/90126.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/90126.html</trackback:ping><description><![CDATA[<div>
<ul>
    <li><font size=2>事件源对象 <br>event.srcElement.tagName <br>event.srcElement.type </font>
    <li><font size=2>捕获释放 event.srcElement.setCapture(); <br>event.srcElement.releaseCapture(); </font>
    <li><font size=2>事件按键 <br>event.keyCode <br>event.shiftKey <br>event.altKey <br>event.ctrlKey </font>
    <li><font size=2>事件返回值 <br>event.returnValue </font>
    <li><font size=2>鼠标位置 event.x <br>event.y </font>
    <li><font size=2>窗体活动元素 document.activeElement </font>
    <li><font size=2>绑定事件 <br>document.captureEvents(Event.KEYDOWN); </font>
    <li><font size=2>访问窗体元素 document.all("txt").focus(); <br>document.all("txt").select(); </font>
    <li><font size=2>窗体命令 <br>document.execCommand </font>
    <li><font size=2>窗体COOKIE document.cookie </font>
    <li><font size=2>菜单事件 <br>document.oncontextmenu </font>
    <li><font size=2>创建元素 document.createElement("SPAN"); </font>
    <li><font size=2>根据鼠标获得元素： document.elementFromPoint(event.x,event.y).tagName=="TD document.elementFromPoint(event.x,event.y).appendChild(ms) </font>
    <li><font size=2>窗体图片 <br>document.images[索引] </font>
    <li><font size=2>窗体事件绑定 document.onmousedown=scrollwindow; </font>
    <li><font size=2>元素 <br>document.窗体.elements[索引] </font>
    <li><font size=2>对象绑定事件 document.all.xxx.detachEvent('onclick',a); </font>
    <li><font size=2>插件数目 <br>navigator.plugins </font>
    <li><font size=2>取变量类型 typeof($js_libpath) == "undefined" </font>
    <li><font size=2>下拉框 下拉框.options[索引] <br>下拉框.options.length </font>
    <li><font size=2>查找对象 <br>document.getElementsByName("r1"); <br>document.getElementById(id); </font>
    <li><font size=2>定时 timer=setInterval('scrollwindow()',delay); <br>clearInterval(timer); </font>
    <li><font size=2>UNCODE编码 escape() ,unescape </font>
    <li><font size=2>父对象 <br>obj.parentElement(dhtml) <br>obj.parentNode(dom) </font>
    <li><font size=2>交换表的行 TableID.moveRow(2,1) </font>
    <li><font size=2>替换CSS document.all.csss.href = "a.css"; </font>
    <li><font size=2>并排显示 display:inline </font>
    <li><font size=2>隐藏焦点 hidefocus=true </font>
    <li><font size=2>根据宽度换行 style="word-break:break-all" </font>
    <li><font size=2>自动刷新 &lt;meta HTTP-EQUIV="refresh" CONTENT="8;URL=http://c98.yeah.net"&gt; </font>
    <li><font size=2>简单邮件 &lt;a href="</font> <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#97;&#97;&#64;&#98;&#98;&#98;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#99;&#99;&#99;&#38;&#97;&#109;&#112;&#59;&#97;&#109;&#112;&#59;&#98;&#111;&#100;&#121;&#61;&#120;&#120;&#120;&#121;&#121;&#121;"><font color=#0000ff size=2><u>mailto:aaa@bbb.com?subject=ccc&amp;body=xxxyyy</u> </font></a><font size=2>"&gt; </font>
    <li><font size=2>快速转到位置 obj.scrollIntoView(true) </font>
    <li><font size=2>锚 &lt;a name="first"&gt; <br>&lt;a href="#first"&gt;anchors&lt;/a&gt; </font>
    <li><font size=2>网页传递参数 location.search(); </font>
    <li><font size=2>可编辑 obj. </font>
    <li><font size=2>执行菜单命令 <br>obj.execCommand </font>
    <li><font size=2>双字节字符 <br>/[^x00-xff]/ <br>汉字 <br>/[u4e00-u9fa5]/ </font>
    <li><font size=2>让英文字符串超出表格宽度自动换行 <br>word-wrap: break-word; word-break: break-all; </font>
    <li><font size=2>透明背景 <br>&lt;IFRAME src="1.htm" width=300 height=180 allowtransparency&gt;&lt;/iframe&gt; </font>
    <li><font size=2>获得style内容 obj.style.cssText </font>
    <li><font size=2>HTML标签 <br>document.documentElement.innerHTML </font>
    <li><font size=2>第一个style标签 <br>document.styleSheets[0] </font>
    <li><font size=2>style标签里的第一个样式 <br>document.styleSheets[0].rules[0] </font>
    <li><font size=2>防止点击空链接时，页面往往重置到页首端。 &lt;a href="javascript:function()"&gt;word&lt;/a&gt; </font>
    <li><font size=2>上一网页源 <br>asp: <br>request.servervariables("HTTP_REFERER") <br>javascript: <br>document.referrer </font>
    <li><font size=2>释放内存 CollectGarbage(); </font>
    <li><font size=2>禁止右键 <br>document.oncontextmenu = function() { return false;} </font>
    <li><font size=2>禁止保存 <br>&lt;noscript&gt;&lt;iframe src="*.htm"&gt;&lt;/iframe&gt;&lt;/noscript&gt; </font>
    <li><font size=2>禁止选取&lt;body oncontextmenu=<span>"return false"</span> ondragstart=<span>"return false"</span> onselectstart =<span>"return false"</span> onselect=<span>"document.selection.empty()"</span> oncopy=<span>"document.selection.empty()"</span> onbeforecopy=<span>"return false"</span>onmouseup=<span>"document.selection.empty()&gt;</span><span></span></font>
    <li><font size=2>禁止粘贴 <br>&lt;input type=text onpaste="return false"&gt; </font>
    <li><font size=2>地址栏图标 <br>&lt;link rel="Shortcut Icon" href="favicon.ico"&gt; <br>favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下 </font>
    <li><font size=2>收藏栏图标 <br>&lt;link rel="Bookmark" href="favicon.ico"&gt; </font>
    <li><font size=2>查看源码 <br>&lt;input type=button value=查看网页源代码 onclick="window.location = 'view-source:'+ 'http://www.csdn.net/'"&gt; </font>
    <li><font size=2>关闭输入法 <br>&lt;input style="ime-mode:disabled"&gt; </font>
    <li><font size=2>自动全选 <br>&lt;input type=text name=text1 value="123" onfocus="this.select()"&gt; </font>
    <li><font size=2>ENTER键可以让光标移到下一个输入框 &lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt; </font>
    <li><font size=2>文本框的默认值 &lt;input type=text value="123" onfocus="alert(this.defaultValue)"&gt; </font>
    <li><font size=2>title换行 obj.title = "123 sdfs " </font>
    <li><font size=2>获得时间所代表的微秒 var n1 = new Date("2004-10-10".replace(/-/g, "/")).getTime() </font>
    <li><font size=2>窗口是否关闭 win.closed </font>
    <li><font size=2>checkbox扁平 &lt;input type=checkbox style="position: absolute; clip:rect(5px 15px 15px 5px)"&gt;&lt;br&gt; </font>
    <li><font size=2>获取选中内容 document.selection.createRange().duplicate().text </font>
    <li><font size=2>自动完成功能 &lt;input type=text autocomplete=on&gt;打开该功能 <br>&lt;input type=text autocomplete=off&gt;关闭该功能 </font>
    <li><font size=2>窗口最大化 <br>&lt;body onload="window.resizeTo(window.screen.width - 4,window.screen.height-50);window.moveTo(-4,-4)"&gt; </font>
    <li><font size=2>无关闭按钮IE window.open("aa.htm", "meizz", "fullscreen=7"); </font>
    <li><font size=2>统一编码/解码 alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe"))) <br>encodeURIComponent对":"、"/"、";" 和 "?"也编码 </font>
    <li><font size=2>表格行指示 &lt;tr onmouseover="this.bgColor='#f0f0f0'" onmouseout="this.bgColor='#ffffff'"&gt; </font>
    <p><br><font size=2>//各种尺寸 </font></p>
    <div><font size=2>s += </font><font size=2><font face="Courier New"><span>"rn网页可见区域宽："</span>+ document.body.clientWidth; <br>s += <span>"rn网页可见区域高："</span>+ document.body.clientHeight; <br>s += <span>"rn网页可见区域高："</span>+ document.body.offsetWeight +<span>" (包括边线的宽)"</span>; <br>s += <span>"rn网页可见区域高："</span>+ document.body.offsetHeight +<span>" (包括边线的宽)"</span>; <br>s += <span>"rn网页正文全文宽："</span>+ document.body.scrollWidth; <br>s += <span>"rn网页正文全文高："</span>+ document.body.scrollHeight; <br>s += <span>"rn网页被卷去的高："</span>+ document.body.scrollTop; <br>s += <span>"rn网页被卷去的左："</span>+ document.body.scrollLeft; <br>s += <span>"rn网页正文部分上："</span>+ window.screenTop; <br>s += <span>"rn网页正文部分左："</span>+ window.screenLeft; <br>s += <span>"rn屏幕分辨率的高："</span>+ window.screen.height; <br>s += <span>"rn屏幕分辨率的宽："</span>+ window.screen.width; <br>s += <span>"rn屏幕可用工作区高度："</span>+ window.screen.availHeight; <br>s += <span>"rn屏幕可用工作区宽度："</span></font>+ window.screen.availWidth; </font></div>
    </li>
</ul>
<p><font size=2>//过滤数字 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2>//特殊用途 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2>//不缓存 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2></font></p>
<br><font size=2>//正则匹配 </font>
<p>&#160;</p>
<p><font size=2>//无提示关闭 </font></p>
<div><font size=2><font face="Courier New"><span>function</span> Close() <br>{ <br><span>var</span> ua=navigator.userAgent <br><span>var</span> ie=navigator.appName==<span>"Microsoft Internet Explorer"</span>?<span>true</span>:false <br><span>if</span>(ie) <br>{ <br><span>var</span> IEversion=parseFloat(ua.substring(ua.indexOf(<span>"MSIE "</span>)+5,ua.indexOf(<span>";"</span>,ua.indexOf(<span>"MSIE "</span>)))) <br><span>if</span>(IEversion&lt; 5.5) <br>{ <br><span>var</span> str = '&lt;object id=noTipClose classid=<span>"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</span>&gt;' <br>str += '&lt;param name=<span>"Command"</span> value=<span>"Close"</span>&gt;&lt;/object&gt;'; <br>document.body.insertAdjacentHTML(<span>"beforeEnd"</span>, str); <br>document.all.noTipClose.Click(); <br>} <br>else <br>{ <br>window.opener =<span>null</span></font>; <br>window.close(); <br>} <br>} <br>else <br>{ <br>window.close() <br>} <br>} </font></div>
<p><font size=2>//取得控件得绝对位置(1) </font></p>
<div><font size=2>&lt;script language=</font> <font face="Courier New"><font size=2><span>"javascript"</span>&gt; <br><span>function</span> getoffset(e) <br>{ <br><span>var</span> t=e.offsetTop; <br><span>var</span> l=e.offsetLeft; <br><span>while</span>(e=e.offsetParent) <br>{ <br>t+=e.offsetTop; <br>l+=e.offsetLeft; <br>} <br><span>var</span> rec = <span>new</span><span>Array</span>(1); <br>rec[0] = t; <br>rec[1] = l; <br><span>return</span> rec <br>} <br>&lt;/script&gt; </font></font></div>
<p><font size=2>//获得控件的绝对位置(2) </font></p>
<div><font size=2>oRect = obj.getBoundingClientRect(); <br>oRect.left <br>oRect. </font></div>
<p><font size=2>//最小化,最大化,关闭 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2></font></p>
<font size=2>//光标停在文字最后 </font>
<p>&#160;</p>
<p><font size=2>//页面进入和退出的特效 </font></p>
<div><font size=2>进入页面&lt;meta http-equiv=</font> <font size=2><font face="Courier New"><span>"Page-Enter"</span> content=<span>"revealTrans(duration=x, transition=y)"</span>&gt; <br>推出页面&lt;meta http-equiv=<span>"Page-Exit"</span> content=<span>"revealTrans(duration=x, transition=y)"</span></font>&gt; <br>这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使 <br>用哪种特效，取值为1-23: <br>　　0 矩形缩小 <br>　　1 矩形扩大 <br>　　2 圆形缩小 <br>　　3 圆形扩大 <br>　　4 下到上刷新 <br>　　5 上到下刷新 <br>　　6 左到右刷新 <br>　　7 右到左刷新 <br>　　8 竖百叶窗 <br>　　9 横百叶窗 <br>　　10 错位横百叶窗 <br>　　11 错位竖百叶窗 <br>　　12 点扩散 <br>　　13 左右到中间刷新 <br>　　14 中间到左右刷新 <br>　　15 中间到上下 <br>　　16 上下到中间 <br>　　17 右下到左上 <br>　　18 右上到左下 <br>　　19 左上到右下 <br>　　20 左下到右上 <br>　　21 横条 <br>　　22 竖条 <br>　　23 </font></div>
<p><font size=2>//网页是否被检索 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><br><font size=2>//打印分页 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><br><font size=2>//设置打印 </font></p>
<div><font size=2>&lt;object id=</font> <font face="Courier New"><font size=2><span>"factory"</span> style=<span>"display:none"</span> viewastext <br>classid=<span>"clsid:1663ed61-23eb-11d2-b92f-008048fdd814"</span><br>codebase=<span>"http:<span>//www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"</span></span><br>&gt;&lt;/object&gt; <br>&lt;input type=button value=页面设置 onclick=<span>"factory.printing.PageSetup()"</span>&gt; <br>&lt;input type=button value=打印预览 onclick=<span>"factory.printing.Preview()"</span>&gt; <br><br>&lt;script language=javascript&gt; <br><span>function</span> window.onload() <br>{ <br><span>// -- advanced features </span><br>factory.printing.SetMarginMeasure(2) <span>// measure margins in inches </span><br>factory.printing.SetPageRange(<span>false</span>, 1, 3) <span>// need pages from 1 to 3 </span><br>factory.printing.printer = <span>"HP DeskJet 870C"</span><br>factory.printing.copies = 2 <br>factory.printing.collate = true <br>factory.printing.paperSize = <span>"A4"</span><br>factory.printing.paperSource = <span>"Manual feed"</span><br><span>// -- basic features </span><br>factory.printing.header = <span>"居左显示&amp;b居中显示&amp;b居右显示页码，第&amp;p页/共&amp;P页"</span><br>factory.printing.footer = <span>"（自定义页脚）"</span><br>factory.printing.portrait = false <br>factory.printing.leftMargin = 0.75 <br>factory.printing.topMargin = 1.5 <br>factory.printing.rightMargin = 0.75 <br>factory.printing.bottomMargin = 1.5 <br>} <br><span>function</span> Print(frame) { <br>factory.printing.Print(<span>true</span>, frame) <span>// print with prompt </span><br>} <br>&lt;/script&gt; <br>&lt;input type=button value=<span>"打印本页"</span> onclick=<span>"factory.printing.Print(false)"</span>&gt; <br>&lt;input type=button value=<span>"页面设置"</span> onclick=<span>"factory.printing.PageSetup()"</span>&gt; <br>&lt;input type=button value=<span>"打印预览"</span> onclick=<span>"factory.printing.Preview()"</span>&gt;&lt;br&gt; <br>&lt;a href=<span>"http:<span>//www.meadroid.com/scriptx/docs/printdoc.htm?static"</span> target=_blank&gt;具体使用手册，更多信息，点这里&lt;/a&gt; </span><br></font></font></div>
<p><font size=2>//自带的打印预览 </font></p>
<div><font size=2>WebBrowser.ExecWB(1,1) 打开 <br>Web.ExecWB(2,1) 关闭现在所有的IE窗口，并打开一个新窗口 <br>Web.ExecWB(4,1) 保存网页 <br>Web.ExecWB(6,1) 打印 <br>Web.ExecWB(7,1) 打印预览 <br>Web.ExecWB(8,1) 打印页面设置 <br>Web.ExecWB(10,1) 查看页面属性 <br>Web.ExecWB(15,1) 好像是撤销，有待确认 <br>Web.ExecWB(17,1) 全选 <br>Web.ExecWB(22,1) 刷新 <br>Web.ExecWB(45,1) 关闭窗体无提示 <br>&lt;style media=print&gt; <br>.Noprint{display:none;}&lt;!--用本样式在打印时隐藏非打印项目--&gt; <br>.PageNext{page-break-after: always;}&lt;!--控制分页--&gt; <br>&lt;/style&gt; <br>&lt;object id=</font> <font size=2><font face="Courier New"><span>"WebBrowser"</span> width=0 height=0 classid=<span>"CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"</span>&gt; <br>&lt;/object&gt; <br><br>&lt;center class=<span>"Noprint"</span></font> &gt; <br>&lt;input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)&gt; <br>&lt;input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)&gt; <br>&lt;input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)&gt; <br>&lt;/p&gt; <br>&lt;p&gt; &lt;input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)&gt; <br>&lt;/center&gt; </font></div>
<p><font size=2>//去掉打印时的页眉页脚 </font></p>
<div><font size=2>&lt;script language=</font> <font size=2><font face="Courier New"><span>"JavaScript"</span>&gt; <br><span>var</span> HKEY_Root,HKEY_Path,HKEY_Key; <br>HKEY_Root=<span>"HKEY_CURRENT_USER"</span>; <br>HKEY_Path=<span>"SoftwareMicrosoftInternet ExplorerPageSetup"</span>; <br><span>//设置网页打印的页眉页脚为空 </span><br><span>function</span> PageSetup_Null() <br>{ <br>try <br>{ <br><span>var</span> Wsh=<span>new</span><span>ActiveXObject</span>(<span>"WScript.Shell"</span>); <br>HKEY_Key=<span>"header"</span>; <br>Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<span>""</span>); <br>HKEY_Key=<span>"footer"</span>; <br>Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<span>""</span>); <br>} <br><span>catch</span>(e){} <br>} <br><span>//设置网页打印的页眉页脚为默认值 </span><br><span>function</span> PageSetup_Default() <br>{ <br>try <br>{ <br><span>var</span> Wsh=<span>new</span><span>ActiveXObject</span>(<span>"WScript.Shell"</span>); <br>HKEY_Key=<span>"header"</span>; <br>Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<span>"&amp;w&amp;b页码,&amp;p/&amp;P"</span>); <br>HKEY_Key=<span>"footer"</span>; <br>Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,<span>"&amp;u&amp;b&amp;d"</span>); <br>} <br><span>catch</span>(e){} <br>} <br>&lt;/script&gt; <br>&lt;input type=<span>"button"</span> value=<span>"清空页码"</span> onclick=PageSetup_Null()&gt; <br>&lt;input type=<span>"button"</span> value=<span>"恢复页码"</span></font> onclick=PageSetup_Default()&gt; </font></div>
<p><font size=2>//浏览器验证 </font></p>
<div><font size=2><font face="Courier New"><span>function</span> checkBrowser() <br>{ <br><span>this</span>.ver=navigator.appVersion <br><span>this</span>.dom=document.getElementById?1:0 <br><span>this</span>.ie6=(<span>this</span>.ver.indexOf(<span>"MSIE 6"</span>)&gt;-1 &amp;&amp; <span>this</span>.dom)?1:0; <br><span>this</span>.ie5=(<span>this</span>.ver.indexOf(<span>"MSIE 5"</span>)&gt;-1 &amp;&amp; <span>this</span>.dom)?1:0; <br><span>this</span>.ie4=(document.all &amp;&amp; !<span>this</span>.dom)?1:0; <br><span>this</span>.ns5=(<span>this</span>.dom &amp;&amp; parseInt(<span>this</span>.ver) &gt;= 5) ?1:0; <br><span>this</span>.ns4=(document.layers &amp;&amp; !<span>this</span>.dom)?1:0; <br><span>this</span>.mac=(<span>this</span>.ver.indexOf('Mac') &gt; -1) ?1:0; <br><span>this</span>.ope=(navigator.userAgent.indexOf('Opera')&gt;-1); <br><span>this</span>.ie=(<span>this</span>.ie6 || <span>this</span>.ie5 || <span>this</span>.ie4) <br><span>this</span>.ns=(<span>this</span>.ns4 || <span>this</span>.ns5) <br><span>this</span>.bw=(<span>this</span>.ie6 || <span>this</span>.ie5 || <span>this</span>.ie4 || <span>this</span>.ns5 || <span>this</span>.ns4 || <span>this</span>.mac || <span>this</span>.ope) <br><span>this</span>.nbw=(!<span>this</span>.bw) <br><span>return</span><span>this</span></font>; <br>} </font></div>
<p><font size=2>//计算内容宽和高 </font></p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;SCRIPT language=</font> <font size=2><font face="Courier New"><span>"javascript"</span>&gt; <br><span>function</span> test(obj) <br>{ <br><span>var</span> range = obj.createTextRange(); <br>alert(<span>"内容区宽度: "</span> + range.boundingWidth <br>+ <span>"pxrn内容区高度: "</span> + range.boundingHeight + <span>"px"</span>); <br><br>} <br>&lt;/SCRIPT&gt; <br>&lt;BODY&gt; <br>&lt;Textarea id=<span>"txt"</span> height=<span>"150"</span>&gt;sdf&lt;/textarea&gt;&lt;INPUT type=<span>"button"</span> value=<span>"计算内容宽度"</span> onClick=<span>"test(txt)"</span></font>&gt; <br>&lt;/BODY&gt; </font></div>
<p><font size=2>//无模式的提示框 </font></p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2><font face="Courier New"><span>function</span> modelessAlert(Msg) <br>{ <br>window.showModelessDialog(<span>"javascript:alert(""</span>+escape(Msg)+<span>"");window.close();"</span>,<span>""</span>,<span>"status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"</span></font>); <br>} </font></div>
<p><font size=2></font>&nbsp;</p>
<p><font size=2></font></p>
<font size=2>//屏蔽按键 </font>
<p>&#160;</p>
<p><font size=2>//移动的图层，拖动 </font></p>
<div><font size=2>1.&lt;span style='position:absolute;width:200;height:200;background:red' onmousedown=MouseDown(</font> <font size=2><font face="Courier New"><span>this</span>) onmousemove=MouseMove() onmouseup=MouseUp()&gt;meizz&lt;/span&gt; <br>&lt;script language=javascript&gt; <br><span>var</span> Obj; <br><span>function</span> MouseDown(obj) <br>{ <br>Obj=obj; <br>Obj.setCapture(); <br>Obj.l=event.x-Obj.style.pixelLeft; <br>Obj.t=event.y-Obj.style.pixelTop; <br>} <br><span>function</span> MouseMove() <br>{ <br><span>if</span>(Obj!=<span>null</span>) <br>{ <br>Obj.style.left = event.x-Obj.l; <br>Obj.style.top = event.y-Obj.t; <br>} <br>} <br><span>function</span> MouseUp() <br>{ <br><span>if</span>(Obj!=<span>null</span>) <br>{ <br>Obj.releaseCapture(); <br>Obj=<span>null</span>; <br>} <br>} <br>&lt;/script&gt; <br>2. <br>&lt;div id=<span>"myDiv"</span> src=<span>"logo.gif"</span> ondrag=<span>"doDrag();"</span> onmouseover=<span>"this.style.cursor='hand'"</span> style=<span>"position:absolute;left=100;top=100;"</span> onmousedown=<span>"doMouseDown();"</span>&gt; <br>&lt;a href=<span>"#"</span> onclick=<span>"return false"</span>&gt;&lt;h1&gt;wlecome&lt;/h1&gt;&lt;/a&gt; <br>&lt;/div&gt; <br>&lt;script language=<span>"JavaScript"</span> type=<span>"text/javascript"</span>&gt; <br><span>var</span> orgMouseX; <br><span>var</span> orgMouseY; <br><span>var</span> orgObjX; <br><span>var</span> orgObjY; <br><span>function</span> doDrag() <br>{ <br><span>var</span> myObject=document.all.myDiv; <br><br><span>var</span> x=event.clientX; <br><span>var</span> y=event.clientY; <br>myObject.style.left=x-(orgMouseX-orgObjX); <br>myObject.style.top=y-(orgMouseY-orgObjY); <br><br>} <br><span>function</span></font> doMouseDown() <br>{ <br>orgMouseX=event.clientX; <br>orgMouseY=event.clientY; <br>orgObjX=parseInt(document.all.myDiv.style.left); <br>orgObjY=parseInt(document.all.myDiv.style.top); <br>} <br><br>&lt;/script&gt; </font></div>
<p><font size=2>//文档状态改变 </font></p>
<div><font size=2>&lt;iframe src=</font> <font face="Courier New"><font size=2><span>"a.html"</span> id=<span>"f"</span> name=<span>"f"</span> scrolling=<span>"no"</span> frameborder=0 marginwidth=0 marginheight=0&gt;&lt;/iframe&gt; <br>&lt;script&gt; <br><span>var</span> doc=window.frames[<span>"f"</span>].document; <br><span>function</span> s(){ <br><span>if</span> (doc.readyState==<span>"complete"</span>){ <br>document.all.f.style.height=doc.body.scrollHeight <br>document.all.f.style.width=doc.body.scrollWidth <br>} <br>} <br>doc.onreadystatechange=s <br>&lt;/script&gt; <br><span></span></font></font></div>
<p><font size=2>//刷新后不变的文本框 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2>//访问剪贴板 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2>//操作COOKIE </font></p>
<div><font size=2><font face="Courier New"><span>function</span> SetCookie(sName, sValue) <br>{ <br>document.cookie = sName + <span>"="</span> + escape(sValue) + <span>"; "</span>; <br>} <br><span>function</span> GetCookie(sName) <br>{ <br><span>var</span> aCookie = document.cookie.split(<span>"; "</span>); <br>for (<span>var</span> i=0; i &lt; aCookie.length; i++) <br>{ <br><br><span>var</span> aCrumb = aCookie[i].split(<span>"="</span>); <br><span>if</span> (sName == aCrumb[0]) <br><span>return</span> unescape(aCrumb[1]); <br>} <br><br>} <br><span>function</span> DelCookie(sName) <br>{ <br>document.cookie = sName + <span>"="</span> + escape(sValue) + <span>"; expires=Fri, 31 Dec 1999 23:59:59 GMT;"</span></font>; <br>} </font></div>
<p><font size=2>//setTimeout增加参数 </font></p>
<div><font size=2>&lt;script&gt; <br></font><font size=2><font face="Courier New"><span>var</span> _st = window.setTimeout; <br>window.setTimeout = <span>function</span>(fRef, mDelay) { <br><span>if</span>(typeof fRef == '<span>function</span>'){ <br><span>var</span> argu = <span>Array</span>.prototype.slice.call(arguments,2); <br><span>var</span> f = (<span>function</span>(){ fRef.apply(<span>null</span>, argu); }); <br><span>return</span> _st(f, mDelay); <br>} <br><span>return</span> _st(fRef,mDelay); <br>} <br><span>function</span></font> test(x){ <br>alert(x); <br>} <br>window.setTimeout(test,1000,'fason'); <br>&lt;/script&gt; </font></div>
<p><br><font size=2>//自定义的apply,call </font></p>
<div><font size=2>Function.prototype.apply = </font><font size=2><font face="Courier New"><span>function</span> (obj, argu) { <br><span>if</span> (obj) obj.constructor.prototype._caller = <span>this</span>; <br><span>var</span> argus = <span>new</span><span>Array</span>(); <br>for (<span>var</span> i=0;i&lt;argu.length;i++) <br>argus[i] = <span>"argu["</span> + i + <span>"]"</span>; <br><span>var</span> r; <br>eval(<span>"r = "</span> + (obj ? (<span>"obj._caller("</span> + argus.join(<span>","</span>) + <span>");"</span>) : (<span>"this("</span> + argus.join(<span>","</span>) + <span>");"</span>))); <br><span>return</span> r; <br>}; <br>Function.prototype.call = <span>function</span> (obj) { <br><span>var</span> argu = <span>new</span><span>Array</span>(); <br>for (<span>var</span> i=1;i&lt;arguments.length;i++) <br>argu[i-1] = arguments[i]; <br><span>return</span><span>this</span></font>.apply(obj, argu); <br>}; </font></div>
<p><br><font size=2>//下载文件 </font></p>
<div><font size=2><font face="Courier New"><span>function</span> DownURL(strRemoteURL,strLocalURL) <br>{ <br>try <br>{ <br><span>var</span> xmlHTTP=<span>new</span><span>ActiveXObject</span>(<span>"Microsoft.XMLHTTP"</span>); <br>xmlHTTP.open(<span>"Get"</span>,strRemoteURL,<span>false</span>); <br>xmlHTTP.send(); <br><span>var</span> adodbStream=<span>new</span><span>ActiveXObject</span>(<span>"ADODB.Stream"</span>); <br>adodbStream.Type=1;<span>//1=adTypeBinary </span><br>adodbStream.Open(); <br>adodbStream.write(xmlHTTP.responseBody); <br>adodbStream.SaveToFile(strLocalURL,2); <br>adodbStream.Close(); <br>adodbStream=<span>null</span>; <br>xmlHTTP=<span>null</span>; <br><br>} <br><span>catch</span>(e) <br>{ <br>window.confirm(<span>"下载URL出错!"</span>); <br>} <br><span>//window.confirm(<span>"下载完成."</span>); </span><br></font>} </font></div>
<p><br><font size=2>//检验连接是否有效 </font></p>
<p><font size=2></font>&nbsp;</p>
<p><font size=2>//组件是否安装 <br>isComponentInstalled("{6B053A4B-A7EC-4D3D-4567-B8FF8A1A5739}", "componentID")) </font></p>
<p><font size=2>//检查网页是否存在 </font></p>
<div><font size=2><font face="Courier New"><span>function</span> CheckURL(URL) <br>{ <br><span>var</span> xmlhttp = <span>new</span><span>ActiveXObject</span>(<span>"Microsoft.XMLHTTP"</span>); <br>xmlhttp.Open(<span>"GET"</span>,URL, <span>false</span>); <br>try <br>{ <br>xmlhttp.Send(); <br><span>var</span> result = xmlhttp.status; <br>} <br><span>catch</span>(e) {<span>return</span>(<span>false</span>); } <br><span>if</span>(result==200) <br>{ <br><span>return</span><span>true</span>; <br>} <br>xmlhttp = <span>null</span>; <br><span>return</span></font>&amp;nb </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2><font face="Courier New"><span>function</span> getXML(URL) <br>{ <br><span>var</span> xmlhttp = <span>new</span><span>ActiveXObject</span>(<span>"microsoft.xmlhttp"</span>); <br>xmlhttp.Open(<span>"GET"</span>,URL, <span>false</span>); <br>try <br>{ <br>xmlhttp.Send(); <br>} <br><span>catch</span>(e){} <br><span>finally</span><br>{ <br><span>var</span> result = xmlhttp.responseText; <br><span>if</span>(result) <br>{ <br><span>if</span>(xmlhttp.Status==200) <br>{ <br><span>return</span>(<span>true</span>); <br>} <br><span>else</span><br>{ <br><span>return</span>(<span>false</span>); <br>} <br>} <br><span>else</span><br>{ <br><span>return</span>(<span>false</span></font>); <br>} <br>} <br>} </font></div>
<p><font size=2>//POST代替FORM </font></p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;SCRIPT language=</font> <font size=2><font face="Courier New"><span>"VBScript"</span>&gt; <br>Function URLEncoding(vstrIn) <br>strReturn = <span>""</span><br>For i = 1 To Len(vstrIn) <br>ThisChr = Mid(vStrIn,i,1) <br>If Abs(Asc(ThisChr)) &lt; &amp;HFF Then <br>strReturn = strReturn &amp; ThisChr <br>Else <br>innerCode = Asc(ThisChr) <br>If innerCode &lt; 0 Then <br>innerCode = innerCode + &amp;H10000 <br>End If <br>Hight8 = (innerCode And &amp;HFF00) &amp;HFF <br>Low8 = innerCode And &amp;HFF <br>strReturn = strReturn &amp; <span>"%"</span> &amp; Hex(Hight8) &amp; <span>"%"</span> &amp; Hex(Low8) <br>End If <br>Next <br>URLEncoding = strReturn <br>End Function <br>Function bytes2BSTR(vIn) <br>strReturn = <span>""</span><br>For i = 1 To LenB(vIn) <br>ThisCharCode = AscB(MidB(vIn,i,1)) <br>If ThisCharCode &lt; &amp;H80 Then <br>strReturn = strReturn &amp; Chr(ThisCharCode) <br>Else <br>NextCharCode = AscB(MidB(vIn,i+1,1)) <br>strReturn = strReturn &amp; Chr(CLng(ThisCharCode) * &amp;H100 + CInt(NextCharCode)) <br>i = i + 1 <br>End If <br>Next <br>bytes2BSTR = strReturn <br>End Function <br>dim strA,oReq <br>strA = URLEncoding(<span>"submit1=Submit&amp;text1=中文"</span>) <br>set oReq = CreateObject(<span>"MSXML2.XMLHTTP"</span>) <br>oReq.open <span>"POST"</span>,<span>"http:<span>//ServerName/VDir/TstResult.asp"</span>,false </span><br>oReq.setRequestHeader <span>"Content-Length"</span>,Len(strA) <br>oReq.setRequestHeader <span>"CONTENT-TYPE"</span>,<span>"application/x-www-form-urlencoded"</span></font> <br>oReq.send strA <br>msgbox bytes2BSTR(oReq.responseBody) <br>&lt;/SCRIPT&gt; </font></div>
<p><font size=2>//readyState是xmlhttp返回数据的进度，0=载入中,1=未初始化,2=已载入,3=运行中,4=完成</font> </p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>(1)拖拽访问 <br>event.dataTransfer.setData(</font> <font size=2><font face="Courier New"><span>"URL"</span>, oImage.src); <br>sImageURL = event.dataTransfer.getData(<span>"URL"</span>) <br>(2)普通访问 <br>window.clipboardData.setData(<span>"Text"</span>,oSource.innerText); <br>window.clipboardData.getData(<span>"Text"</span></font>); </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;HTML&gt; <br>&lt;HEAD&gt; <br>&lt;META NAME=<font face="Courier New"><span>"save"</span> CONTENT=<span>"history"</span></font>&gt; <br>&lt;STYLE&gt; <br>.sHistory {behavior:url(#default#savehistory);} <br>&lt;/STYLE&gt; <br>&lt;/HEAD&gt; <br>&lt;BODY&gt; <br>&lt;INPUT class=sHistory type=text id=oPersistInput&gt; <br>&lt;/BODY&gt; <br>&lt;/HTML&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;p style=</font> <font size=2><font face="Courier New"><span>"page-break-after:always"</span>&gt;page1&lt;/p&gt; <br>&lt;p style=<span>"page-break-after:always"</span></font>&gt;page2&lt;/p&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;meta name=</font> <font size=2><font face="Courier New"><span>"ROBOTS"</span> content=<span>"属性值"</span>&gt; <br>　　其中属性值有以下一些: <br>　　属性值为<span>"all"</span>: 文件将被检索，且页上链接可被查询； <br>　　属性值为<span>"none"</span>: 文件不被检索，而且不查询页上的链接； <br>　　属性值为<span>"index"</span>: 文件将被检索； <br>　　属性值为<span>"follow"</span>: 查询页上的链接； <br>　　属性值为<span>"noindex"</span>: 文件不检索，但可被查询链接； <br>　　属性值为<span>"nofollow"</span></font>: </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;object id=min classid=</font> <font size=2><font face="Courier New"><span>"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</span>&gt; <br>&lt;param name=<span>"Command"</span> value=<span>"Minimize"</span>&gt;&lt;/object&gt; <br>&lt;object id=max classid=<span>"clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"</span>&gt; <br>&lt;param name=<span>"Command"</span> value=<span>"Maximize"</span>&gt;&lt;/object&gt; <br>&lt;OBJECT id=close classid=<span>"clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"</span>&gt; <br>&lt;PARAM NAME=<span>"Command"</span> value=<span>"Close"</span></font>&gt;&lt;/OBJECT&gt; <br>&lt;input type=button value=最小化 onclick=min.Click()&gt; <br>&lt;input type=button value=最大化 onclick=max.Click()&gt; <br>&lt;input type=button value=关闭 onclick=close.Click()&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;META HTTP-EQUIV=</font> <font size=2><font face="Courier New"><span>"pragma"</span> CONTENT=<span>"no-cache"</span>&gt; <br>&lt;META HTTP-EQUIV=<span>"Cache-Control"</span> CONTENT=<span>"no-cache, must-revalidate"</span>&gt; <br>&lt;META HTTP-EQUIV=<span>"expires"</span> CONTENT=<span>"0"</span></font>&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;input type=button value=导入收藏夹 onclick=</font> <font size=2><font face="Courier New"><span>"window.external.ImportExportFavorites(true,'http:<span>//localhost');"</span>&gt; </span><br>&lt;input type=button value=导出收藏夹 onclick=<span>"window.external.ImportExportFavorites(false,'http:<span>//localhost');"</span>&gt; </span><br>&lt;input type=button value=整理收藏夹 onclick=<span>"window.external.ShowBrowserUI('OrganizeFavorites', null)"</span>&gt; <br>&lt;input type=button value=语言设置 onclick=<span>"window.external.ShowBrowserUI('LanguageDialog', null)"</span>&gt; <br>&lt;input type=button value=加入收藏夹 onclick=<span>"window.external.AddFavorite('http:<span>//www.google.com/', 'google')"</span>&gt; </span><br>&lt;input type=button value=加入到频道 onclick=<span>"window.external.addChannel('http:<span>//www.google.com/')"</span>&gt; </span><br>&lt;input type=button value=加入到频道 onclick=<span>"window.external.showBrowserUI('PrivacySettings',null)"</span></font>&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;input type=text onkeypress=<font face="Courier New"><span>"return event.keyCode&gt;=48&amp;&amp;event.keyCode&lt;=57||(this.value.indexOf('.')&lt;0?event.keyCode==46:false)"</span> onpaste=<span>"return !clipboardData.getData('text').match(/D/)"</span> ondragenter=<span>"return false"</span></font>&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;html&gt; <br>&lt;head&gt; <br>&lt;meta http-equiv=</font> <font face="Courier New"><font size=2><span>"Content-Type"</span> content=<span>"text/html; charset=gb2312"</span>&gt; <br>&lt;noscript&gt;&lt;meta http-equiv=<span>"refresh"</span> content=<span>"0;url=about:noscript"</span>&gt;&lt;/noscript&gt; <br>&lt;title&gt;屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键&lt;/title&gt; <br>&lt;/head&gt; <br>&lt;body&gt; <br>&lt;script language=<span>"Javascript"</span>&gt;&lt;!-- <br><span>//屏蔽鼠标右键、Ctrl+N、Shift+F10、F11、F5刷新、退格键 </span><br><span>//Author: meizz(梅花雨) 2002-6-18 </span><br><span>function</span> document.oncontextmenu(){event.returnValue=<span>false</span>;}<span>//屏蔽鼠标右键 </span><br><span>function</span> window.onhelp(){<span>return</span><span>false</span>} <span>//屏蔽F1帮助 </span><br><span>function</span> document.onkeydown() <br>{ <br><span>if</span> ((window.event.altKey)&amp;&amp; <br>((window.event.keyCode==37)|| <span>//屏蔽 Alt+ 方向键 &#8592; </span><br>(window.event.keyCode==39))) <span>//屏蔽 Alt+ 方向键 &#8594; </span><br>{ <br>alert(<span>"不准你使用ALT+方向键前进或后退网页！"</span>); <br>event.returnValue=<span>false</span>; <br>} <br></font></font><font size=2><font face="Courier New"><span>/* 注：这还不是真正地屏蔽 Alt+ 方向键， <br>因为 Alt+ 方向键弹出警告框时，按住 Alt 键不放， <br>用鼠标点掉警告框，这种屏蔽方法就失效了。以后若 <br>有哪位高手有真正屏蔽 Alt 键的方法，请告知。*/</span> <br><span>if</span> ((event.keyCode==8) || <span>//屏蔽退格删除键 </span><br>(event.keyCode==116)|| <span>//屏蔽 F5 刷新键 </span><br>(event.ctrlKey &amp;&amp; event.keyCode==82)){ <span>//Ctrl + R </span><br>event.keyCode=0; <br>event.returnValue=<span>false</span>; <br>} <br><span>if</span> (event.keyCode==122){event.keyCode=0;event.returnValue=<span>false</span>;} <span>//屏蔽F11 </span><br><span>if</span> (event.ctrlKey &amp;&amp; event.keyCode==78) event.returnValue=<span>false</span>; <span>//屏蔽 Ctrl+n </span><br><span>if</span> (event.shiftKey &amp;&amp; event.keyCode==121)event.returnValue=<span>false</span>; <span>//屏蔽 shift+F10 </span><br><span>if</span> (window.event.srcElement.tagName == <span>"A"</span> &amp;&amp; window.event.shiftKey) <br>window.event.returnValue = <span>false</span>; <span>//屏蔽 shift 加鼠标左键新开一网页 </span><br><span>if</span> ((window.event.altKey)&amp;&amp;(window.event.keyCode==115)) <span>//屏蔽Alt+F4 </span><br>{ <br>window.showModelessDialog(<span>"about:blank"</span>,<span>""</span>,<span>"dialogWidth:1px;dialogheight:1px"</span>); <br><span>return</span><span>false</span></font>; <br>} <br>} <br>&lt;/script&gt; <br>屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键 <br>&lt;/body&gt; <br>&lt;/html&gt; </font></div>
<p><font size=2>//屏蔽打印 <br>&lt;style&gt; <br>@media print{ <br>* {display:none} <br>} <br>&lt;/style&gt; </font></p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;script language=</font> <font size=2><font face="Courier New"><span>"javascript"</span>&gt; <br><span>function</span> cc() <br>{ <br><span>var</span> e = event.srcElement; <br><span>var</span> r =e.createTextRange(); <br>r.moveStart('character',e.value.length); <br>r.collapse(<span>true</span>); <br>r.select(); <br>} <br>&lt;/script&gt; <br>&lt;input type=text name=text1 value=<span>"123"</span> onfocus=<span>"cc()"</span></font>&gt; </font></div>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>匹配中文字符的正则表达式： [u4e00-u9fa5] <br>匹配双字节字符(包括汉字在内)：[^x00-xff] <br>匹配空行的正则表达式：n[s| ]*r <br>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;/1&gt;|&lt;(.*) /&gt;/ <br>匹配首尾空格的正则表达式：(^s*)|(s*$)（像vbscript那样的trim函数） <br>匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* <br>匹配网址URL的正则表达式：http:</font> <font size=2><font face="Courier New"><span>//([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)? </span><br>以下是例子： <br>利用正则表达式限制网页表单里的文本框输入内容： <br>用正则表达式限制只能输入中文：onkeyup=<span>"value=value.replace(/[^u4E00-u9FA5]/g,'')"</span> onbeforepaste=<span>"clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"</span><br>1.用正则表达式限制只能输入全角字符： onkeyup=<span>"value=value.replace(/[^uFF00-uFFFF]/g,'')"</span> onbeforepaste=<span>"clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"</span><br>2.用正则表达式限制只能输入数字：onkeyup=<span>"value=value.replace(/[^d]/g,'') "</span>onbeforepaste=<span>"clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"</span><br>3.用正则表达式限制只能输入数字和英文：onkeyup=<span>"value=value.replace(/[W]/g,'') "</span>onbeforepaste=<span>"clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"</span></font> </font></div>
<p><font size=2>//消除图像工具栏 </font></p>
<p><font size=2></font>&nbsp;</p>
<div><font size=2>&lt;IMG SRC=</font> <font size=2><font face="Courier New"><span>"mypicture.jpg"</span> HEIGHT=<span>"100px"</span> WIDTH=<span>"100px"</span> GALLERYIMG=<span>"false"</span>&gt; <br>or <br>&lt;head&gt; <br>&lt;meta http-equiv=<span>"imagetoolbar"</span> content=<span>"no"</span>&gt; <br>&lt;/head&gt;</font> </font></div>
</div>
<img src ="http://www.blogjava.net/wealupa/aggbug/90126.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2006-12-26 15:43 <a href="http://www.blogjava.net/wealupa/archive/2006/12/26/90126.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript小技巧</title><link>http://www.blogjava.net/wealupa/archive/2006/12/16/88285.html</link><dc:creator>常言笑</dc:creator><author>常言笑</author><pubDate>Sat, 16 Dec 2006 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/wealupa/archive/2006/12/16/88285.html</guid><wfw:comment>http://www.blogjava.net/wealupa/comments/88285.html</wfw:comment><comments>http://www.blogjava.net/wealupa/archive/2006/12/16/88285.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wealupa/comments/commentRss/88285.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wealupa/services/trackbacks/88285.html</trackback:ping><description><![CDATA[<h1><span style="FONT-SIZE: 12pt; FONT-FAMILY: 楷体_GB2312">1、弹出窗口总是在最上面</span> </h1>
<p><span style="FONT-SIZE: 10pt">[1] &lt;body ="this.focus();"&gt;</span> </p>
<p><span style="FONT-SIZE: 10pt">[2]模态窗口showModalDialog(url); 不过模式窗口中对老页面无法回写,打开的子窗口不能得到openner,因此子窗口无法访问父窗口数据. 如果要传递数据的话, 只能在Dialog窗口中用return,然后父窗口通过var some = showModalDialog(...)得到值.</span> </p>
<p><span style="FONT-SIZE: 10pt">[3]非模态窗口<span style="COLOR: #c60a00">window</span>.showModelessDialog</span> </p>
<p><span style="FONT-SIZE: 10pt">[4]open来打开新窗口</span> </p>
<br>
<div><span style="FONT-SIZE: 12pt; FONT-FAMILY: 楷体_GB2312"><strong>2、输入框屏蔽输入法输入</strong> </span></div>
<br>
<div><span style="FONT-SIZE: 10pt">[1]style="ime-mode:disabled"&nbsp; &lt;input&gt;中加入</span> </div>
<div><span style="FONT-SIZE: 10pt">[2]onpaste="return false" 不能粘贴 &lt;body&gt;中</span> </div>
<div><span style="FONT-SIZE: 10pt">[3]oncopy="return false"&nbsp; 不能复制 &lt;body&gt;中</span> </div>
<div><span style="FONT-SIZE: 10pt"></span>&nbsp;</div>
<div><span style="FONT-SIZE: 12pt; FONT-FAMILY: 楷体_GB2312"><strong>3、各种尺寸</strong> </span></div>
<span style="FONT-SIZE: 10pt">
<div><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span> <img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <span style="COLOR: #0000ff">&lt;</span> <span style="COLOR: #800000">&nbsp;LANGUAGE</span> <span style="COLOR: #0000ff">="Java"</span> <span style="COLOR: #0000ff">&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br></span><span style="COLOR: #008080">&nbsp;3</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>var&nbsp;s&nbsp;=&nbsp;"网页可见区域宽："+&nbsp;document&nbsp;.body.clientWidth;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页可见区域高："+&nbsp;document&nbsp;.body.clientHeight;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;5</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页可见区域高："+&nbsp;document&nbsp;.body.offsetWeight&nbsp;+"&nbsp;(包括边线的宽)";&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页可见区域高："+&nbsp;document&nbsp;.body.offsetHeight&nbsp;+"&nbsp;(包括边线的宽)";&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页正文全文宽："+&nbsp;document&nbsp;.body.scrollWidth;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页正文全文高："+&nbsp;document&nbsp;.body.scrollHeight;&nbsp;<br></span><span style="COLOR: #008080">&nbsp;9</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页被卷去的高："+&nbsp;document&nbsp;.body.scrollTop;&nbsp;<br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页被卷去的左："+&nbsp;document&nbsp;.body.scrollLeft;&nbsp;<br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页正文部分上："+&nbsp;window&nbsp;.screenTop;&nbsp;<br></span><span style="COLOR: #008080">12</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n网页正文部分左："+&nbsp;window&nbsp;.screenLeft;&nbsp;<br></span><span style="COLOR: #008080">13</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n屏幕分辨率的高："+&nbsp;window&nbsp;.screen.height;&nbsp;<br></span><span style="COLOR: #008080">14</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n屏幕分辨率的宽："+&nbsp;window&nbsp;.screen.width;&nbsp;<br></span><span style="COLOR: #008080">15</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n屏幕可用工作区高度："+&nbsp;window&nbsp;.screen.availHeight;&nbsp;<br></span><span style="COLOR: #008080">16</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>s&nbsp;+=&nbsp;"\r\n屏幕可用工作区宽度："+&nbsp;window&nbsp;.screen.availWidth;&nbsp;<br></span><span style="COLOR: #008080">17</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>alert(s);&nbsp;<br></span><span style="COLOR: #008080">18</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> <br></span><span style="COLOR: #008080">19</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span><span style="COLOR: #0000ff">&lt;/&gt;</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">20</span> <span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top> </span></div>
</div>
</span>
<img src ="http://www.blogjava.net/wealupa/aggbug/88285.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wealupa/" target="_blank">常言笑</a> 2006-12-16 22:54 <a href="http://www.blogjava.net/wealupa/archive/2006/12/16/88285.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>