﻿<?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-飞鸟JAVA-文章分类-AJAX</title><link>http://www.blogjava.net/yczz/category/11244.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 14 Dec 2007 17:18:42 GMT</lastBuildDate><pubDate>Fri, 14 Dec 2007 17:18:42 GMT</pubDate><ttl>60</ttl><item><title>JavaScript日期处理函数大全</title><link>http://www.blogjava.net/yczz/articles/167785.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Fri, 14 Dec 2007 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/167785.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/167785.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/167785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/167785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/167785.html</trackback:ping><description><![CDATA[<br />
有人经常问到有关如何使用JS处理日期的问题，我只好献拙了。<br />
希望能够有点用处。<br />
1。<font color="#ff0000">解决2000问题</font><br />
function y2k(number) { return (number &lt; 1000) ? number + 1900 : number; }<br />
2。<font color="#ff0000">检查日期是否合法</font><br />
// 当输入参数为isDate(dd,mm,ccyy)时，表示要检查年，月，日<br />
// 当输入参数为isDate(dd,mm) 表示默认年为当前年<br />
// 当输入参数为isDate(dd)&nbsp;&nbsp;&nbsp;&nbsp;表示默认年，月为当前年月<br />
// 注意输入月份保证在1-12以内。<br />
<br />
function isDate (day,month,year) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var today = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;year = ((!year) ? y2k(today.getYear())year);<br />
&nbsp;&nbsp;&nbsp;&nbsp;month = ((!month) ? today.getMonth():month-1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (!day) return false<br />
&nbsp;&nbsp;&nbsp;&nbsp;var test = new Date(year,month,day); <font color="#ffffff">86oo.com提供各类教程</font> <br />
&nbsp;&nbsp;&nbsp;&nbsp;if ( (y2k(test.getYear()) == year) &amp;&amp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(month == test.getMonth()) &amp;&amp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(day == test.getDate()) )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false<br />
}<br />
<br />
以下是调用例子：<br />
if (isDate(31,2,1997))<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.write("Valid");<br />
else<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.write("Invalid");<br />
<br />
3。<font color="#ff0000">如何判断两个日期中的间隔天数</font><br />
function daysElapsed(date1,date2) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var difference = Date.UTC(date1.getYear(),date1.getMonth(),date1.getDate(),0,0,0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Date.UTC(date2.getYear(),date2.getMonth(),date2.getDate(),0,0,0);<br />
&nbsp;&nbsp;&nbsp;&nbsp;return difference/1000/60/60/24; <span class="Dmx469">86oo.com</span> <br />
}<br />
<br />
4。<font color="#ff0000">如何将一个下拉列表框中的月份传递到另一页</font><br />
&lt;FORM&gt;<br />
&lt;SELECT NAME="selectName"&gt;<br />
&lt;OPTION&gt;January<br />
&lt;OPTION&gt;February<br />
&lt;OPTION&gt;March<br />
&lt;OPTION&gt;April<br />
&lt;OPTION&gt;May<br />
&lt;OPTION&gt;June<br />
&lt;OPTION&gt;July<br />
&lt;OPTION&gt;August<br />
&lt;OPTION&gt;Spetember<br />
&lt;OPTION&gt;October<br />
&lt;OPTION&gt;November<br />
&lt;OPTION&gt;December<br />
&lt;/SELECT&gt;<br />
&lt;INPUT TYPE="BUTTON" VALUE="Go" onClick="window.location.href = 'nextpage.html?' +<br />
this.form.selectName.options[this.form.selectName.selectedIndex].text"&gt;<br />
&lt;/FORM&gt;<br />
<br />
在nextpage.html中加入下面的代码<br />
&lt;FORM name="formName"&gt;&lt;INPUT TYPE="TEXT" name="textName"&gt;&lt;FORM&gt;<br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;<br />
document.formName.textName.value = location.search.substring(1);<br />
//-SCRIPT&gt;<br />
<br />
或则：<br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;
<p class="Dmx469">86oo精彩教程</p>
<br />
document.write("&lt;FORM&gt;&lt;INPUT TYPE='TEXT' ");<br />
document.write("VALUE='"location.search.substring(1)+"FORM&gt;")<br />
//-SCRIPT&gt;<br />
<br />
5。<font color="#ff0000">如何将一个字符串中的时间和当前时间做比较</font><br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br />
/*其中的日期字符串可有以下格式：<br />
&nbsp;&nbsp;&nbsp;格式 1 : 19970529<br />
&nbsp;&nbsp;&nbsp;格式 2 : 970529<br />
&nbsp;&nbsp;&nbsp;格式 3 : 29/05/1997<br />
&nbsp;&nbsp;&nbsp;格式 4 : 29/05/97<br />
&nbsp;&nbsp;&nbsp;输入参数dateType是1到4的数字，表示使用哪种格式.<br />
*/<br />
&lt;!-<br />
function isitToday(dateString,dateType) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var now = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var today = new Date(now.getYear(),now.getMonth(),now.getDate())<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (dateType == 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date(dateString.substring(0,4),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(4,6)-1, <font color="#ffffff">http://www.86oo.com</font> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(6,8));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date(dateString.substring(0,2),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(2,4)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(4,6));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date(dateString.substring(6,10),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(3,5)-1,
<p class="Dmx469">您所浏览的文章来自86oo.com</p>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(0,2));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date(dateString.substring(6,8),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(3,5)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(0,2));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (date.toString() == today.toString())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;
<p class="Dmx469">86oo精彩教程</p>
<br />
}<br />
调用的例子如下：<br />
if (isitToday("19970529",1)) alert('true'); else alert('false');<br />
if (isitToday("970529",2)) alert('true'); else alert('false');<br />
if (isitToday("29/05/1997",3)) alert('true'); else alert('false');<br />
if (isitToday("02/06/97",4)) alert('true'); else alert('false');<br />
//-<br />
&lt;/SCRIPT&gt;<br />
<br />
6。<font color="#ff0000">如何根据一个人的生日计算他的岁数</font><br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;<br />
/*其中的日期字符串可有以下格式：<br />
&nbsp;&nbsp;&nbsp;格式 1 : 19970529<br />
&nbsp;&nbsp;&nbsp;格式 2 : 970529<br />
&nbsp;&nbsp;&nbsp;格式 3 : 29/05/1997<br />
&nbsp;&nbsp;&nbsp;格式 4 : 29/05/97<br />
&nbsp;&nbsp;&nbsp;输入参数dateType是1到4的数字，表示使用哪种格式.<br />
*/<br />
function getAge(dateString,dateType) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var now = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var today = new Date(now.getYear(),now.getMonth(),now.getDate())<br />
&nbsp;&nbsp;&nbsp;&nbsp;var yearNow = now.getYear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var monthNow = now.getMonth();
<div class="Dmx469">www.86oo.com</div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;var dateNow = now.getDate();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (dateType == 1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dob = new Date(dateString.substring(0,4),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(4,6)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(6,8));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dob = new Date(dateString.substring(0,2),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(2,4)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(4,6)); <span class="Dmx469">86oo精彩教程</span> <br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 3)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dob = new Date(dateString.substring(6,10),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(3,5)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(0,2));<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (dateType == 4)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dob = new Date(dateString.substring(6,8),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(3,5)-1,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dateString.substring(0,2));
<p class="Dmx469">您所浏览的文章来自86oo.com</p>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;var yearDob = dob.getYear();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var monthDob = dob.getMonth();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var dateDob = dob.getDate();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;yearAge = yearNow - yearDob;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (monthNow &gt; monthDob)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var monthAge = monthNow - monthDob;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yearAge--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var monthAge = 12 + monthNow -monthDob;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (dateNow &gt; dateDob)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dateAge = dateNow - dateDob;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monthAge--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dateAge = 31 + dateNow - dateDob; <span class="Dmx469">欢迎各位访问86oo.com</span> <br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;return yearAge + ' years ' + monthAge + ' months ' + dateAge + ' days';<br />
}<br />
调用例子<br />
document.write(getAge("19650104",1)+'BR&gt;')<br />
document.write(getAge("650104",2)+'BR&gt;')<br />
document.write(getAge("04/01/1965",3)+'BR&gt;')<br />
document.write(getAge("04/01/65",4)+'BR&gt;')<br />
//-SCRIPT&gt;<br />
<br />
7。<font color="#ff0000">如何使用下面的格式dd/mm/yy在网页中显示日期</font><br />
&lt;SCRIPT LANGUAGE = 'JavaScript'&gt;<br />
&lt;!-<br />
var date = new Date();<br />
var d&nbsp;&nbsp;= date.getDate();<br />
var day = (d &lt; 10) ? '0' + d : d;<br />
var m = date.getMonth() + 1;<br />
var month = (m &lt; 10) ? '0' + m : m;<br />
var yy = date.getYear();<br />
var year = (yy &lt; 1000) ? yy + 1900 : yy;<br />
<br />
document.write(day + "/" + month + "/" + year);<br />
//-<br />
&lt;/SCRIPT&gt;<br />
<br />
8。<font color="#ff0000">如何使用下面的格式date month year在网页中显示日期</font><br />
&lt;SCRIPT LANGUAGE = 'JavaScript'&gt; <span class="Dmx469">86oo精彩教程</span> <br />
&lt;!-<br />
function makeArray() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i&lt;makeArray.arguments.length; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this[i + 1] = makeArray.arguments[i];<br />
}<br />
<br />
var months = new makeArray('January','February','March',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'April','May','June','July','August','September',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'October','November','December');<br />
<br />
var date = new Date();<br />
var day&nbsp;&nbsp;= date.getDate();<br />
var month = date.getMonth() + 1;<br />
var yy = date.getYear();<br />
var year = (yy &lt; 1000) ? yy + 1900 : yy;<br />
<br />
document.write(day + " " + months[month] + " " + year);<br />
//-<br />
&lt;/SCRIPT&gt;<br />
<br />
9.<font color="#ff0000">如何让我的网页的最近更新日期更易读</font><br />
&lt;SCRIPT LANGUAGE = 'JavaScript'&gt;&lt;<br />
function makeArray0() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i&lt;makeArray0.arguments.length; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this[i] = makeArray0.arguments[i];
<p class="Dmx469">www.86oo.com</p>
<br />
}<br />
var days = new makeArray0("Sunday","Monday","Tuesday","Wednesday",<br />
&nbsp;&nbsp;&nbsp;&nbsp;"Thursday","Friday","Saturday");<br />
var months = new makeArray0('January','February','March',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'April','May','June','July','August','September',<br />
&nbsp;&nbsp;&nbsp;&nbsp;'October','November','December');<br />
function nths(day) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (day == 1 || day == 21 || day == 31)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'st';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (day == 2 || day == 22)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'nd';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (day == 3 || day == 23)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 'rd';
<p class="Dmx469">www.86oo.com</p>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else return 'th';<br />
}<br />
function y2k(number) { return (number &lt; 1000) ? number + 1900 : number; }<br />
var last = document.lastModified;<br />
var date = new Date(last);<br />
document.write("Last updated on " + days[date.getDay()] + ' ' +<br />
&nbsp;&nbsp;&nbsp;&nbsp;date.getDate() + nths(date.getDate()) + " " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;months[date.getMonth()] + ", " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;(y2k(date.getYear()) + "."<br />
//-SCRIPT&gt;<br />
<br />
10。<font color="#ff0000">如何显示到某个特定日期的倒记时</font><br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;<br />
function y2k(number) { return (number &lt; 1000) ? number + 1900 : number; }<br />
<br />
function timeTillDate(whenDay,whenMonth,whenYear) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var now = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var thisDay = now.getDate(), thisMonth = now.getMonth() + 1, thisYear = y2k(now.getYear())<br />
&nbsp;&nbsp;&nbsp;&nbsp;var yearsDifference = whenYear - thisYear, monthsDifference = 0, daysDifference = 0, string = '';
<div class="Dmx469">86oo.com提供各类教程</div>
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (whenMonth &gt;= thisMonth) monthsDifference = whenMonth - thisMonth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else { yearsDifference--; monthsDifference = whenMonth + 12 - thisMonth; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (whenDay &gt;= thisDay)daysDifference = whenDay - thisDay;<br />
&nbsp;&nbsp;&nbsp;&nbsp;else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (monthsDifference &gt; 0) monthsDifference--;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else { yearsDifference--; monthsDifference+=11; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;daysDifference = whenDay + 31 - thisDay;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (yearsDifference &lt; 0) return '';<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if ((yearsDifference == 0) &amp;&amp; (monthsDifference == 0) &amp;&amp; (daysDifference == 0))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '';<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (yearsDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string = yearsDifference + ' year';
<p class="Dmx469">您所浏览的文章来自86oo.com</p>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (yearsDifference &gt; 1) string += 's';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (monthsDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += monthsDifference + ' month';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (monthsDifference &gt; 1) string += 's';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (daysDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += daysDifference + ' day';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (daysDifference &gt; 1) string += 's';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;var difference = Date.UTC(now.getYear(),now.getMonth(),now.getDate(),now.getHours(),now.getMinutes(),now.getSeconds()) - <span class="Dmx469">欢迎各位访问86oo.com</span> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date.UTC(now.getYear(),now.getMonth(),now.getDate(),0,0,0);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;difference = 1000*60*60*24 - difference;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;var hoursDifference = Math.floor(difference/1000/60/60);<br />
&nbsp;&nbsp;&nbsp;&nbsp;difference = difference - hoursDifference*1000*60*60<br />
&nbsp;&nbsp;&nbsp;&nbsp;var minutesDifference = Math.floor(difference/1000/60);<br />
&nbsp;&nbsp;&nbsp;&nbsp;difference = difference - minutesDifference*1000*60<br />
&nbsp;&nbsp;&nbsp;&nbsp;var secondsDifference = Math.floor(difference/1000);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (hoursDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += hoursDifference + ' hour';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (hoursDifference &gt; 1) string +='s';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<div class="Dmx469">86oo.com</div>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (minutesDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += minutesDifference + ' minute';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (minutesDifference &gt; 1) string +='s';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (secondsDifference &gt; 0) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += secondsDifference + ' second';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (secondsDifference &gt; 1) string +='s';<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string += ' ';<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;return string;<br />
}<br />
<br />
调用例子，例如现在到31/12/1999还有多久。<br />
document.write(timeTillDate(31,12,1999));<br />
//-SCRIPT&gt;<br />
<br />
11。<font color="#ff0000">如何从一个日期中减掉几个小时</font><br />
&lt;SCRIPT LANGUAGE = 'JavaScript'&gt;&lt;<br />
var date = new Date();<br />
var date = new Date(Date.UTC(date.getYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds()) - 5*60*60*1000);
<div class="Dmx469">www.86oo.com</div>
<br />
document.write(date);<br />
//-SCRIPT&gt;<br />
<br />
12。<font color="#ff0000">如何在一个日期中增加几个月后并能够正确显示出来</font><br />
&lt;SCRIPT LANGUAGE="JavaScript"&gt;&lt;<br />
function makeArray() {<br />
&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i&lt;makeArray.arguments.length; i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this[i + 1] = makeArray.arguments[i];<br />
}<br />
var months = new makeArray('January','February','March','April',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'May','June','July','August','September',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'October','November','December');<br />
function nths(day) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;if (day == 1 || day == 21 || day == 31) return 'st';<br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (day == 2 || day == 22) return 'nd'; <span class="Dmx469">86oo.com提供各类教程</span> <br />
&nbsp;&nbsp;&nbsp;&nbsp;else if (day == 3 || day == 23) return 'rd';<br />
&nbsp;&nbsp;&nbsp;&nbsp;else return 'th';<br />
}<br />
function y2k(number) { return (number &lt; 1000) ? number + 1900 : number; }<br />
function monthsahead(noofmonths) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;var today = new Date();<br />
&nbsp;&nbsp;&nbsp;&nbsp;var date = new Date(today.getYear(),today.getMonth() + noofmonths,today.getDate(),today.getHours(),today.getMinutes(),today.getSeconds())<br />
&nbsp;&nbsp;&nbsp;&nbsp;return date.getDate() + nths(date.getDate()) + ' ' + months[date.getMonth() + 1] + ' ' + y2k(date.getYear())<br />
}<br />
<br />
调用例子：<br />
document.write(monthsahead(6));<br />
//-SCRIPT&gt;<br />
<img src ="http://www.blogjava.net/yczz/aggbug/167785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-12-14 15:25 <a href="http://www.blogjava.net/yczz/articles/167785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax 和 XML: 使用 Ajax 实现 lightbox</title><link>http://www.blogjava.net/yczz/articles/162955.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Sun, 25 Nov 2007 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/162955.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/162955.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/162955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/162955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/162955.html</trackback:ping><description><![CDATA[<blockquote>在这个一切都要求新奇的世界中，要吸引用户的注意实属不易。了解如何在 Ajax 工具中使用 lightbox、弹出、窗口和渐变消息之类的新技术吸引用户的目光。 </blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>这可能是流传在都市中的一个传奇故事。很多年之前就有人和我说过这样一个用户交互体验。测试者的座位下面塞了 100 美金，而他正在使用计算机中的桌面应用程序。这个应用程序的状态栏中显示了这样一条信息：&#8220;在您的座位下面有 100 美金。&#8221;可悲的是，没有一个参与者能够发现他座位下面的钱。这个故事告诉我们状态栏传递信息的效率有多低，而且要吸引用户的注意绝非易事。 </p>
<p>本文将介绍如何结合 PHP、动态 HTML（DHTML）和异步的 JavaScript + XML（Ajax）为内容增色，从而真正吸引用户的眼球。 </p>
<p><a name="N10075"><span class="atitle">工具提示</span></a></p>
<p>在浏览器中设置状态栏相当简单，但是要实现一些有用的功能（比如说弹出一个工具提示）则不是那么容易。考虑到简单性，我选择使用了一个可从网络上免费获得的工具提示库，它构建于出色的 Prototype.js JavaScript 库之上。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list1">清单 1</a> 显示了这个工具提示的代码。 </p>
<br />
<a name="list1"><strong>清单 1. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script src="prototype.js" type="text/javascript"&gt;&lt;/script&gt;
            &lt;script src="tooltip.js" type="text/javascript"&gt;&lt;/script&gt;
            &lt;style&gt;
            body { font-family: arial,verdana; }
            .popup { padding:10px; border:1px solid #ccc;
            background:#eee; width:250px; font-size: small; }
            &lt;/style&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;div id="book1"&gt;Code Generation In Action&lt;/div&gt;
            &lt;div id="popup1" class="popup"&gt;
            &lt;/div&gt;
            &lt;/body&gt;
            &lt;script type="text/javascript"&gt;
            new Ajax.Updater( 'popup1', 'text.php' );
            new Tooltip('book1', 'popup1')
            &lt;/script&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该页面首先使用一个 Ajax 调用更新工具提示的内容，方法是使用 Prototype.js 库中的 <code>Ajax.Updater</code> 类。然后再使用工具提示库所提供的 <code>Tooltip</code> 类将工具提示分配给 <code>book1 &lt;div&gt;</code> 标记。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list2">清单 2</a> 显示了该工具提示内容的代码。</p>
<br />
<a name="list2"><strong>清单 2. text.php</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            An excellent book on code generation and generative programming
            by Jack Herrington.
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>现在，可以在浏览器中打开页面以查看效果。显示的页面如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig1">图 1</a> 所示。 </p>
<br />
<a name="fig1"><strong>图 1. 鼠标未移到文本上 </strong></a><br />
<img height="244" alt="鼠标未移到文本上" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/tooltip1_400_244.jpg" width="400" /> <br />
<p>当我把鼠标移到文本上，页面将弹出一个小窗口，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig2">图 2</a> 所示。 </p>
<br />
<a name="fig2"><strong>图 2. 弹出窗口</strong></a><br />
<img height="248" alt="弹出窗口" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/tooltip2_400_248.jpg" width="400" /> <br />
<table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="sidebardemo1"><strong>工具提示的动态演示</strong></a><br />
                        <p>查看 <a href="http://www.muttmansion.com/lightbox/tooltips/" target="new">工具提示<img height="16" alt="单击链接在新窗口中查看工具提示演示" src="http://www.ibm.com/developerworks/i/popup.gif" width="16" /> </a>的在线动态演示。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>工具提示是一种整洁的页面呈现方式，并能根据用户的需要显示内容。如果某个用户想了解某项内容的更多信息，只需将鼠标移到该内容上便可显示详细信息。这些详细信息可具有不同的复杂度，可以是图像、表格和格式化数据。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N100EF"><span class="atitle">Lightbox</span></a></p>
<p>Lightbox 是一种最前沿的创新方法，可以将用户的注意力集中到页面上的某个特定元素。在下面的示例中，我在页面中添加了一个缩略图，当用户单击它时便会在 &#8220;lightbox&#8221; 中显示出大图。 </p>
<p>要创建这种效果，我将使用极为优秀的 Lightbox JS 2.0 库，它同样构建于 Prototype.js 框架之上。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list3">清单 3</a> 显示了示例代码。 </p>
<br />
<a name="list3"><strong>清单 3. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /&gt;
            &lt;script src="js/prototype.js" type="text/javascript"&gt;&lt;/script&gt;
            &lt;script src="js/scriptaculous.js?load=effects" type="text/javascript"&gt;&lt;/script&gt;
            &lt;script src="js/lightbox.js" type="text/javascript"&gt;&lt;/script&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;a href="images/megan1_400_320.jpg" rel="lightbox"&gt;
            &lt;img src="images/megan1_400_320.jpg" width="100" height="80"
            alt="Megan" border="0" /&gt;&lt;/a&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在浏览器中打开该页面时，只能看到缩略图，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig3">图 3</a> 所示。 </p>
<br />
<a name="fig3"><strong>图 3. 单击缩略图之前的显示效果</strong></a><br />
<img height="311" alt="单击缩略图之前的显示效果" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/lightbox1_400_311.jpg" width="400" /> <br />
<p>当我单击该缩略图时，实际大小的图像将优雅地显示在窗口中央，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig4">图 4</a> 所示。 </p>
<br />
<a name="fig4"><strong>图 4. 显示实际大小图像的 lightbox </strong></a><br />
<img height="316" alt="显示实际大小图像的 lightbox" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/lightbox2_400_316.jpg" width="400" /> <br />
<p>此外，背景中的所有其他内容将变成灰色，这样用户将更容易注意到页面中间显示的内容。 </p>
<table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="sidebardemo2"><strong>lightbox 的动态演示</strong></a><br />
                        <p>查看 <a href="http://www.muttmansion.com/lightbox/lightbox/" target="new">lightbox<img height="16" alt="单击链接在新窗口中查看工具提示演示" src="http://www.ibm.com/developerworks/i/popup.gif" width="16" /> </a>的在线动态演示。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>如果您对 <em>lightbox</em> 这个术语还不太熟悉也没有关系：因为它是摄影行业中的一个相当深奥的词汇。在过去胶片摄影的时代，<em>lightbox</em> 是一个 6 英寸高，长宽皆为几英尺的盒子形状的设备，顶部涂有塑性白漆，盒子中间的小灯可以为整个表面提供照明。因此， 我们可以将幻灯片和底片放在 lightbox 上，然后使用一种小型放大镜来检查图像。您可以认为图 4 中的效果就是在通过 lightbox 上的放大镜查看照片。因此，lightbox 的术语便从此而来。 </p>
<p>但是，是否可以将图像换成文本，并实现同样的效果呢？ </p>
<p><a name="N10158"><span class="smalltitle">文本 lightbox</span></a></p>
<p><em>Particle Tree</em> 这个站点就使用这种与众不同的方法实现了 lightbox。此方法的优点便是可以显示使用 Ajax 从服务器获取的任意 HTML 代码。我将使用这种方法将额外的文本显示给用户。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list4">清单 4</a> 显示了主页代码。</p>
<br />
<a name="list4"><strong>清单 4. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;title&gt;
            Lightbox Text Test
            &lt;/title&gt;
            &lt;link rel="stylesheet" href="css/default.css" media="screen,projection" type="text/css" /&gt;
            &lt;link rel="stylesheet" href="css/lightbox.css" media="screen,projection"
            type="text/css" /&gt;
            &lt;script type="text/javascript" src="scripts/prototype.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="scripts/lightbox.js"&gt;&lt;/script&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;a href="text.php" class="lbOn"&gt;More About This Article&lt;/a&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list5">清单 5</a> 中的 HTML 代码将通过 Ajax 获取并随后显示给用户。 </p>
<br />
<a name="list5"><strong>清单 5. text.php</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;p&gt;This article covers the basics of AJAX Lightbox that
            shows text blocks instead of images&lt;/p&gt;
            &lt;p&gt;&lt;a href="#" class="lbAction" rel="deactivate"&gt;
            Return to article list&lt;/a&gt;&lt;/p&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>以上代码在浏览器中的显示效果如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig5">图 5</a> 所示。</p>
<br />
<a name="fig5"><strong>图 5. 单击文本便可获得更多信息 </strong></a><br />
<img height="319" alt="单击文本便可获得更多信息" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/text_lightbox_1_400_319.jpg" width="400" /> <br />
<p>当我单击文本时，可以看到页面内容将突出显示出来。请参见 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig6">图 6</a>。 </p>
<br />
<a name="fig6"><strong>图 6. 运行中的文本 lightbox</strong></a><br />
<img height="313" alt="运行中的文本 lightbox" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/text_lightbox_2_400_313.jpg" width="400" /> <br />
<table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="sidebardemo3"><strong>文本 lightbox 的动态演示</strong></a><br />
                        <p>查看 <a href="http://www.muttmansion.com/lightbox/text_lightbox/" target="new">文本 lightbox<img height="16" alt="单击链接在新窗口中查看工具提示演示" src="http://www.ibm.com/developerworks/i/popup.gif" width="16" /> </a>的在线动态演示。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>这种方法可以为页面上列出的产品或文章显示额外信息，而不必使用户离开当前页面。相反，您将间接地将用户的注意力转移到这些内容上。与 HTML 代码一样，这些信息可以包括更多的文本内容、图像，或者甚至是表单（比如说注册、评论或登录表单）。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N101C9"><span class="atitle">窗口</span></a></p>
<p>我在上一示例中提到过使用 lightbox 显示表单，但是这并不是用户在使用表单时真正需要的。他们真正需要的是窗口。所幸的是，Prototype 库提供了一个极好的窗口实现，该窗口实现具有各种不同的皮肤可满足您的需要。 </p>
<p>窗口代码还将使用 Ajax 通过 Prototype 获取将在窗口框架中显示的内容。首先，开发托管窗口的基本页面，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list6">清单 6</a> 所示。 </p>
<br />
<a name="list6"><strong>清单 6. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script type="text/javascript" src="javascripts/prototype.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/effects.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/window.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/window_effects.js"&gt;&lt;/script&gt;
            &lt;link href="themes/default.css" rel="stylesheet" type="text/css" &gt;&lt;/link&gt;
            &lt;link href="themes/spread.css" rel="stylesheet" type="text/css" &gt;&lt;/link&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;a href="javascript:void showWindow();"&gt;Show Window&lt;/a&gt;
            &lt;script&gt;
            function showWindow()
            {
            win = new Window( { className: 'spread', url: 'test.html',
            title: 'Simple Window', width:400,
            height:300, destroyOnClose: true, recenterAuto:false } );
            win.showCenter();
            }
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>此处的 JavaScript 代码将响应单击 <strong>Show window</strong> 按钮的操作，结果是创建一个具有指定宽度、高度、标题和内容（内容由特定的 URL 指定）的窗口。然后使用 <code>showCenter()</code> 方法显示窗口，窗口将显示在在浏览器窗口的中部。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list7">清单 7</a> 显示了窗口的内容。</p>
<br />
<a name="list7"><strong>清单 7. test.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;h1&gt;Registration&lt;/h1&gt;
            &lt;p&gt;You need to first register the product before...&lt;/p&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该页面在浏览器的显示效果如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig7">图 7</a> 所示。 </p>
<br />
<a name="fig7"><strong>图 7. 窗口链接</strong></a><br />
<img height="307" alt="窗口链接" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/window1_400_307.jpg" width="400" /> <br />
<p>页面中并没有什么内容，但是单击窗口链接之后却是另一番景色。如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig8">图 8</a> 所示。 </p>
<br />
<a name="fig8"><strong>图 8. 弹出窗口</strong></a><br />
<img height="305" alt="弹出窗口" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/window2_400_305.jpg" width="400" /> <br />
<p>有点华而不实的感觉，但是它确实可以吸引用户的注意力。除了石灰绿之外，您还可以选择一些不同的皮肤。 </p>
<p>但是我真正想要的是弹出表单，不是吗？我特别想在主页上实现一个登录表单，当我单击 <strong>Login</strong> 按钮时便会弹出一个登录表单。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list8">清单 8</a> 显示了主页的代码。 </p>
<br />
<a name="list8"><strong>清单 8. form.php</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script type="text/javascript" src="javascripts/prototype.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/effects.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/window.js"&gt;&lt;/script&gt;
            &lt;script type="text/javascript" src="javascripts/window_effects.js"&gt;&lt;/script&gt;
            &lt;link href="themes/default.css" rel="stylesheet" type="text/css" &gt;&lt;/link&gt;
            &lt;link href="themes/spread.css" rel="stylesheet" type="text/css" &gt;&lt;/link&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;div id="myloginform" style="display:none;overflow:clip;padding:10px;"&gt;
            &lt;form id="loginfrm"&gt;
            &lt;table&gt;
            &lt;tr&gt;&lt;td&gt;Login&lt;/td&gt;&lt;td&gt;&lt;input type="text" name="name" /&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;tr&gt;&lt;td&gt;Password&lt;/td&gt;&lt;td&gt;&lt;input type="password" name="password" /&gt;&lt;/td&gt;&lt;/tr&gt;
            &lt;/table&gt;
            &lt;/form&gt;
            &lt;button onclick="login()"&gt;Login&lt;/button&gt;
            &lt;/div&gt;
            &lt;a href="javascript:void showWindow();"&gt;Login&lt;/a&gt;
            &lt;script&gt;
            var g_loginWindow = null;
            function login()
            {
            new Ajax.Request( 'login.php', {
            parameters: $('loginfrm').serialize(),
            method: 'post',
            onSuccess: function( transport ) {
            g_loginWindow.close();
            }
            } );
            }
            function showWindow()
            {
            g_loginWindow = new Window( { className: 'spread', title: "Login",
            destroyOnClose: true,
            onClose:function() { $('myloginform').style.display = 'none'; } } );
            g_loginWindow.setContent( 'myloginform', true, true );
            g_loginWindow.showCenter();
            }
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这次，窗口的内容将直接存放在页面中。但是，当用户单击表单上的 <strong>Login</strong> 按钮时，页面将使用 <code>Ajax.Request</code> 对象向服务器请求登录表单。<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list9">清单 9</a> 显示了这个简单的登录脚本，实际中的实现将远没有这么简单。 </p>
<br />
<a name="list9"><strong>清单 9. login.php</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;true /&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这时，当我在浏览器中打开该页面时将看到一个登录链接，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig9">图 9</a> 所示。 </p>
<br />
<a name="fig9"><strong>图 9. login 链接</strong></a><br />
<img height="274" alt="login 链接" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/login1_400_274.jpg" width="400" /> <br />
<p>当我单击该链接时，将看到一个非常酷的 Web 2.0 样式的登录窗口，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig10">图 10</a> 所示。 </p>
<br />
<a name="fig10"><strong>图 10. login 窗口</strong></a><br />
<img height="275" alt="login 窗口" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/login2_400_275.jpg" width="400" /> <br />
<table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="sidebardemo4"><strong>窗口的动态演示</strong></a><br />
                        <p>查看 <a href="http://www.muttmansion.com/lightbox/window/" target="new">窗口<img height="16" alt="单击链接在新窗口中查看窗口演示" src="http://www.ibm.com/developerworks/i/popup.gif" width="16" /> </a>的在线动态演示。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>当用户单击 <strong>Login</strong> 按钮时，页面将把用户名和密码发送给服务器。然后，服务器将验证凭证并建立一个会话 cookie，并回复响应，指示页面返回主页。 </p>
<p>实际上，此类功能可以在应用程序中实现弹出窗口，并让用户感觉自己仿佛更像是在使用桌面应用程序，而不是在访问 Web 页面。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N102A0"><span class="atitle">渐变消息</span></a></p>
<p>与用户通信的另一种新方法是<em>渐变消息</em> — 也就是，这种消息将在屏幕的一个重要位置弹出，告诉用户某些重要的事情。在本例中，我将使用 Scriptaculous 效果库（它也构建于 Prototype.js 之上）实现渐变消息。。 </p>
<p>首先，我们从 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list10">清单 10</a> 开始。</p>
<br />
<a name="list10"><strong>清单 10. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;&lt;head&gt;
            &lt;style&gt;
            .alert {
            opacity: 0.0;
            border:2px dashed black;
            padding:5px;
            background:#eee;
            font-family: arial, verdana;
            font-weight: bold; }
            &lt;/style&gt;
            &lt;script src="lib/prototype.js"&gt;&lt;/script&gt;
            &lt;script src="src/effects.js"&gt;&lt;/script&gt;
            &lt;script&gt;
            function submit()
            {
            new Ajax.Updater( 'result', 'alert.html', {
            method: 'get',
            onSuccess: function() {
            new Effect.Opacity('result',
            { duration: 2.0, from: 0.0, to: 1.0 } );
            new Effect.Opacity('result',
            { delay: 10.0, duration: 2.0, from: 1.0, to: 0.0 } );
            } }
            );
            }
            &lt;/script&gt;
            &lt;/head&gt;&lt;body&gt;
            &lt;div id="result" class="alert"&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;
            &lt;button onclick="submit()"&gt;Submit&lt;/button&gt;
            &lt;/body&gt;&lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在理想情况下，该页面有点类似含有 <strong>Submit</strong> 按钮的表单。然后，当用户单击 <strong>Submit</strong> 按钮时，服务器接收到提交的表单数据后将返回一个消息。这个消息将突出显示在某个位置，然后效果将渐渐减弱。在本例中，我省去了表单元素，因此页面中只有一个 <strong>Submit</strong> 按钮。 </p>
<p><strong>Submit</strong> 按钮将 Ajax 请求发送给 alert.html 页面。然后，将该页面的结果存放在 <code>result &lt;div&gt;</code> 标记中，Scriptaculous 效果类可以使该标记显示为渐变效果。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#list11">清单 11</a> 显示了 alert 页面的代码。</p>
<br />
<a name="list11"><strong>清单 11. alert.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            A new record has been added.
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该页面中浏览器中的显示效果如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig11">图 11</a> 所示。</p>
<br />
<a name="fig11"><strong>图 11. 表单的 Submit 按钮</strong></a><br />
<img height="305" alt="表单的 Submit 按钮" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/fader1_400_305.jpg" width="400" /> <br />
<p>还是一样，页面中并没有什么内容。可以考虑在 <strong>Submit</strong> 按钮上面加入一些含有数据的表单字段。 </p>
<p>当我单击 <strong>Submit</strong> 按钮时，页面将突出显示警告提示，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/index.html#fig12">图 12</a> 所示。</p>
<br />
<a name="fig12"><strong>图 12. 渐变效果的消息 </strong></a><br />
<img height="309" alt="渐变效果的消息" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/fader2_400_309.jpg" width="400" /> <br />
<table cellspacing="0" cellpadding="0" width="40%" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="sidebardemo5"><strong>渐变效果的动态演示</strong></a><br />
                        <p>查看 <a href="http://www.muttmansion.com/lightbox/fader/" target="new">渐变<img height="16" alt="单击链接在新窗口中查看渐变效果演示" src="http://www.ibm.com/developerworks/i/popup.gif" width="16" /> </a>的在线动态演示。</p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>几秒钟之后，消息将逐渐消失。</p>
<p>这种与用户交互的方式虽然简单，但是十分有效。只要别过度使用，它可以直接让用户感受到对象的出现和消失。这是人类与生俱来的本能。因此，您会自然地注意到。只要能够合理地使用这些技巧，吸引用户的注意力将不再困难。 </p>
<table cellspacing="0" cellpadding="0" width="150" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="N1033D"><strong>分享这篇文章&#8230;&#8230;</strong></a><br />
                        <p>
                        <table cellspacing="0" cellpadding="0" width="135" border="0">
                            <tbody>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a href="http://digg.com/submit?phase=2&amp;url=http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/"><img height="10" alt="digg" src="http://www.ibm.com/i/v14/icons/10x10-digg-thumb.gif" width="10" border="0" /> </a></td>
                                    <td><a href="http://digg.com/submit?phase=2&amp;url=http://www.ibm.com/developerworks/cn/xml/x-ajaxxml6/">将本文提交到 Digg</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;" href="http://del.icio.us/post"><img height="10" alt="del.icio.us" src="http://del.icio.us/static/img/delicious.small.gif" width="10" border="0" /> </a></td>
                                    <td><a onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;" href="http://del.icio.us/post">发布到 del.icio.us</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)"><img height="16" alt="Slashdot" src="http://www.ibm.com/developerworks/i/slashdot-favicon.gif" width="16" border="0" /> </a></td>
                                    <td><a href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)">提交到 Slashdot！</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                            </tbody>
                        </table>
                        </p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p><a name="N103E4"><span class="atitle">结束语</span></a></p>
<p>希望本文中的工具可以让您通过创新的方式实现交互和提示。随着时间的推移，我确信这些技巧将过度使用，并最终落得与状态栏一样的下场。但是在开始阶段，这些工具将提供一种有趣、有效且符合 Web 2.0 的吸引用户注意的方式。</p>
<img src ="http://www.blogjava.net/yczz/aggbug/162955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-11-25 11:59 <a href="http://www.blogjava.net/yczz/articles/162955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax 和 XML: 将 Ajax 用于多媒体</title><link>http://www.blogjava.net/yczz/articles/162953.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Sun, 25 Nov 2007 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/162953.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/162953.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/162953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/162953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/162953.html</trackback:ping><description><![CDATA[<blockquote>宽带、媒体、电影、图像和声音等技术的出现推动了 Web 2.0 的发展。了解如何把多媒体与 PHP 和 Asynchronous JavaScript&#8482; + XML（Ajax）结合起来创造令人耳目一新的体验。</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>如果问哪一个网站最能代表 Web 应用程序的新潮流，多数人会回答 YouTube。这个网站不仅仅积极接纳新技术营造出梦幻效果，而且改变了我们对多媒体的看法，改变了我们和媒体的关系。许多故事在以传统媒体渠道传播之前就已经出现在 YouTube 上了，当它们不再流传时，YouTube 就会像全世界的一个巨大的 Tivo，记录着曾经发生的点点滴滴。 </p>
<p>媒体分享正在改变世界，而且从技术的观点来说，这并不难做到。本文介绍如何在 Web 视频托管应用程序上增加一个 Ajax 前端。 </p>
<p><a name="N1007D"><span class="atitle">简单的视频选择</span></a></p>
<p>首先来看网站，网站上有一个电影列表可供选择 — 一个不用改变页面就能选择不同电影的网站。页面代码如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list1">清单 1</a> 所示。 </p>
<br />
<a name="list1"><strong>清单 1. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script src="prototype.js"&gt;&lt;/script&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;div id="movieHost"&gt;
            &lt;/div&gt;
            &lt;div id="movieList"&gt;
            &lt;/div&gt;
            &lt;script&gt;
            function setMovie( url )
            {
            $('movieHost').innerHTML = '';
            var elEmbed = document.createElement( 'embed' );
            elEmbed.src = url;
            $('movieHost').appendChild( elEmbed );
            }
            new Ajax.Request( 'movies.xml', {
            method: 'get',
            onSuccess: function( transport ) {
            var movieTags = transport.responseXML.getElementsByTagName( 'movie' );
            $('movieList').innerHTML = '';
            var bFirst = true;
            for( var b = 0; b &lt; movieTags.length; b++ ) {
            var url = movieTags[b].getAttribute('url');
            var title = movieTags[b].getAttribute('title');
            if ( bFirst )
            {
            setMovie( url );
            bFirst = false;
            }
            var html = '&lt;a href="javascript:void setMovie(\''+url+'\');"&gt;';
            html += title+'&lt;/a&gt;&lt;br/&gt;';
            $('movieList').innerHTML += html;
            }
            }
            } );
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>该页面使用 Prototype.js 这个很棒的 JavaScript 库向 movies.xml 数据源发送 Ajax 请求。返回数据后通过 <code>getElementsByTagName()</code> 方法查找所有电影标签。对每个电影标签，代码检索 URL 和标题。如果检索的标签是列表中的第一部电影，脚本立即开始放映这部电影。否则添加一个 anchor 标签作为 <code>movieList &lt;div&gt;</code> 的电影选择器。 </p>
<p>电影选择器 anchor 调用 <code>setMovie()</code> 函数打开指定的电影。播放电影的方法很简单，首先将 <code>movieHost &lt;div&gt;</code> 标签置空，即删除原来的电影。然后将内容设置为 <code>&lt;embed&gt;</code> 标签，其 URL 由电影列表指定。 </p>
<p><code>&lt;embed&gt;</code> 标签是在页面中播放电影最简单的方法，但是存在跨浏览器的问题。另一种办法是同时使用 <code>&lt;object&gt;</code> 和 <code>&lt;embed&gt;</code> 标签（还有一种办法，即使用 Macromedia Flash Player：<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#flashmedia">本文稍后</a> 再讨论）。 </p>
<p>这个简单的例子中，movies.xml 只是一个平面文件，包含一些我自己的家庭短片的引用。该文件如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list2">清单 2</a> 所示。 </p>
<br />
<a name="list2"><strong>清单 2. movies.xml</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;movies&gt;
            &lt;movie url="spider.mov" title="Spider" /&gt;
            &lt;movie url="swing.mov" title="Swing Set" /&gt;
            &lt;movie url="water.mov" title="Water Splash" /&gt;
            &lt;/movies&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>打开该页面时，显示的结果如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#fig1">图 1</a> 所示。</p>
<br />
<a name="fig1"><strong>图 1. 简单的电影列表页面</strong></a><br />
<img height="276" alt="简单的电影列表页面" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index_400_304.jpg" width="377" /> <br />
<p>最上方是一部由 <code>&lt;embed&gt;</code> 标签播放的电影，下面是其他影片列表。点击其中的任何链接，正在播放的电影就变成所选择的电影。 </p>
<p>显然，这个系统不适合大型的视频资料库，还需要对影片列表进行某种搜索。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N100F2"><span class="atitle">可搜索的电影列表</span></a></p>
<p>要添加搜索功能，必须添加一个搜索框，如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list3">清单 3</a> 所示。其中增加了搜索输入字段 <code>q</code>。 </p>
<br />
<a name="list3"><strong>清单 3. 添加搜索功能</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script src="prototype.js"&gt;&lt;/script&gt;
            &lt;/head&gt;
            &lt;body&gt;
            &lt;table&gt;&lt;tr&gt;&lt;td valign="top"&gt;
            &lt;input type="text" id="q" onkeyup="search()"&gt;
            &lt;div id="movieList"&gt;
            &lt;/div&gt;
            &lt;/td&gt;&lt;td valign="top"&gt;
            &lt;div id="movieHost"&gt;
            &lt;/div&gt;
            &lt;/td&gt;
            &lt;/tr&gt;&lt;/table&gt;
            &lt;script&gt;
            function setMovie( url )
            {
            $('movieHost').innerHTML = '';
            var elEmbed = document.createElement( 'embed' );
            elEmbed.src = url;
            $('movieHost').appendChild( elEmbed );
            }
            function search()
            {
            new Ajax.Request( 'search.php?q='+escape($('q').value), {
            method: 'get',
            onSuccess: function( transport ) {
            var movieTags = transport.responseXML.getElementsByTagName( 'movie' );
            $('movieList').innerHTML = '';
            var bFirst = true;
            for( var b = 0; b &lt; movieTags.length; b++ ) {
            var url = movieTags[b].getAttribute('url');
            var title = movieTags[b].getAttribute('title');
            if ( bFirst )
            {
            setMovie( url );
            bFirst = false;
            }
            var html = '&lt;a href="javascript:void setMovie(\''+url+'\');"&gt;';
            html += title+'&lt;/a&gt;&lt;br/&gt;';
            $('movieList').innerHTML += html;
            }
            }
            } );
            }
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>在 key-up 事件中指定 <code>search()</code> 方法将被调用。<code>search()</code> 方法和 <code>Ajax.Request</code> 调用类似，除了向 search.php 页面传递查询字符串。search.php 脚本返回和原来相同的 XML 格式，因此不需要修改 XML 解析的代码。 </p>
<p>我承认对于自己的习惯来说，key-up 上的 <code>search()</code> 函数反映有点太快。理想情况下，系统应该在执行搜索之前等待一秒左右以便输入完整的搜索文本，避免列表不停地闪烁。使用 <code>window.setTimeout()</code> 方法很容易实现这种行为。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list4">清单 4</a> 显示了经过修改的 search.php 脚本。</p>
<br />
<a name="list4"><strong>清单 4. search.php</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;?php
            header( 'content-type: text/xml' );
            $movies = array();
            $movies['spider.mov'] = 'Spider';
            $movies['swing.mov'] = 'Swing Set';
            $movies['water.mov'] = 'Water Splash';
            ?&gt;
            &lt;movies&gt;
            &lt;?php
            foreach( $movies as $k =&gt; $v ) {
            if ( strlen( $_GET['q'] ) &gt; 0 &amp;&amp;
            preg_match( '/'.$_GET['q'].'/i', $v ) ) {
            ?&gt;
            &lt;movie url="&lt;?php echo($k) ?&gt;" title="&lt;?php echo($v) ?&gt;" /&gt;
            &lt;?php
            } }
            ?&gt;
            &lt;/movies&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>脚本一开始建立了一个数组保存全部电影。为了简化起见，这里对电影进行了硬编码。实际应用的时候这些元素很可能取自电影清单的数据库。 </p>
<p>接下来的代码遍历列表，把搜索查询的正则表达式应用于每个电影的标题。如果匹配则输出包含 URL 和名称的 <code>&lt;movie&gt;</code> 标签。 </p>
<p>打开页面并输入 <code>s</code>，将看到 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#fig2">图 2</a> 所示的页面。 </p>
<br />
<a name="fig2"><strong>图 2. 简单的电影查询页面 </strong></a><br />
<img height="275" alt="简单的电影查询页面" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index2_1_400_299.jpg" width="375" /> <br />
<p>如果按下 Delete 建并输入 <code>water</code>，就会看到 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#fig3">图 3</a> 所示的页面。 </p>
<br />
<a name="fig3"><strong>图 3. 搜索与 &#8220;water&#8221; 相关的电影的查询页面 </strong></a><br />
<img height="274" alt="搜索与 &#8220;water&#8221; 相关的电影的查询页面" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index2_2_400_297.jpg" width="373" /> <br />
<p>虽然本文主要讨论如何使用 Dynamic HTML（DHTML）和 Ajax 建立前端应用程序，但视频共享网站决不是这么简单。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N10176"><span class="atitle">视频分享基础</span></a></p>
<p>先暂时离开实践问题讨论一些更具理论性的东西，视频共享中更加复杂的问题。涉及到三个主要问题： </p>
<ul>
    <li>如何存储和传输视频
    <li>如何处理不同的视频格式
    <li>如何从上传文件中获得缩略图和视频信息 </li>
</ul>
<p>视频存储是一个实实在在的问题 — 特别是对于小应用程序而言视频文件非常大，需要大容量的硬盘空间来存储。将其传递给客户还面临着带宽的挑战。可以自己购买设备安装到托管设施中。或者使用 Amazon S3 这样的服务，只需很低的价格就能上传任何资料（数据库备份、图片、电影等等）到 Amazon 数据中心，以及提供给其他客户。和建立数据中心的大量投资相比可以先考虑一下这些服务。 </p>
<p>下一个问题 — 视频格式 — 提出了一个有趣的挑战。存在多种视频格式，没有任何一种播放器能支持所有格式。事实上多数播放器只能处理自己挑选的视频格式。为了方便用户，也许最好以某种格式为标准然后将所有传来的视频都转化成这种格式。有一种非常方便的工具，即命令行应用程序 <em>FFmpeg</em>。它不仅能把一种视频格式转化成另一种，还能拾取画面的快照从而为用户提供视频缩略图。 </p>
<p><a name="flashmedia">选择何种视频格式</a>作为标准可能很麻烦。目前 Flash 视频具有明显的优势，但是 Windows Media&#174;，特别是随着 Microsoft Silverlight（原来的 WPF/Everywhere）的发布，正在赢得越来越多的支持。FFmpeg 几乎能将任何影片格式转化成 Flash 视频格式，这一点很吸引人。而且有一些免费和开源的 Flash 播放器很容易嵌入到网站上。将这些播放器和上述代码结合起来就能建立一个完整的、以 Ajax 为前端的端到端视频分享解决方案。 </p>
<p>但 Web 上不仅仅有视频，图像共享也很重要。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N101A5"><span class="atitle">幻灯片放映</span></a></p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list5">清单 5</a> 显示了一个简单的基于 DHTML 的幻灯片，数据来自 XML 文件。 </p>
<br />
<a name="list5"><strong>清单 5. index.html</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;html&gt;
            &lt;head&gt;
            &lt;script src="prototype.js"&gt;&lt;/script&gt;
            &lt;/head&gt;
            &lt;body bgcolor="black"&gt;
            &lt;div style="text-align:center;"&gt;
            &lt;img id="imgItem" src="" style="display:none;"&gt;&lt;br&gt;
            &lt;div id="imgTitle" style="color:white;font-family:arial;font-size:24pt;"&gt;
            &lt;/div&gt;
            &lt;/div&gt;
            &lt;script&gt;
            var g_images = [];
            var g_slideIndex = 0;
            function showSlide()
            {
            $('imgTitle').hide();
            $('imgItem').hide();
            var height = 600;
            var width = ( height / g_images[ g_slideIndex ].height ) *
            g_images[ g_slideIndex ].width;
            $('imgItem').src = g_images[ g_slideIndex ].src;
            $('imgItem').width = width;
            $('imgItem').height = height;
            $('imgTitle').innerHTML = g_images[ g_slideIndex ].title;
            $('imgTitle').show();
            $('imgItem').show();
            g_slideIndex++;
            if ( g_slideIndex &gt;= g_images.length )
            g_slideIndex = 0;
            }
            new Ajax.Request( 'images.xml', {
            method: 'get',
            onSuccess: function( transport ) {
            var imageTags = transport.responseXML.getElementsByTagName( 'image' );
            for( var b = 0; b &lt; imageTags.length; b++ ) {
            g_images.push( {
            src: imageTags[b].getAttribute('src'),
            title: imageTags[b].getAttribute('title'),
            width: imageTags[b].getAttribute('width'),
            height: imageTags[b].getAttribute('height')
            } );
            }
            showSlide();
            window.setInterval( showSlide, 5000 );
            }
            } );
            &lt;/script&gt;
            &lt;/body&gt;
            &lt;/html&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<table cellspacing="0" cellpadding="0" width="150" align="right" border="0">
    <tbody>
        <tr>
            <td width="10"><img height="1" alt="" src="http://www.ibm.com/i/c.gif" width="10" /></td>
            <td>
            <table cellspacing="0" cellpadding="5" width="100%" border="1">
                <tbody>
                    <tr>
                        <td bgcolor="#eeeeee"><a name="N101C2"><strong>分享这篇文章&#8230;&#8230;</strong></a><br />
                        <p>
                        <table cellspacing="0" cellpadding="0" width="135" border="0">
                            <tbody>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a href="http://digg.com/submit?phase=2&amp;url=http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/"><img height="10" alt="digg" src="http://www.ibm.com/i/v14/icons/10x10-digg-thumb.gif" width="10" border="0" /> </a></td>
                                    <td><a href="http://digg.com/submit?phase=2&amp;url=http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/">提交到 Digg</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;" href="http://del.icio.us/post"><img height="10" alt="del.icio.us" src="http://del.icio.us/static/img/delicious.small.gif" width="10" border="0" /> </a></td>
                                    <td><a onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;" href="http://del.icio.us/post">发布到 del.icio.us</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                                <tr valign="top" align="left">
                                    <td width="21"><a href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)"><img height="16" alt="Slashdot" src="http://www.ibm.com/developerworks/i/slashdot-favicon.gif" width="16" border="0" /> </a></td>
                                    <td><a href="javascript:location.href='http://slashdot.org/bookmark.pl?url='+encodeURIComponent(location.href)+'&amp;title='+encodeURIComponent(document.title)">提交到 Slashdot！</a> </td>
                                </tr>
                                <tr>
                                    <td colspan="2"><img height="5" alt="" src="http://www.ibm.com/i/c.gif" width="1" border="0" /> </td>
                                </tr>
                            </tbody>
                        </table>
                        </p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<p>上述代码需要用到 Prototype.js JavaScript 库。利用 <code>Ajax.Request</code> 对象获得要显示的图片列表。然后解析返回的 XML 代码，获得图片的 URL、宽、高和标题。然后调用 <code>showSlide()</code> 函数得到幻灯片显示效果。设置的计时器每五秒切换到下一张幻灯片。 </p>
<p>幻灯片放映通过包含当前图片的 <code>&lt;image&gt;</code> 标签和标题 <code>&lt;div&gt;</code> 标签实现。所谓放映只不过是隐藏当前的图片和标题，将图片来源和标题文本设置为新幻灯片的内容并显示。如果需要某种淡入淡出效果，建议使用 Scriptaculous 库中的 <code>Effects</code> 类，它是构建在 Prototype.js 上的。 </p>
<p><a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#list6">清单 6</a> 显示了数据图像文件。</p>
<br />
<a name="list6"><strong>清单 6. images.xml</strong></a><br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td class="code-outline">
            <pre class="displaycode">
            &lt;images&gt;
            &lt;image src="images/megan1_875_700.jpg" title="Megan" width="875" height="700" /&gt;
            &lt;image src="images/oso1_875_700.jpg" title="Oso 1" width="875" height="700" /&gt;
            &lt;image src="images/oso2_873_700.jpg" title="Oso 2" width="873" height="700" /&gt;
            &lt;/images&gt;
            </pre>
            </td>
        </tr>
    </tbody>
</table>
<br />
<p>这里虽然使用了硬编码，但使用 PHP 脚本很容易生成 XML 代码。幻灯片放映如 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#fig4">图 4</a> 所示。 </p>
<br />
<a name="fig4"><strong>图 4. 简单的幻灯片放映</strong></a><br />
<img height="320" alt="简单的幻灯片放映" src="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/slideshow_400_333.jpg" width="388" /> <br />
<p><strong>注意：</strong>我以前介绍过一个更加精细的幻灯片放映版本（要获得相关链接，参见<a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#resources">参考资料</a>）。现在这个版本的区别在于使用了 Prototype.js 库，各幻灯片之间的切换更简单。 </p>
<br />
<table cellspacing="0" cellpadding="0" width="100%" border="0">
    <tbody>
        <tr>
            <td><img height="1" alt="" src="http://www.ibm.com/i/v14/rules/blue_rule.gif" width="100%" /><br />
            <img height="6" alt="" src="http://www.ibm.com/i/c.gif" width="8" border="0" /></td>
        </tr>
    </tbody>
</table>
<table class="no-print" cellspacing="0" cellpadding="0" align="right">
    <tbody>
        <tr align="right">
            <td><img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" /><br />
            <table cellspacing="0" cellpadding="0" border="0">
                <tbody>
                    <tr>
                        <td valign="middle"><img height="16" alt="" src="http://www.ibm.com/i/v14/icons/u_bold.gif" width="16" border="0" /><br />
                        </td>
                        <td valign="top" align="right"><a class="fbox" href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#main"><strong>回页首</strong></a></td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
<br />
<br />
<p><a name="N102B3"><span class="atitle">结束语</span></a></p>
<p>像 Flikr 和 YouTube 之类的网站仅仅显示了 Web 上的多媒体应用的巨大潜能的冰山一角。本文介绍了一些非常简便的视频和图片浏览的实现，可用于您自己的项目。如果有效，请参加 developerWorks Ajax 论坛（参见 <a href="http://www.ibm.com/developerworks/cn/xml/x-ajaxxml7/index.html#resources">参考资料</a>）告诉我您取得的成功。 </p>
<img src ="http://www.blogjava.net/yczz/aggbug/162953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-11-25 11:58 <a href="http://www.blogjava.net/yczz/articles/162953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCKEditor使用说明</title><link>http://www.blogjava.net/yczz/articles/158024.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Sun, 04 Nov 2007 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/158024.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/158024.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/158024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/158024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/158024.html</trackback:ping><description><![CDATA[<table width="100%">
    <tbody>
        <tr>
            <td><strong>1. FCKeditor 介绍</strong><br />
            FCKeditor 这个开源的HTML 文本编辑器可以让web 程序拥有如MS Word 这样强大的编辑功<br />
            能.FCKeditor 支持当前流行的浏览器如IE 5.5+, Firefox 1.0+, Mozilla 1.3+与Netscape 7+等。<br />
            <br />
            <p>FCKeditor官司方网址：http://www.fckeditor.net/</p>
            <p>FCKeditor在线DEMO：<a href="http://www.fckeditor.net/demo">http://www.fckeditor.net/demo</a></p>
            <p>FCKeditor下载直址：<a href="http://www.fckeditor.net/download">http://www.fckeditor.net/download</a> (该版本为2.3.2)，最新版已经是2.4了。</p>
            <p><strong EN-US?>2.FCKeditor.java</span></strong><strong font-family: 宋体;?>介绍</span> </strong></p>
            <p><span font-family: 宋体;?>不能直接在JSP项目中使用，需要FCKeditor.java库的支持。</p>
            <p>FCKeditor.java是针对对JAVA中使用FCKeditor由Simone Chiaretta开发的FCKeditor的JAVA实现。</p>
            <p><span font-family: 宋体;?>下载地址：<a href="http://www.fckeditor.net/download">http://www.fckeditor.net/download</a> (最近版本为2.3)</p>
            <p><strong EN-US?>3.</span></strong><strong font-family: 宋体;?>在</span>JAVA</strong><strong font-family: 宋体;?>项目中使用</span>FCKeditor</strong><strong font-family: 宋体;?>在线编辑器</span></strong></p>
            <p><span font-family: 宋体;?>开发环境：JDK5.0 ＋&lt;!--[if !supportLists]--&gt; Eclipse3.2.1 + WTP1.5.2</p>
            <p><span style="font-family: 宋体">（1）新建一个</span>WEB工程：</p>
            <p align="left"><span style="font-size: 10pt; color: black; font-family: 宋体"><strong><br />
            </strong></span></p>
            <p align="left"><span style="font-size: 10pt; color: black; font-family: 宋体"><strong>（2）</strong>解压 </span>FCKeditor_2.3.2.zip包，将其中的 edit 文件夹到项目中的 WebRoot 目录<strong><br />
            </strong></p>
            <p align="left"><span style="font-family: 宋体"><strong>（3）</strong>解压 FCKeditor_2.3.2.zip 包，将其中的 fckconfig.js、fckeditor.js、fckstyles.xml、fcktemplates.xml 文件夹到项目中的 WebRoot 目录<strong><br />
            </strong></span></p>
            <p align="left"><span style="font-family: 宋体"><strong>（4）</strong>解压 FCKeditor.java-2.3.zip 包，将其中的 "web"WEB-INF"lib 下的两个 jar 文件到项目的 WebRoot"WEB-INF"lib 目录<strong><br />
            </strong></span></p>
            <p align="left"><span style="font-family: 宋体"><strong>（5）</strong>解压 FCKeditor.java-2.3.zip 包，将其中的 "src 下的 FCKeditor.tld 文件到项目的 WebContent"WEB-INF 目录<strong><br />
            </strong></span></p>
            <p align="left"><span style="font-family: 宋体"><strong>（6）</strong>删除 WebContent"edit 目录下的 _source 文件夹（以&#8220;_&#8221;开始的文件，在项目中无用）</span></p>
            完成后的目录结构下如：<br />
            <br />
            <p align="left"><span style="font-family: 宋体">说明：图中的input.jsp和display.jsp两个是我写的测试集成FCKeditor的JSP文件。</span></p>
            <ul>
                <li>修改WebContent/WEB-INF/web.xml文件，加入FCKeditor的配置信息，如下： </li>
            </ul>
            <div>xml 代码</div>
            <div>
            <div>&nbsp;</div>
            <ol>
                <li>xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;&nbsp;&nbsp;
                <li>&lt;web-app&nbsp;id="WebApp_ID"&nbsp;version="2.4"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;xmlns="http://java.sun.com/xml/ns/j2ee"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;display-name&gt;FCKeditor&lt;!--&lt;/span--&gt;display-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;Connector&lt;!--&lt;/span--&gt;servlet-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.fredck.FCKeditor.connector.ConnectorServlet&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet-class&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;baseDir&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;此为文件浏览路径&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;/UserFiles/&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;debug&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;true&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;load-on-startup&gt;1&lt;!--&lt;/span--&gt;load-on-startup&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;SimpleUploader&lt;!--&lt;/span--&gt;servlet-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-class&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com.fredck.FCKeditor.uploader.SimpleUploaderServlet&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet-class&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;baseDir&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;此为文件上传路径，需要在WebRoot&nbsp;目录下新建&nbsp;UserFiles&nbsp;文件夹&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;根据文件的类型还需要新建相关的文件夹&nbsp;Image、Flash&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;/UserFiles/&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;debug&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;true&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;此参数为是否开启上传功能&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;enabled&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;false&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;AllowedExtensionsFile&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;此参数为文件过滤，以下的文件类型都不可以上传&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;DeniedExtensionsFile&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;php|php3|php5|phtml|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|dll|reg|cgi&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;AllowedExtensionsImage&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;jpg|gif|jpeg|png|bmp&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;DeniedExtensionsImage&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;AllowedExtensionsFlash&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;swf|fla&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;DeniedExtensionsFlash&lt;!--&lt;/span--&gt;param-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;&lt;!--&lt;/span--&gt;param-value&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;init-param&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;load-on-startup&gt;1&lt;!--&lt;/span--&gt;load-on-startup&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;Connector&lt;!--&lt;/span--&gt;servlet-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/editor/filemanager/browser/default/connectors/jsp/connector&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;url-pattern&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet-mapping&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;SimpleUploader&lt;!--&lt;/span--&gt;servlet-name&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/editor/filemanager/upload/simpleuploader&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;url-pattern&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&lt;/span--&gt;servlet-mapping&gt;&nbsp;&nbsp;
                <li>&lt;!--&lt;/span--&gt;web-app&gt;&nbsp;&nbsp; </li>
            </ol>
            </div>
            <p align="left"><span style="font-family: 宋体">注：web.xml中已经加入了一些常用配置的说明。</span></p>
            <ul>
                <li>新建input.jsp文件，内容如下：(注意内容中的<span roman="" new="" times="">&#8221;</span><span new="" courier="" color=""> testfck</span><span roman="" new="" times="">&#8221;</span>这个id) </li>
            </ul>
            <img alt="" src="http://www.javaeye.com/topics/download/ef8c5192-8aa1-41a1-a1a4-6b3a68cbe1b1" /><br />
            <br />
            （上面不能直接帖HTML的代码，所以只能帖一个图片上来，要是有知道如何帖HTML代码的朋友，请告诉我一下，谢谢）<br />
            <span style="font-size: 10pt" new="" courier="" color="" teal="">
            <p><span style="font-family: 宋体">说明：在</span>JSP中集成FCKeditor&lt;!--[endif]--&gt;JavaScript集成：</p>
            <p><span style="font-family: 宋体">如上面内容所示，通过新建一个</span><span new="" courier="" color="" black="">FCKeditor</span>对象，然后调用该对象的设置方法来设置<span new="" courier="" color="" black="">FCKeditor</span>的各个属性，最后调用<span new="" courier="" color="" black="">FCKeditor</span>的<span new="" courier="" color="" black="">ReplaceTextarea()</span>替换<span new="" courier="" color="" black="">HTML</span>页面中的<span new="" courier="" color="" teal="">&lt;</span><span new="" courier="" color="">textarea&gt;</span>标签。另外<span new="" courier="" color="" black="">FCKeditor</span>也可以调用它的<span new="" courier="" color="" black="">create()</span>方法来直接在<span new="" courier="" color="" black="">JSP</span>嵌入<span new="" courier="" color="" black="">FCKeditor</span>编辑器。</p>
            <p align="left"><span style="font-size: 10pt; color: black; font-family: 宋体">注：注意上面的</span><span new="" courier="" color="" black="">oFCKeditor.BasePath = </span><span new="" courier="" color="">""</span><span new="" courier="" color="" black="">;</span>用这种方式<span new="" courier="" color="" black="">FCKeditor</span>会去查找它的<span new="" courier="" color="" black="">editor</span>目录下的<span new="" courier="" color="" black="">fckeditor.html</span>文件，由于我是直接将<span new="" courier="" color="" black="">editor</span>文件夹拷贝到<span new="" courier="" color="" black="">WebContent</span>目录下，所以将它的<span new="" courier="" color="" black="">BasePath</span>设置为<span new="" courier="" color="" black="">&#8221;&#8221;</span>，如果您将<span new="" courier="" color="" black="">editor</span>拷贝到其它目录，请设置相应的<span new="" courier="" color="" black="">BasePath</span>属性。<span new="" courier="" color="" black="">FCKeditor</span>默认是将其放在<span new="" courier="" color="" black="">fckeditor</span>目录</p>
            <p align="left">（2）&lt;!--[endif]--&gt;使用<span font-family: 宋体;? new="" courier="">自定义标签</span><span font-family: 宋体;? new="" courier="">该方法一定要完成第</span><span font-family: 宋体;? new="" courier="">步：</span>解压 FCKeditor.java-2.3.zip 包，将其中的 "src 下的 FCKeditor.tld 文件到项目的 WebContent"WEB-INF 目录</p>
            <p><span style="font-size: 10pt; color: black; font-family: 宋体">首先在</span><span new="" courier="" color="" black="">JSP</span>中加入<span new="" courier="" color="" black="">FCKeditor</span>标签：</p>
            <p none 204, 153) repeat scroll 0% 50%; margin-left: 60pt; -moz-background-clip: -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;?>&lt;%@ taglib uri=&#8221;/WEB-INF/FCKeditor.tld&#8221; prefix=&#8221;fck&#8221; %&gt;</p>
            <span roman="" new="" times="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span ?>JSP</span>页面中加入如下代码，集成<span roman="" new="" times="">FCKeditor</span><span>编辑器：<br />
            <div>js 代码</div>
            <div>
            <ol>
                <li>
                <li>&nbsp;&nbsp;&nbsp;&nbsp;id="testfck"&nbsp;&lt;!--—注意这里&nbsp;--&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;basePath="/FCKeditor/"&nbsp;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;height="60%"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;skinPath="/FCKeditor/editor/skins/default/"&nbsp;&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;toolbarSet="Default"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;imageBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&amp;Connector=connectors/jsp/connector"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;linkBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;flashBrowserURL="/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Flash&amp;Connector=connectors/jsp/connector"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;imageUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Image"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;linkUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=File"&nbsp;&nbsp;
                <li>&nbsp;&nbsp;&nbsp;&nbsp;flashUploadURL="/FCKeditor/editor/filemanager/upload/simpleuploader?Type=Flash"&gt;&nbsp;&nbsp;
                <li>&nbsp;&nbsp; </li>
            </ol>
            </div>
            </span>
            <p><span new="" courier="">(10) </span>新建<span font-family: 宋体;? new="" courier="">文件，这个文件比较简单，只是简单的显示从</span><span font-family: 宋体;? new="" courier="">在线编辑器传递过来的内容，如下：</span></p>
            <p none 204, 153) repeat scroll 0% 50%; -moz-background-clip: -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;?><span new="" courier="" color="">&lt;%=</span><span new="" courier="" color="" black="">request.getParameter(</span><span new="" courier="" color="">"testfck"</span><span new="" courier="" color="" black="">)</span><span new="" courier="" color="">%&gt;</span></p>
            注意这里的<span new="" courier="" color="" black="">getParameter(&#8220;testfck&#8221;)</span>，这个<span new="" courier="" color="" black="">&#8221;testfck&#8221;</span>就是在<span new="" courier="" color="" black="">input.jsp</span>中设置的<span new="" courier="" color="" black="">id</span>。<br />
            <p><strong>４．FCKeditor</strong><strong font-family: 宋体;?>类说明</span></strong></p>
            <p align="left"><span style="font-family: 宋体">下面是用来在页面中建立编辑器的FCKEDITOR 类的说明</span></p>
            <p align="left"><strong>(1) </strong><strong font-family: 宋体;?>构造器:</span></strong></p>
            <p align="left"><span style="font-family: 宋体">FCKeditor(instanceName[,width,height,toolbarSet,value])</span></p>
            </span><br />
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">instanceName:</span>编辑器的唯一名称(相当于ID)</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">WIDTH:</span>宽度</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">HEIGHT:</span>高度</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">toolbarSet:</span>工具条集合的名称</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">value:</span>编辑器初始化内容</p>
                </span></li>
            </ul>
            <br />
            <span style="font-size: 10pt" new="" courier="" color="" teal="">
            <p align="left"><strong>(2) </strong><strong font-family: 宋体;?>属性:</span></strong></p>
            </span>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">instanceName:</span>编辑器实例名</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">width:</span>宽度,默认值为100%</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">height:</span>高度,默认值是200</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">ToolbarSet:</span>工具集名称,参考FCKCONFIG.JS,默认值是Default</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">value:</span>初始化编辑器的HTML 代码,默认值为空</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">BasePath:</span>编辑器的基路径,默认为/Fckeditor/文件夹,注意,尽量不要使用相对路径.最用相对于站点根路径的表示方法,要以/结尾</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">CheckBrowser:</span>是否在显示编辑器前检查浏览器兼容性,默认为true</p>
                </span></li>
            </ul>
            <ul>
                <li><span style="font-size: 10pt" new="" courier="" color="" teal="">
                <p align="left"><span style="font-family: 宋体">DisplayErrors:</span>是否显示提示错误,默为true</p>
                </span></li>
            </ul>
            <span style="font-size: 10pt" new="" courier="" color="" teal="">
            <p align="left"><strong>(3) </strong><strong font-family: 宋体;?>集合:</span></strong></p>
            <p align="left"><span style="font-family: 宋体">Config[Key]=value</span></p>
            <p align="left"><span style="font-family: 宋体">这个集合用于更改配置中某一项的值,如</span></p>
            <p align="left"><span style="font-family: 宋体">oFckeditor.Config["DefaultLanguage"]="ptbr"</span></p>
            <p align="left"><strong>(4) </strong><strong font-family: 宋体;?>方法:</span></strong></p>
            <p align="left"><span style="font-family: 宋体">Create()</span></p>
            <p align="left"><span style="font-family: 宋体">建立并输出编辑器</span></p>
            <p align="left"><span style="font-family: 宋体">RepaceTextArea(TextAreaName)</span></p>
            <p align="left"><span style="font-family: 宋体">用编辑器来替换对应的文本框</span></p>
            <p align="left"><strong>5.</strong><strong font-family: 宋体;?>如何配置FCKEDITOR</span></strong></p>
            <p align="left"><span style="font-family: 宋体">FCKEDITOR </span>提供了一套用于定制其外观,特性及行为的设置集.主配置文件名为Fckconfig.js你既可以编辑主配置文件,也可以自己定义单独的配置文件.配置文件使用JAVASCRIPT 语法.修改后,在建立编辑器时,可以使用以下语法:</p>
            <p align="left"><span style="font-family: 宋体">varoFCKeditor=newFCKeditor('FCKeditor1')</span></p>
            <p align="left"><span style="font-family: 宋体">oFCKeditor.Config['CustomConfigurationsPath']='/myconfig.js'</span></p>
            <p align="left"><span style="font-family: 宋体">oFCKeditor.Create()</span></p>
            <p align="left"><span style="font-family: 宋体">提醒:当你修改配置后,请清空浏览器缓存以查看效果</span></p>
            </span>
            <p align="left"><strong>配置选项:</strong></p>
            <p align="left"><span style="font-family: 宋体">AutoDetectLanguage=true/false </span>自动检测语言</p>
            <p align="left"><span style="font-family: 宋体">BaseHref=""</span>相对链接的基地址</p>
            <p align="left"><span style="font-family: 宋体">ContentLangDirection="ltr/rtl"</span>默认文字方向</p>
            <p align="left"><span style="font-family: 宋体">ContextMenu=</span>字符串数组,右键菜单的内容</p>
            <p align="left"><span style="font-family: 宋体">CustomConfigurationsPath=""</span>自定义配置文件路径和名称</p>
            <p align="left"><span style="font-family: 宋体">Debug=true/false </span>是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容</p>
            <p align="left"><span style="font-family: 宋体">DefaultLanguage=""</span>缺省语言</p>
            <p align="left"><span style="font-family: 宋体">EditorAreaCss=""</span>编辑区的样式表文件</p>
            <p align="left"><span style="font-family: 宋体">EnableSourceXHTML=true/false </span>为TRUE 时,当由可视化界面切换到代码页时,把HTML 处理成XHTML</p>
            <p align="left"><span style="font-family: 宋体">EnableXHTML=true/false </span>是否允许使用XHTML 取代HTML</p>
            <p align="left"><span style="font-family: 宋体">FillEmptyBlocks=true/false </span>使用这个功能,可以将空的块级元素用空格来替代</p>
            <p align="left"><span style="font-family: 宋体">FontColors=""</span>设置显示颜色拾取器时文字颜色列表</p>
            <p align="left"><span style="font-family: 宋体">FontFormats=""</span>设置显示在文字格式列表中的命名</p>
            <p align="left"><span style="font-family: 宋体">FontNames=""</span>字体列表中的字体名</p>
            <p align="left"><span style="font-family: 宋体">FontSizes=""</span>字体大小中的字号列表</p>
            <p align="left"><span style="font-family: 宋体">ForcePasteAsPlainText=true/false </span>强制粘贴为纯文本</p>
            <p align="left"><span style="font-family: 宋体">ForceSimpleAmpersand=true/false </span></p>
            </td>
        </tr>
    </tbody>
</table>
<div style="padding-right: 10px; border-top: gray 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 15px 0px 0px 10px; padding-top: 10px">
<table cellspacing="0" cellpadding="2" width="95%" align="center" border="1">
    <tbody>
        <tr>
            <td style="background: #d1d7dc" align="center" width="100%" colspan="2"><strong>FCKEditor.bmp</strong></td>
        </tr>
        <tr>
            <td width="15%">&nbsp;描述:</td>
            <td width="75%">&nbsp; </td>
        </tr>
        <tr>
            <td width="15%">&nbsp;文件大小:</td>
            <td width="75%">&nbsp;90 KB</td>
        </tr>
        <tr>
            <td width="15%">&nbsp;看过的:</td>
            <td width="75%">&nbsp;文件被下载或查看 2242 次</td>
        </tr>
        <tr>
            <td align="center" colspan="2"><br />
            <a href="http://www.javaeye.com/topics/download/9a565ef4-8900-4cb1-98f7-c69fa273c853" target="_blank"><img alt="FCKEditor.bmp" src="http://www.javaeye.com/upload/attachment/pic/4141/47e2430a-b0f6-4fc9-8b01-d6a5d7f3eec7-thumb.bmp" border="0" /></a> <br />
            <a href="javascript:login_show();"><strong>下载</strong></a> <br />
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="padding-right: 10px; border-top: gray 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 15px 0px 0px 10px; padding-top: 10px">
<table cellspacing="0" cellpadding="2" width="95%" align="center" border="1">
    <tbody>
        <tr>
            <td style="background: #d1d7dc" align="center" width="100%" colspan="2"><strong>SRC.bmp</strong></td>
        </tr>
        <tr>
            <td width="15%">&nbsp;描述:</td>
            <td width="75%">&nbsp; </td>
        </tr>
        <tr>
            <td width="15%">&nbsp;文件大小:</td>
            <td width="75%">&nbsp;286 KB</td>
        </tr>
        <tr>
            <td width="15%">&nbsp;看过的:</td>
            <td width="75%">&nbsp;文件被下载或查看 2163 次</td>
        </tr>
        <tr>
            <td align="center" colspan="2"><br />
            <a href="http://www.javaeye.com/topics/download/03eb8907-d2c5-434f-908b-7ae6a757f5f5" target="_blank"><img alt="SRC.bmp" src="http://www.javaeye.com/upload/attachment/pic/4142/37a7c9a4-b38c-4348-a46c-ddeab11194f5-thumb.bmp" border="0" /></a> <br />
            <a href="javascript:login_show();"><strong>下载</strong></a> <br />
            </td>
        </tr>
    </tbody>
</table>
</div>
<div style="padding-right: 10px; border-top: gray 1px solid; padding-left: 10px; padding-bottom: 10px; margin: 15px 0px 0px 10px; padding-top: 10px">
<table cellspacing="0" cellpadding="2" width="95%" align="center" border="1">
    <tbody>
        <tr>
            <td style="background: #d1d7dc" align="center" width="100%" colspan="2"><strong>NewApp.bmp</strong></td>
        </tr>
        <tr>
            <td width="15%">&nbsp;描述:</td>
            <td width="75%">&nbsp; </td>
        </tr>
        <tr>
            <td width="15%">&nbsp;文件大小:</td>
            <td width="75%">&nbsp;759 KB</td>
        </tr>
        <tr>
            <td width="15%">&nbsp;看过的:</td>
            <td width="75%">&nbsp;文件被下载或查看 2147 次</td>
        </tr>
        <tr>
            <td align="center" colspan="2"><br />
            <a href="http://www.javaeye.com/topics/download/3868504c-edbf-4449-bc21-847a62efa670" target="_blank"><img alt="NewApp.bmp" src="http://www.javaeye.com/upload/attachment/pic/4143/3c12bf8f-ec0d-4b32-9a32-d08feba68b6f-thumb.bmp" border="0" /></a> <br />
            <a href="javascript:login_show();"><strong>下载</strong></a> <br />
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.blogjava.net/yczz/aggbug/158024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-11-04 10:41 <a href="http://www.blogjava.net/yczz/articles/158024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript对下拉列表框(select)的操作</title><link>http://www.blogjava.net/yczz/articles/155489.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Wed, 24 Oct 2007 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/155489.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/155489.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/155489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/155489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/155489.html</trackback:ping><description><![CDATA[这篇文章，主要是关于javascript和select相关的最基本方法，以供不熟悉javascript的人参考。常见的情况是，提出表单结构的人， 不仅仅需要为程序设计逻辑，创建数据结构，还需要设计表单的样式，以及熟悉javascript；某些公司可能会要求您精通photoshop：最初的时 候，我们都是全才。 <br />
<br />
下面是我们例子的基础；这不是一个标准的表单。 <br />
<br />
下面是我们例子的基础；这不是一个标准的表单。 <br />
<br />
<font color="#999999">&lt;form id="f"&gt; <br />
&lt;select size="1" name="s"&gt; <br />
&lt;option value="aspxuexi.com"&gt;asp学习网&lt;/option&gt; <br />
&lt;option value="baidu.com"&gt;百度&lt;/option&gt; <br />
&lt;/select&gt; <br />
&lt;/form&gt; <br />
</font><br />
--------------------------------------------------------------------------- <br />
<br />
&lt;script type="text/javascript"&gt; <br />
&lt;!-- <br />
var f = document.getElementById("f"); <br />
<br />
//获得select列表项数目 <br />
document.write(f.s.options.length); <br />
document.write(f.s.length); <br />
<br />
//当前选中项的下标(从0 开始)（有两种方法） <br />
//如果选择了多项，则返回第一个选中项的下标 <br />
document.write(f.s.options.selectedIndex); <br />
document.write(f.s.selectedIndex); <br />
<br />
//检测某一项是否被选中 <br />
document.write(f.s.options[0].selected); <br />
<br />
//获得某一项的值和文字 <br />
document.write(f.s.options[0].value); <br />
document.write(f.s.options[1].text); <br />
<br />
//删除某一项 <br />
f.s.options[1] = null; <br />
<br />
//追加一项 <br />
f.s.options[f.s.options.length] = new Option("追加的text", "追加的value"); <br />
<br />
//更改一项 <br />
f.s.options[1] = new Option("更改的text", "更改的value"); <br />
//也可以直接设置该项的 text 和 value <br />
//--&gt; <br />
&lt;/script&gt; <br />
<br />
<br />
//全选列表中的项 <br />
function SelectAllOption(list) <br />
{ <br />
for (var i=0; i&lt;list.options.length; i++) <br />
{ <br />
list.options[i].selected = true; <br />
} <br />
} <br />
<br />
<br />
//反选列表中的项 by aspxuexi.com asp学习网 <br />
function DeSelectOptions(list) <br />
{ <br />
for (var i=0; i&lt;list.options.length; i++) <br />
{ <br />
list.options[i].selected = !list.options[i].selected; <br />
} <br />
} <br />
<br />
<br />
//返回列表中选择项数目 <br />
function GetSelectedOptionsCnt(list) <br />
{ <br />
var cnt = 0; <br />
var i = 0; <br />
for (i=0; i&lt;list.options.length; i++) <br />
{ <br />
if (list.options[i].selected) <br />
{ <br />
cnt++; <br />
} <br />
} <br />
<br />
return cnt; <br />
} <br />
<br />
<br />
//清空列表 <br />
function ClearList(list) <br />
{ <br />
while (list.options.length &gt; 0) <br />
{ <br />
list.options[0] = null; <br />
} <br />
} <br />
<br />
<br />
//删除列表选中项 <br />
//返回删除项的数量 <br />
function DelSelectedOptions(list) <br />
{ <br />
var i = 0; <br />
var deletedCnt = 0; <br />
while (i &lt; list.options.length) <br />
{ <br />
if (list.options[i].selected) <br />
{ <br />
list.options[i] = null; <br />
deletedCnt++; <br />
} <br />
else <br />
{ <br />
i++; <br />
} <br />
} <br />
<br />
return deletedCnt; <br />
} <br />
//此函数查找相应的项是否存在 <br />
//repeatCheck是否进行重复性检查 <br />
//若为"v"，按值进行重复值检查 <br />
//若为"t"，按文字进行重复值检查 <br />
//若为"vt"，按值和文字进行重复值检查 <br />
//其它值，不进行重复性检查，返回false <br />
function OptionExists(list, optText, optValue, repeatCheck) <br />
{ <br />
var i = 0; <br />
var find = false; <br />
<br />
if (repeatCheck == "v") <br />
{ <br />
//按值进行重复值检查 <br />
for (i=0; i&lt;list.options.length; i++) <br />
{ <br />
if (list.options[i].value == optValue) <br />
{ <br />
find = true; <br />
break; <br />
} <br />
} <br />
} <br />
else if (repeatCheck == "t") <br />
{ <br />
//按文字进行重复检查 <br />
for (i=0; i&lt;list.options.length; i++) <br />
{ <br />
if (list.options[i].text == optText) <br />
{ <br />
find = true; <br />
break; <br />
} <br />
} <br />
} <br />
else if (repeatCheck == "vt") <br />
{ <br />
//按值和文字进行重复检查 <br />
for (i=0; i&lt;list.options.length; i++) <br />
{ <br />
if ((list.options[i].value == optValue) &amp;&amp; (list.options[i].text == optText)) <br />
{ <br />
find = true; <br />
break; <br />
} <br />
} <br />
} <br />
<br />
return find; <br />
} <br />
<br />
<br />
//向列表中追加一个项 <br />
//list 是要追加的列表 <br />
//optText 和 optValue 分别表示项的文字和值 <br />
//repeatCheck 是否进行重复性检查，参见 OptionExists <br />
//添加成功返回 true，失败返回 false <br />
function AppendOption(list, optText, optValue, repeatCheck) <br />
{ <br />
if (!OptionExists(list, optText, optValue, repeatCheck)) <br />
{ <br />
list.options[list.options.length] = new Option(optText, optValue); <br />
return true; <br />
} <br />
else <br />
{ <br />
return false; <br />
} <br />
} <br />
<br />
<br />
//插入项 <br />
//index 插入位置，当插入位置 &gt;= 列表现有项数量时，其作用相当于不进行重复检查的追加项 <br />
//optText 和 optValue 分别表示项的文字和值 <br />
function InsertOption(list, index, optText, optValue) <br />
{ <br />
var i = 0; <br />
for (i=list.options.length; i&gt;index; i--) <br />
{ <br />
list.options[i] = new Option(list.options[i-1].text, list.options[i-1].value); <br />
} <br />
<br />
list.options[index] = new Option(optText, optValue); <br />
} <br />
//将一个列表中的项导到另一个列表中 <br />
//repeatCheck是否进行重复性检查，参见OptionExists <br />
//deleteSource项导到目标后，是否删除源列表中的项 <br />
//返回影响的项数量 <br />
function ListToList(sList, dList, repeatCheck, deleteSource) <br />
{ <br />
//所影响的行数 <br />
var lines = 0; <br />
var i = 0; <br />
while (i&lt;sList.options.length) <br />
{ <br />
if (sList.options[i].selected &amp;&amp; AppendOption(dList, sList.options[i].text, sList.options[i].value, repeatCheck)) <br />
{ <br />
//添加成功 <br />
lines++; <br />
if (deleteSource) <br />
{ <br />
//删除源列表中的项 <br />
sList.options[i] = null; <br />
} <br />
else <br />
{ <br />
i++; <br />
} <br />
} <br />
else <br />
{ <br />
i++; <br />
} <br />
} <br />
<br />
return lines; <br />
} <br />
<br />
<br />
//列表中选中项上移 <br />
function MoveSelectedOptionsUp(list) <br />
{ <br />
var i = 0; <br />
var value = ""; <br />
var text = ""; <br />
for (i=0; i&lt;(list.options.length-1); i++) <br />
{ <br />
if (!list.options[i].selected &amp;&amp; list.options[i+1].selected) <br />
{ <br />
value = list.options[i].value; <br />
text = list.options[i].text; <br />
list.options[i] = new Option(list.options[i+1].text, list.options[i+1].value); <br />
list.options[i].selected = true; <br />
list.options[i+1] = new Option(text, value); <br />
} <br />
} <br />
} <br />
<br />
<br />
//列表中选中项下移 <br />
function MoveSelectedOptionsDown(list) <br />
{ <br />
var i = 0; <br />
var value = ""; <br />
var text = ""; <br />
for (i=list.options.length-1; i&gt;0; i--) <br />
{ <br />
<br />
//www.aspxuexi.com <br />
if (!list.options[i].selected &amp;&amp; list.options[i-1].selected) <br />
{ <br />
value = list.options[i].value; <br />
text = list.options[i].text; <br />
list.options[i] = new Option(list.options[i-1].text, list.options[i-1].value); <br />
list.options[i].selected = true; <br />
list.options[i-1] = new Option(text, value); <br />
} <br />
} <br />
}&nbsp;<br />
<br />
&nbsp;
<img src ="http://www.blogjava.net/yczz/aggbug/155489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-10-24 10:37 <a href="http://www.blogjava.net/yczz/articles/155489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML中事件触发列表与解说</title><link>http://www.blogjava.net/yczz/articles/144817.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 13 Sep 2007 04:58:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/144817.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/144817.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/144817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/144817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/144817.html</trackback:ping><description><![CDATA[<div class="cnt"><font style="font-size: 14px">
<table cellspacing="0" cellpadding="3" width="100%" border="1">
    <tbody>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>一般事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onClick</font></strong></th>
            <td valign="top" noWrap>HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser: <strong><font color="#cc0000">IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>鼠标点击事件，多用在某个对象控制的范围内的鼠标点击</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDblClick</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>鼠标双击事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMouseDown</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>鼠标上的按钮被按下了</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMouseUp</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>鼠标按下后，松开时激发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMouseOver</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当鼠标移动到某对象范围的上方时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMouseMove</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>鼠标移动时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMouseOut</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N3 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当鼠标离开某对象范围时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onKeyPress</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>当键盘上的某个键被按下并且释放时触发的事件.[注意:页面内必须有被聚焦的对象]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onKeyDown</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>当键盘上某个按键被按下时触发的事件[注意:页面内必须有被聚焦的对象]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onKeyUp</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>当键盘上某个按键被按放开时触发的事件[注意:页面内必须有被聚焦的对象]</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>页面相关事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onAbort</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N3 </font></strong>| O </td>
            <td>图片在下载时被用户中断</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforeUnload</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当前页面的内容将要被改变时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onError</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N3 </font></strong>| O </td>
            <td>捕抓当前页面因为某种原因而出现的错误，如脚本错误与外部数据引用的错误</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onLoad</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>页面内空完成传送到浏览器时触发的事件，包括外部文件引入完成</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onMove</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser: IE |<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>浏览器的窗口被移动时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onResize</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>当浏览器的窗口大小被改变时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onScroll</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>浏览器的滚动条位置发生变化时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onStop</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>浏览器的停止按钮被按下时触发的事件或者正在下载的文件被中断</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onUnload</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当前页面将被改变时触发的事件</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>表单相关事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBlur</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当前元素失去焦点时触发的事件 [鼠标与键盘的触发均可]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onChange</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当前元素失去焦点并且元素的内容发生改变而触发的事件 [鼠标与键盘的触发均可]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onFocus</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当某个元素获得焦点时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onReset</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>|<strong><font color="#cc0000"> N3 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>当表单中RESET的属性被激发时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onSubmit</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE3 </font></strong>|<strong><font color="#cc0000"> N2 </font></strong>|<strong><font color="#cc0000"> O3 </font></strong></td>
            <td>一个表单被递交时触发的事件</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>滚动字幕事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBounce</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>在Marquee内的内容移动至Marquee显示范围之外时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onFinish</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当Marquee元素完成需要显示的内容后触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onStart</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当Marquee元素开始显示内容时触发的事件</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>编辑事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforeCopy</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当页面当前的被选择内容将要复制到浏览者系统的剪贴板前触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforeCut</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当页面中的一部分或者全部的内容将被移离当前页面[剪贴]并移动到浏览者的系统剪贴板时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforeEditFocus</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当前元素将要进入编辑状态</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforePaste</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>内容将要从浏览者的系统剪贴板传送[粘贴]到页面中时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforeUpdate</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当浏览者粘贴系统剪贴板中的内容时通知目标对象</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onContextMenu</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当浏览者按下鼠标右键出现菜单时或者通过键盘的按键触发页面菜单时触发的事件 [试试在页面中的&lt;body&gt;中加入onContentMenu="return false"就可禁止使用鼠标右键了]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onCopy</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当页面当前的被选择内容被复制后触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onCut</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当页面当前的被选择内容被剪切时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDrag</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当某个对象被拖动时触发的事件 [活动事件]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragDrop</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser: IE |<strong><font color="#cc0000"> N4 </font></strong>| O </td>
            <td>一个外部对象被鼠标拖进当前窗口或者帧</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragEnd</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当鼠标拖动结束时触发的事件，即鼠标的按钮被释放了</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragEnter</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当对象被鼠标拖动的对象进入其容器范围内时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragLeave</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当对象被鼠标拖动的对象离开其容器范围内时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragOver</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当某被拖动的对象在另一对象容器范围内拖动时触发的事件 [活动事件]</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDragStart</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当某对象将被拖动时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDrop</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>在一个拖动过程中，释放鼠标键时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onLoseCapture</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当元素失去鼠标移动所形成的选择焦点时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onPaste</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O </td>
            <td>当内容被粘贴时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onSelect</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 |<strong><font color="#cc0000"> 4 </font></strong><br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当文本内容被选择时的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onSelectStart</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O </td>
            <td>当文本内容选择将开始发生时触发的事件</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>数据绑定</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onAfterUpdate</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当数据完成由数据源到对象的传送时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onCellChange</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当数据来源发生变化时</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDataAvailable</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当数据接收完成时触发事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDatasetChanged</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>数据在数据源发生变化时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onDatasetComplete</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当来子数据源的全部有效数据读取完毕时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onErrorUpdate</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当使用onBeforeUpdate事件触发取消了数据传送时，代替onAfterUpdate事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onRowEnter</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当前数据源的数据发生变化并且有新的有效数据时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onRowExit</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当前数据源的数据将要发生变化时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onRowsDelete</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当前数据记录将被删除时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onRowsInserted</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当前数据源将要插入新数据记录时触发的事件</td>
        </tr>
        <tr>
            <th align="left" colspan="3"><font color="#990000"><strong>外部事件</strong></font></th>
        </tr>
        <tr>
            <th><strong><font size="2">事件</font></strong></th>
            <th><strong><font size="2">浏览器支持</font></strong></th>
            <th><strong><font size="2">描述</font></strong></th>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onAfterPrint</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当文档被打印后触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onBeforePrint</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当文档即将打印时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onFilterChange</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当某个对象的滤镜效果发生变化时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onHelp</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当浏览者按下F1或者浏览器的帮助选择时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onPropertyChange</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE5 </font></strong>| N | O</td>
            <td>当对象的属性之一发生变化时触发的事件</td>
        </tr>
        <tr>
            <th valign="top" align="left"><strong><font size="2">onReadyStateChange</font></strong></th>
            <td valign="top">HTML: 2 | 3 | 3.2 | 4 <br />
            Browser:<strong><font color="#cc0000"> IE4 </font></strong>| N | O</td>
            <td>当对象的初始化属性值发生变化时触发的事件</td>
        </tr>
    </tbody>
</table>
</font></div>
 <img src ="http://www.blogjava.net/yczz/aggbug/144817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-09-13 12:58 <a href="http://www.blogjava.net/yczz/articles/144817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DWR文档之开始使用 DWR</title><link>http://www.blogjava.net/yczz/articles/138923.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 23 Aug 2007 12:21:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/138923.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/138923.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/138923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/138923.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/138923.html</trackback:ping><description><![CDATA[<h3 class=storytitle id=post-79><a href="http://www.javatang.com/archives/2006/10/20/254879.html" rel=bookmark><u><font color=#800080>DWR文档之开始使用 DWR</font></u></a></h3>
<div class=storycontent>
<p>原文出处: http://www.javatang.com/archives/2006/10/20/254879.html<br>翻译: Jet Mah<br>声明: 请维持文章的完整性任意转载</p>
<p><strong>开始使用 DWR</strong></p>
<p>有两种方法来开始 DWR 的学习，最简单的做法是<a href="http://getahead.org/dwr/download" target=_blank><u><font color=#0000ff>下载</font></u></a>官方提供的 WAR 文件然后对此深入研究。不过这种方式不能使你感到将 DWR 整合到你现有的 web 程序有多么的简单，所以我们推荐你跟随下面三个步骤：</p>
<p><strong>1. 安装 DWR JAR 包</strong><br><a href="http://getahead.org/dwr/download" target=_blank><u><font color=#0000ff>下载</font></u></a> dwr.jar 文件，然后将它放在 web 程序的 WEB-INF/lib 目录下面，很可能在这个目录下已经有一些 jar 文件了。</p>
<p><strong>2. 编辑 config 文件</strong></p>
<p>将下面的代码添加到 WEB-INF/web.xml 文件中，&lt;servlet&gt;需要放在另外的&lt;servlet&gt;之后，&lt;servlet-mapping&gt;也是如此。</p>
<blockquote>
<p>&lt;servlet&gt;<br>&nbsp;&nbsp;&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&lt;display-name&gt;DWR&nbsp;Servlet&lt;/display-name&gt;<br>&nbsp;&nbsp;&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;<br>&nbsp;&nbsp;&lt;init-param&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-name&gt;debug&lt;/param-name&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param-value&gt;true&lt;/param-value&gt;<br>&nbsp;&nbsp;&lt;/init-param&gt;<br>&lt;/servlet&gt;</p>
<p>&lt;servlet-mapping&gt;<br>&nbsp;&nbsp;&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br>&nbsp;&nbsp;&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;<br>&lt;/servlet-mapping&gt;</p>
</blockquote>
<p>接下来创建 dwr.xml 文件并将此放在 web.xml 所在的 WEB-INF 目录下。文件中类似下面的内容：</p>
<blockquote>
<p>&lt;!DOCTYPE&nbsp;dwr&nbsp;PUBLIC<br>&nbsp;&nbsp;&nbsp;&nbsp;&#8221;-//GetAhead&nbsp;Limited//DTD&nbsp;Direct&nbsp;Web&nbsp;Remoting&nbsp;1.0//EN&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;&#8221;http://www.getahead.ltd.uk/dwr/dwr10.dtd&#8221;&gt;</p>
<p>&lt;dwr&gt;<br>&nbsp;&nbsp;&lt;allow&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&nbsp;creator=&#8221;new&#8221;&nbsp;javascript=&#8221;JDate&#8221;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=&#8221;class&#8221;&nbsp;value=&#8221;java.util.Date&#8221;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;create&nbsp;creator=&#8221;new&#8221;&nbsp;javascript=&#8221;Demo&#8221;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=&#8221;class&#8221;&nbsp;value=&#8221;your.java.Bean&#8221;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/create&gt;<br>&nbsp;&nbsp;&lt;/allow&gt;<br>&lt;/dwr&gt;</p>
</blockquote>
<p>DWR 配置文件定义了由 DWR 创建和被 Javascript 远程使用的类。在上面的例子中我们在远程创建了2个类，并且给出了在 Javascript 中的类名。</p>
<p>上面使用的 new creator 使用了所有的 JavaBeans 必须含有的公有（public）无参（no-args）的构造函数。值得一提的是， DWR 还有一些限制：</p>
<li>避免使用 JavaScript 保留字；以保留字命名的方法将自动被排除。大多数 JavaScript 的保留字同时也是 Java 的保留字，因此无论如何你也不能使用一个名为 &#8220;try()&#8221; 的方法。但是最常用的一个词 &#8220;delete()&#8221;，在 JavaScript 中有特殊的含义而在 Java 中没有。
<li>重载方法（Overloaded methods）将会在调用的时候陷入未知的状况，因此应该避免重载方法。
<p><strong>3. 访问下面的地址</strong><br>http://localhost:8080/[YOUR-WEBAPP]/dwr/</p>
<p>你应该会看到一个页面，上面显示了刚才你在第二步所创建的类。进入一个链接之后你会看到所有等待调用方法的列表。这些动态产生的例子你也能通过 DWR 来实现。</p>
<p>亲自尝试和体会下吧。</p>
<p><strong>怎样应用到你的 Web 程序中？</strong></p>
<p>在侧边栏有很多例子演示了怎样改变网页中的文本、更新列表、操作表单和动态修改表格。每一个例子都有详细的说明。</p>
<p>另外一个开始方法就是从页面中查看源代码，这些页面你刚刚浏览过：</p>
<li>进入 http://localhost:8080/[YOUR-WEBAPP]/dwr/ 然后点击你创建的类；
<li>查看源代码然后定位到你所感兴趣的方法的代码行；
<li>将这些文本粘贴到你 Web 程序的一个 HTML 或 JSP页面中；
<li>包含下面的 javascrip 文件：
<blockquote>
<p>&lt;script&nbsp;src=&#8217;/[YOUR-WEBAPP]/dwr/interface/[YOUR-SCRIPT].js&#8217;&gt;&lt;/script&gt;<br>&lt;script&nbsp;src=&#8217;/[YOUR-WEBAPP]/dwr/engine.js&#8217;&gt;&lt;/script&gt;</p>
</blockquote>
<p>你可以根据实际情况修改 /[YOUR-WEBAPP]/ 部分。</p>
<p>&nbsp;</p>
</li>
</div>
<img src ="http://www.blogjava.net/yczz/aggbug/138923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-08-23 20:21 <a href="http://www.blogjava.net/yczz/articles/138923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript中最常用的55个经典技巧</title><link>http://www.blogjava.net/yczz/articles/136557.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Tue, 14 Aug 2007 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/136557.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/136557.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/136557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/136557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/136557.html</trackback:ping><description><![CDATA[<p>1<span>. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<br>&lt;table border oncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt; 可用于Table</span></p>
<span>
<p>2. &lt;body onselectstart="return false"&gt; 取消选取、防止复制</p>
<p>3. onpaste="return false" 不准粘贴</p>
<p>4. oncopy="return false;" oncut="return false;" 防止复制</p>
<p>5. &lt;link rel="Shortcut Icon" href="favicon.ico"&gt; IE地址栏前换成自己的图标</p>
<p>6. &lt;link rel="Bookmark" href="favicon.ico"&gt; 可以在收藏夹中显示出你的图标</p>
<p><br>7. &lt;input style="ime-mode:disabled"&gt; 关闭输入法</p>
<p><br>8. 永远都会带着框架<br>&lt;script language="JavaScript"&gt;&lt;!--<br>if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页<br>// --&gt;&lt;/script&gt;</p>
<p><br>9. 防止被人frame<br>&lt;SCRIPT LANGUAGE=JAVASCRIPT&gt;&lt;!-- <br>if (top.location != self.location)top.location=self.location;<br>// --&gt;&lt;/SCRIPT&gt;</p>
<p><br>10. 网页将不能被另存为<br>&lt;noscript&gt;&lt;*** src="/*.html&gt;";&lt;/***&gt;&lt;/noscript&gt; </p>
<p><br>11. &lt;input type=button value="/查看网页源代码 <br>onclick="window.location = "view-source:"+ "http://www.pconline.com.cn""&gt;<br>12.删除时确认<br>&lt;a href=""javascript :if(confirm("确实要删除吗?"))location="boos.asp?&amp;areyou=删除&amp;page=1""&gt;删除&lt;/a&gt; </p>
<p><br>13. 取得控件的绝对位置<br>//Javascript<br>&lt;script language="Javascript"&gt;<br>function getIE(e){<br>var t=e.offsetTop;<br>var l=e.offsetLeft;<br>while(e=e.offsetParent){<br>t+=e.offsetTop;<br>l+=e.offsetLeft;<br>}<br>alert("top="+t+"/nleft="+l);<br>}<br>&lt;/script&gt;<br>//VBScript<br>&lt;script language="VBScript"&gt;&lt;!--<br>function getIE()<br>dim t,l,a,b<br>set a=document.all.img1<br>t=document.all.img1.offsetTop<br>l=document.all.img1.offsetLeft<br>while a.tagName&lt;&gt;"BODY"<br>set a = a.offsetParent<br>t=t+a.offsetTop<br>l=l+a.offsetLeft<br>wend<br>msgbox "top="&amp;t&amp;chr(13)&amp;"left="&amp;l,64,"得到控件的位置"<br>end function<br>--&gt;&lt;/script&gt;</p>
<p><br>14. 光标是停在文本框文字的最后<br>&lt;script language="javascript"&gt;<br>function cc()<br>{<br>var e = event.srcElement;<br>var r =e.createTextRange();<br>r.moveStart("character",e.value.length);<br>r.collapse(true);<br>r.select();<br>}<br>&lt;/script&gt;<br>&lt;input type=text name=text1 value="123" onfocus="cc()"&gt;</p>
<p><br>15. 判断上一页的来源<br>javascript :<br>document.referrer</p>
<p><br>16. 最小化、最大化、关闭窗口<br>&lt;object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br>&lt;param name="Command" value="Minimize"&gt;&lt;/object&gt;<br>&lt;object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br>&lt;param name="Command" value="Maximize"&gt;&lt;/object&gt;<br>&lt;OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;<br>&lt;PARAM NAME="Command" value="/Close"&gt;&lt;/OBJECT&gt;<br>&lt;input type=button value="/最小化 onclick=hh1.Click()&gt;<br>&lt;input type=button value="/blog/最大化 onclick=hh2.Click()&gt;<br>&lt;input type=button value=关闭 onclick=hh3.Click()&gt;<br>本例适用于IE</p>
<p><br>17.屏蔽功能键Shift,Alt,Ctrl<br>&lt;script&gt;<br>function look(){ <br>if(event.shiftKey) <br>alert("禁止按Shift键!"); //可以换成ALT　CTRL<br>} <br>document.onkeydown=look; <br>&lt;/script&gt;</p>
<p><br>18. 网页不会被缓存<br>&lt;META HTTP-EQUIV="pragma" CONTENT="no-cache"&gt;<br>&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"&gt;<br>&lt;META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"&gt;<br>或者&lt;META HTTP-EQUIV="expires" CONTENT="0"&gt;</p>
<p><br>19.怎样让表单没有凹凸感？<br>&lt;input type=text style="""border:1 solid #000000"&gt; <br>或<br>&lt;input type=text style="border-left:none; border-right:none; border-top:none; border-bottom: <br>1 solid #000000"&gt;&lt;/textarea&gt;</p>
<p><br>20.&lt;div&gt;&lt;span&gt;&amp;&lt;layer&gt;的区别？ <br>&lt;div&gt;(division)用来定义大段的页面元素，会产生转行 <br>&lt;span&gt;用来定义同一行内的元素，跟&lt;div&gt;的唯一区别是不产生转行 <br>&lt;layer&gt;是ns的标记，ie不支持，相当于&lt;div&gt;</p>
<p><br>21.让弹出窗口总是在最上面:<br>&lt;body onblur="this.focus();"&gt;</p>
<p><br>22.不要滚动条? <br>让竖条没有: <br>&lt;body style="overflow:scroll;overflow-y:hidden"&gt; <br>&lt;/body&gt; <br>让横条没有: <br>&lt;body style="overflow:scroll;overflow-x:hidden"&gt; <br>&lt;/body&gt; <br>两个都去掉？更简单了 <br>&lt;body scroll="no"&gt; <br>&lt;/body&gt; </p>
<p><br>23.怎样去掉图片链接点击后，图片周围的虚线？<br>&lt;a href="#" onFocus="this.blur()"&gt;&lt;img src="/logo.jpg" border=0&gt;&lt;/a&gt;</p>
<p><br>24.电子邮件处理提交表单<br>&lt;form name="form1" method="post" action=<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#42;&#42;&#42;&#64;&#42;&#42;&#42;&#46;&#99;&#111;&#109;"><font color=#000080>mailto:****@***.com</font></a> <br>enctype="text/plain"&gt; <br>&lt;input type=submit&gt;<br>&lt;/form&gt;</p>
<p><br>25.在打开的子窗口刷新父窗口的代码里如何写？<br>window.opener.location.reload()</p>
<p><br>26.如何设定打开页面的大小<br>&lt;body onload="top.resizeTo(300,200);"&gt;<br>打开页面的位置&lt;body onload="top.moveBy(300,200);"&gt;</p>
<p><br>27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动 <br>&lt;STYLE&gt; <br>body <br>{background-image:url(/logo.gif); background-repeat:no-repeat; <br>background-position:center;background-attachment: fixed} <br>&lt;/STYLE&gt; </p>
<p><br>28. 检查一段字符串是否全由数字组成<br>&lt;script language="Javascript"&gt;&lt;!--<br>function checkNum(str){return str.match(//D/)==null}<br>alert(checkNum("1232142141"))<br>alert(checkNum("123214214a1"))<br>// --&gt;&lt;/script&gt;</p>
<p><br>29. 获得一个窗口的大小<br>document.body.clientWidth; document.body.clientHeight</p>
<p><br>30. 怎么判断是否是字符<br>if (/[^/x00-/xff]/g.test(s)) alert("含有汉字");<br>else alert("全是字符");</p>
<p><br>31.TEXTAREA自适应文字行数的多少<br>&lt;textarea rows=1 name=s1 cols=27 onpropertychange<br>="this.style.posHeight=this.scrollHeight"&gt;<br>&lt;/textarea&gt;</p>
<p><br>32. 日期减去天数等于第二个日期<br>&lt;script language=Javascript&gt;<br>function cc(dd,dadd)<br>{<br>//可以加上错误处理<br>var a = new Date(dd)<br>a = a.valueOf()<br>a = a - dadd * 24 * 60 * 60 * 1000<br>a = new Date(a)<br>alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日")<br>}<br>cc("12/23/2002",2)<br>&lt;/script&gt;</p>
<p><br>33. 选择了哪一个Radio<br>&lt;HTML&gt;&lt;script language="vbscript"&gt;<br>function checkme()<br>for each ob in radio1<br>if ob.checked then <br>window.alert ob.value<br>next<br>end function<br>&lt;/script&gt;&lt;BODY&gt;<br>&lt;INPUT name="radio1" type="radio" value="/style" checked&gt;Style<br>&lt;INPUT name="radio1" type="radio" value="/blog/barcode"&gt;Barcode<br>&lt;INPUT type="button" value="check" onclick="checkme()"&gt;<br>&lt;/BODY&gt;&lt;/HTML&gt;</p>
<p><br>34.脚本永不出错<br>&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br>&lt;!-- Hide <br>function killErrors() { <br>return true; <br>} <br>window.onerror = killErrors; <br>// --&gt; <br>&lt;/SCRIPT&gt;</p>
<p><br>35.ENTER键可以让光标移到下一个输入框<br>&lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt;</p>
<p><br>36. 检测某个网站的链接速度：<br>把如下代码加入&lt;body&gt;区域中:<br>&lt;script language=Javascript&gt;<br>tim=1<br>setInterval("tim++",100)<br>b=1<br>var autourl=new Array()<br>autourl[1]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0&gt;<a href="http://www.njcatv.net/" target=_blank><font color=#000080>www.njcatv.net</font></a>"<br>autourl[2]="javacool.3322.net"<br>autourl[3]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0&gt;<a href="http://www.sina.com.cn/" target=_blank><font color=#000080>www.sina.com.cn</font></a>"<br>autourl[4]="www.nuaa.edu.cn"<br>autourl[5]=1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0&gt;<a href="http://www.cctv.com/" target=_blank><font color=#000080>www.cctv.com</font></a>"<br>function butt(){<br>***("&lt;form name=autof&gt;")<br>for(var i=1;i&lt;autourl.length;i++)<br>***("&lt;input type=text name=txt"+i+" size=10 value="/测试中&#8230;&#8230;&gt; =》&lt;input type=text <br>name=url"+i+" size=40&gt; =》&lt;input type=button value="/blog/GO <br>onclick=window.open(this.form.url"+i+".value)&gt;&lt;br&gt;")<br>***("&lt;input type=submit value=刷新&gt;&lt;/form&gt;")<br>}<br>butt()<br>function auto(url){<br>document.forms[0]["url"+b].value=url<br>if(tim&gt;200)<br>{document.forms[0]["txt"+b].value="/链接超时"}<br>else<br>{document.forms[0]["txt"+b].value="/blog/时间"+tim/10+"秒"}<br>b++<br>}<br>function run(){for(var i=1;i&lt;autourl.length;i++)***("&lt;img src=http://"+autourl+"/"+Math.random()+" width=1 height=1 <br>onerror=auto("http://"+autourl+"")&gt;")}<br>run()&lt;/script&gt;</p>
<p><br>37. 各种样式的光标<br>auto ：标准光标<br>default ：标准箭头<br>hand ：手形光标<br>wait ：等待光标<br>text ：I形光标<br>vertical-text ：水平I形光标<br>no-drop ：不可拖动光标<br>not-allowed ：无效光标<br>help ：?帮助光标<br>all-scroll ：三角方向标<br>move ：移动标<br>crosshair ：十字标<br>e-resize<br>n-resize<br>nw-resize<br>w-resize<br>s-resize<br>se-resize<br>sw-resize</p>
<p><br>38.页面进入和退出的特效<br>进入页面&lt;meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)"&gt;<br>推出页面&lt;meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)"&gt;&nbsp;&nbsp;<br>这个是页面被载入和调出时的一些特效。duration表示特效的持续时间，以秒为单位。transition表示使用哪种特效，取值为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 以上22种随机选择一种</p>
<p><br>39.在规定时间内跳转<br>&lt;META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com"&gt; </p>
<p><br>40.网页是否被检索<br>&lt;meta name="ROBOTS" content="属性值"&gt;<br>　　其中属性值有以下一些:<br>　　属性值为"all": 文件将被检索，且页上链接可被查询；<br>　　属性值为"none": 文件不被检索，而且不查询页上的链接；<br>　　属性值为"index": 文件将被检索；<br>　　属性值为"follow": 查询页上的链接；<br>　　属性值为"noindex": 文件不检索，但可被查询链接；<br>　　属性值为"nofollow": 文件不被检索，但可查询页上的链接。</p>
<p><br>41、email地址的分割<br>把如下代码加入&lt;body&gt;区域中<br>&lt;a href="mailto:webmaster@sina.com"&gt;webmaster@sina.com&lt;/a&gt;</p>
<p><br>42、流动边框效果的表格<br>把如下代码加入&lt;body&gt;区域中<br>&lt;SCRIPT&gt;<br>l=Array(6,7,8,9,'a','b','b','c','d','e','f')<br>Nx=5;Ny=35<br>t="&lt;table border=0 cellspacing=0 cellpadding=0 height="+((Nx+2)*16)+"&gt;&lt;tr&gt;"<br>for(x=Nx;x&lt;Nx+Ny;x++)<br>t+="&lt;td width=16 id=a_mo"+x+"&gt;　&lt;/td&gt;"<br>t+="&lt;/tr&gt;&lt;tr&gt;&lt;td width=10 id=a_mo"+(Nx-1)+"&gt;　&lt;/td&gt;&lt;td colspan="+(Ny-2)+" rowspan="+(Nx)+"&gt;　&lt;/td&gt;&lt;td width=16 id=a_mo"+(Nx+Ny)+"&gt;&lt;/td&gt;&lt;/tr&gt;"<br>for(x=2;x&lt;=Nx;x++)<br>t+="&lt;tr&gt;&lt;td width=16 id=a_mo"+(Nx-x)+"&gt;　&lt;/td&gt;&lt;td width=16 id=a_mo"+(Ny+Nx+x-1)+"&gt;　&lt;/td&gt;&lt;/tr&gt;"<br>t+="&lt;tr&gt;"<br>for(x=Ny;x&gt;0;x--)<br>t+="&lt;td width=16 id=a_mo"+(x+Nx*2+Ny-1)+"&gt;　&lt;/td&gt;"<br>***(t+"&lt;/tr&gt;&lt;/table&gt;")<br>var N=Nx*2+Ny*2<br>function f1(y){<br>for(i=0;i&lt;N;i++){<br>c=(i+y)%20;if(c&gt;10)c=20-c<br>document.all["a_mo"+(i)].bgColor=""""#0000"+l[c]+l[c]+"'"}<br>y++<br>setTimeout('f1('+y+')','1')}<br>f1(1)<br>&lt;/SCRIPT&gt;</p>
<p><br>43、JavaScript主页弹出窗口技巧<br>窗口中间弹出<br>&lt;script&gt;<br>window.open("http://www.cctv.com","","width=400,height=240,top="+(screen.availHeight-240)/2+",left="+(screen.availWidth-400)/2);<br>&lt;/script&gt;<br>============<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;script language="LiveScript"&gt;<br>function WinOpen() {<br>&nbsp;&nbsp;&nbsp; msg=open("","DisplayWindow","toolbar=no,directories=no,menubar=no");<br>&nbsp;&nbsp;&nbsp; msg.***("&lt;HEAD&gt;&lt;TITLE&gt;哈 罗!&lt;/TITLE&gt;&lt;/HEAD&gt;");<br>&nbsp;&nbsp;&nbsp; msg.***("&lt;CENTER&gt;&lt;H1&gt;酷 毙 了!&lt;/H1&gt;&lt;h2&gt;这 是&lt;B&gt;JavaScript&lt;/B&gt;所 开 的 视 窗!&lt;/h2&gt;&lt;/CENTER&gt;");<br>}<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form&gt;<br>&lt;input type="button" name="Button1" value="Push me" onclick="WinOpen()"&gt;<br>&lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>==============<br>一、在下面的代码中，你只要单击打开一个窗口，即可链接到赛迪网。而当你想关闭时，只要单击一下即可关闭刚才打开的窗口。<br>　　代码如下： <br>　　&lt;SCRIPT language="JavaScript"&gt; <br>　　&lt;！-- <br>　　function openclk() { <br>　　another=open('1000){this.resized=true;this.style.width=1000;}" align=absMiddle border=0&gt;<a href="http://www.ccidnet.com%20/" target=_blank><font color=#000080>http://www.ccidnet.com'</font></a>，'NewWindow'); <br>　　} <br>　　function closeclk() { <br>　　another.close(); <br>　　} <br>　　//--&gt; <br>　　&lt;/SCRIPT&gt; <br>　　&lt;FORM&gt; <br>　　&lt;INPUT TYPE="BUTTON" NAME="open" value="/打开一个窗口" onClick="openclk()"&gt; <br>　　&lt;BR&gt; <br>　　&lt;INPUT TYPE="BUTTON" NAME="close" value="/blog/关闭这个窗口" onClick="closeclk()"&gt; <br>　　&lt;/FORM&gt; <br>　　二、上面的代码也太静了，为何不来点动感呢？如果能给页面来个降落效果那该多好啊！ <br>　　代码如下： <br>　　&lt;script&gt; <br>　　function drop(n) { <br>　　if(self.moveBy){ <br>　　self.moveBy (0，-900); <br>　　for(i = n; i &gt; 0; i--){ <br>　　self.moveBy(0，3); <br>　　} <br>　　for(j = 8; j &gt; 0; j--){ <br>　　self.moveBy(0，j); <br>　　self.moveBy(j，0); <br>　　self.moveBy(0，-j); <br>　　self.moveBy(-j，0); <br>　　} <br>　　} <br>　　} <br>　　&lt;/script&gt; <br>　　&lt;body onLoad="drop(300)"&gt; <br>　　三、讨厌很多网站总是按照默认窗口打开，如果你能随心所欲控制打开的窗口那该多好。 <br>　　代码如下: <br>　　&lt;SCRIPT LANGUAGE="JavaScript"&gt; <br>　　&lt;！-- Begin <br>　　function popupPage(l， t， w， h) { <br>　　var windowprops = "location=no，scrollbars=no，menubars=no，toolbars=no，resizable=yes" + <br>　　"，left=" + l + "，top=" + t + "，width=" + w + "，height=" + h; <br>　　var URL = "http://www.80cn.com"; <br>　　popup = window.open(URL，"MenuPopup"，windowprops); <br>　　} <br>　　// End --&gt; <br>　　&lt;/script&gt; <br>　　&lt;table&gt; <br>　　&lt;tr&gt; <br>　　&lt;td&gt; <br>　　&lt;form name=popupform&gt; <br>　　&lt;pre&gt; <br>　　打开页面的参数&lt;br&gt; <br>　　离开左边的距离: &lt;input type=text name=left size=2 maxlength=4&gt; pixels <br>　　离开右边的距离: &lt;input type=text name=top size=2 maxlength=4&gt; pixels <br>　　窗口的宽度: &lt;input type=text name=width size=2 maxlength=4&gt; pixels <br>　　窗口的高度: &lt;input type=text name=height size=2 maxlength=4&gt; pixels <br>　　&lt;/pre&gt; <br>　　&lt;center&gt; <br>　　&lt;input type=button value="打开这个窗口！" onClick="popupPage(this.form.left.value， this.form.top.value， this.form.width.value，<br>this.form.height.value)"&gt; <br>　　&lt;/center&gt; <br>　　&lt;/form&gt; <br>　　&lt;/td&gt; <br>　　&lt;/tr&gt; <br>　　&lt;/table&gt;你只要在相对应的对话框中输入一个数值即可，将要打开的页面的窗口控制得很好。 </p>
<p><br>44、页面的打开移动<br>把如下代码加入&lt;body&gt;区域中<br>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br>&lt;!-- Begin<br>for (t = 2; t &gt; 0; t--) {<br>for (x = 20; x &gt; 0; x--) {<br>for (y = 10; y &gt; 0; y--) {<br>parent.moveBy(0,-x);<br>&nbsp;&nbsp; }<br>}<br>for (x = 20; x &gt; 0; x--) {<br>for (y = 10; y &gt; 0; y--) {<br>parent.moveBy(0,x);<br>&nbsp;&nbsp; }<br>}<br>for (x = 20; x &gt; 0; x--) {<br>for (y = 10; y &gt; 0; y--) {<br>parent.moveBy(x,0);<br>&nbsp;&nbsp; }<br>}<br>for (x = 20; x &gt; 0; x--) {<br>for (y = 10; y &gt; 0; y--) {<br>parent.moveBy(-x,0);<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; } <br>}<br>//--&gt;<br>//&nbsp;&nbsp; End --&gt;<br>&lt;/script&gt;</p>
<p><br>45、显示个人客户端机器的日期和时间<br>&lt;script language="LiveScript"&gt;<br>&lt;!-- Hiding<br>&nbsp;&nbsp; today = new Date()<br>&nbsp;&nbsp; ***("现 在 时 间 是： ",today.getHours(),":",today.getMinutes())<br>&nbsp;&nbsp; ***("&lt;br&gt;今 天 日 期 为： ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());<br>// end hiding contents --&gt;<br>&lt;/script&gt;</p>
<p><br>46、自动的为你每次产生最後修改的日期了： <br>&lt;html&gt;<br>&lt;body&gt;<br>This is a simple HTML- page.<br>&lt;br&gt;<br>Last changes:<br>&nbsp;&nbsp; &lt;script language="LiveScript"&gt;<br>&nbsp;&nbsp; &lt;!--&nbsp;&nbsp; hide script from old browsers<br>&nbsp;&nbsp;&nbsp;&nbsp; ***(document.lastModified)<br>&nbsp;&nbsp; // end hiding contents --&gt;<br>&nbsp;&nbsp; &lt;/script&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</p>
<p><br>47、不能为空和邮件地址的约束：<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;script language="JavaScript"&gt;<br>&lt;!-- Hide<br>function test1(form) {<br>&nbsp;&nbsp; if (form.text1.value == "")<br>&nbsp;&nbsp;&nbsp;&nbsp; alert("您 没 写 上 任 何 东 西， 请 再 输 入 一 次 !")<br>&nbsp;&nbsp; else { <br>&nbsp;&nbsp;&nbsp; alert("嗨 "+form.text1.value+"! 您 已 输 入 完 成 !");<br>&nbsp;&nbsp; }<br>}<br>function test2(form) {<br>&nbsp;&nbsp; if (form.text2.value == "" || <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; form.text2.value.indexOf('@', 0) == -1) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("这 不 是 正 确 的 e-mail address! 请 再 输 入 一 次 !");<br>&nbsp;&nbsp; else alert("您 已 输 入 完 成 !");<br>}<br>// --&gt;<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&lt;form name="first"&gt;<br>Enter your name:&lt;br&gt;<br>&lt;input type="text" name="text1"&gt;<br>&lt;input type="button" name="button1" value="输 入 测 试" onClick="test1(this.form)"&gt;<br>&lt;P&gt;<br>Enter your e-mail address:&lt;br&gt;<br>&lt;input type="text" name="text2"&gt;<br>&lt;input type="button" name="button2" value="输 入 测 试" onClick="test2(this.form)"&gt;<br>&lt;/body&gt;</p>
<p><br>48、跑马灯<br>&lt;html&gt;<br>&lt;head&gt;<br>&lt;script language="JavaScript"&gt;<br>&lt;!-- Hide<br>var scrtxt="怎麽样 ! 很酷吧 ! 您也可以试试."+"Here goes your message the visitors to your <br>page will "+"look at for hours in pure fascination...";<br>var lentxt=scrtxt.length;<br>var width=100;<br>var pos=1-width;<br>function scroll() {<br>&nbsp;&nbsp; pos++;<br>&nbsp;&nbsp; var scroller="";<br>&nbsp;&nbsp; if (pos==lentxt) {<br>&nbsp;&nbsp;&nbsp;&nbsp; pos=1-width;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; if (pos&lt;0) {<br>&nbsp;&nbsp;&nbsp;&nbsp; for (var i=1; i&lt;=Math.abs(pos); i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scroller=scroller+" ";}<br>&nbsp;&nbsp;&nbsp;&nbsp; scroller=scroller+scrtxt.substring(0,width-i+1);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; else {<br>&nbsp;&nbsp;&nbsp;&nbsp; scroller=scroller+scrtxt.substring(pos,width+pos);<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; window.status = scroller;<br>&nbsp;&nbsp; setTimeout("scroll()",150);<br>&nbsp;&nbsp; }<br>//--&gt;<br>&lt;/script&gt;<br>&lt;/head&gt;<br>&lt;body onLoad="scroll();return true;"&gt;<br>这里可显示您的网页 !<br>&lt;/body&gt;<br>&lt;/html&gt;</p>
<p><br>49、在网页中用按钮来控制前页，后页和主页的显示。<br>&lt;html&gt;<br>&lt;body&gt;<br>&lt;FORM NAME="buttonbar"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE="button" VALUE="Back" onClick="history.back()"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE="button" VALUE="JS- Home" onClick="location='script.html'"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;INPUT TYPE="button" VALUE="Next" onCLick="history.forward()"&gt;<br>&lt;/FORM&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;<br>50、查看某网址的源代码<br>把如下代码加入&lt;body&gt;区域中<br>&lt;SCRIPT&gt;<br>function add()<br>{<br>var ress=document.forms[0].luxiaoqing.value<br>window.location="view-source:"+ress;<br>}<br>&lt;/SCRIPT&gt;<br>输入要查看源代码的URL地址:<br>&lt;FORM&gt;&lt;input type="text" name="luxiaoqing" size=40 value="http://"&gt;&lt;/FORM&gt;<br>&lt;FORM&gt;&lt;br&gt;<br>&lt;INPUT type="button" value="查看源代码" onClick=add()&gt;<br>&lt;/FORM&gt;</p>
<p><br>51、title显示日期<br>把如下代码加入&lt;body&gt;区域中:<br>&lt;script language="JavaScript1.2"&gt;<br>&lt;!--hide<br>var isnMonth = new<br>Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");<br>var isnDay = new<br>Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六","星期日");<br>today = new Date () ;<br>Year=today.getYear();<br>Date=today.getDate();<br>if (document.all)<br>document.title="今天是: "+Year+"年"+isnMonth[today.getMonth()]+Date+"日"+isnDay[today.getDay()]<br>//--hide--&gt;<br>&lt;/script&gt;</p>
<p><br>52、显示所有链接<br>把如下代码加入&lt;body&gt;区域中<br>&lt;script language="JavaScript1.2"&gt;<br>&lt;!--<br>function extractlinks(){<br>var links=document.all.tags("A")<br>var total=links.length<br>var win2=window.open("","","menubar,scrollbars,toolbar")<br>win2.***("&lt;font size='2'&gt;一共有"+total+"个连接&lt;/font&gt;&lt;br&gt;")<br>for (i=0;i&lt;total;i++){<br>win2.***("&lt;font size='2'&gt;"+links[i].outerHTML+"&lt;/font&gt;&lt;br&gt;")<br>}<br>}<br>//--&gt;<br>&lt;/script&gt;<br>&lt;input type="button" onClick="extractlinks()" value="显示所有的连接"&gt;</p>
<p><br>53、回车键换行<br>把如下代码加入&lt;body&gt;区域中<br>&lt;script type="text/javascript"&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>function handleEnter (field, event) {<br>&nbsp;&nbsp; var keyCode = event.keyCode ? event.keyCode : event.which ?<br>event.which : event.charCode;<br>&nbsp;&nbsp; if (keyCode == 13) {<br>&nbsp;&nbsp;&nbsp; var i;<br>&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; field.form.elements.length; i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; if (field == field.form.elements[i])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp; i = (i + 1) % field.form.elements.length;<br>&nbsp;&nbsp;&nbsp; field.form.elements[i].focus();<br>&nbsp;&nbsp;&nbsp; return false;<br>&nbsp;&nbsp; } <br>&nbsp;&nbsp; else<br>&nbsp;&nbsp; return true;<br>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&lt;/script&gt;<br>&lt;form&gt;<br>&lt;input type="text" onkeypress="return handleEnter(this, event)"&gt;&lt;br&gt;<br>&lt;input type="text" onkeypress="return handleEnter(this, event)"&gt;&lt;br&gt;<br>&lt;textarea&gt;回车换行</p>
<p><br>54、确认后提交<br>把如下代码加入&lt;body&gt;区域中<br>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<br>&lt;!--<br>function msg(){<br>if (confirm("你确认要提交嘛！"))<br>document.lnman.submit()<br>}<br>//--&gt;<br>&lt;/SCRIPT&gt;<br>&lt;form name="lnman" method="post" action=""&gt;<br>&nbsp;&nbsp; &lt;p&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="text" name="textfield" value="确认后提交"&gt;<br>&nbsp;&nbsp; &lt;/p&gt;<br>&nbsp;&nbsp; &lt;p&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="button" name="Submit" value="提交" onclick="msg();"&gt;<br>&nbsp;&nbsp; &lt;/p&gt;<br>&lt;/form&gt;</p>
<p><br>55、改变表格的内容<br>把如下代码加入&lt;body&gt;区域中<br>&lt;script ***script&gt;<br>var arr=new Array()<br>arr[0]="一一一一一";<br>arr[1]="二二二二二";<br>arr[2]="三三三三三";<br>&lt;/script&gt;<br>&lt;select onchange="zz.cells[this.selectedIndex].innerHTML=arr[this.selectedIndex]"&gt;<br>&nbsp;&nbsp; &lt;option value=a&gt;改变第一格&lt;/option&gt;<br>&nbsp;&nbsp; &lt;option value=a&gt;改变第二格&lt;/option&gt;<br>&nbsp;&nbsp; &lt;option value=a&gt;改变第三格&lt;/option&gt;<br>&lt;/select&gt;<br>&lt;table id=zz border=1&gt;<br>&nbsp;&nbsp; &lt;tr height=20&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=150&gt;第一格&lt;/td&gt;<br>&lt;td width=150&gt;第二格&lt;/td&gt;<br>&lt;td width=150&gt;第三格&lt;/td&gt;<br>&nbsp;&nbsp; &lt;/tr&gt;<br>&lt;/table&gt;</span></p>
<img src ="http://www.blogjava.net/yczz/aggbug/136557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-08-14 09:03 <a href="http://www.blogjava.net/yczz/articles/136557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决AJAX中文乱码问题比较好的方案</title><link>http://www.blogjava.net/yczz/articles/109866.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Wed, 11 Apr 2007 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/109866.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/109866.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/109866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/109866.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/109866.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 18pt">&nbsp;<strong>写在前面：</strong><br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 12pt">这段时间在深圳一家公司实习，公司规定要做2个课题来考验我们水平，遇到一个模块只有用AJAX实现才是最完美的，这让我我想起最初接触AJAX时就是由于中文乱码问题让我放弃了使用这个技术，但是这次我没有放弃选择权，我不得不开启喜爱的百度，搜索着解决方案，但是用来网上所说的好几个方法都无法解决，所以不得不自己思考一下解决乱码的方法。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在WEB系统基本上都要用到过滤流技术可是几乎所有的公司都是用GBK编码来过滤字符，但是AJAX是老外的技术他们用UTF-8编码，怎么解决这个问题呢，我想到的昨天一个double类型转换为金钱格式显示问题，如果在后台处理这个问题要花费很多功夫，但是放在前台用javascript处理就很好，这样既不影响后台业务，又实现了前台显示格式的要求。那么AJAX编码能不能在前台转换了，立刻寻找相关质料在下面列出。<br>&nbsp;<br></span><span style="FONT-SIZE: 18pt"><strong>URL编码方法有3种<br></strong></span><span style="FONT-SIZE: 12pt">escape() ,unescape()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; encodeURI(),decodeURI()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; encodeURIComponent(),decodeURIComponent() 这几种编码所起的作用各不相同<br><br></span><strong><span style="FONT-SIZE: 18pt">escape() 方法</span>：</strong>&nbsp;&nbsp;<br><br><span style="FONT-SIZE: 12pt">采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码（xx等于该字符在字符集表里面的编码的16进制数字）。比如，空格符对应的编码是%20。 <br><br>不会被此方法编码的字符： @ * / + <br></span><br><strong><span style="FONT-SIZE: 18pt">encodeURI() 方法：</span> <br></strong><br><span style="FONT-SIZE: 12pt">把URI字符串采用UTF-8编码格式转化成escape格式的字符串。 <br><br>不会被此方法编码的字符：! @ # $&amp; * ( ) = : / ; ? + ' <br></span><br><span style="FONT-SIZE: 18pt"><strong>encodeURIComponent() 方法：</strong></span> <br><br><span style="FONT-SIZE: 12pt">把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比，这个方法将对更多的字符进行编码，比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话，不能用这个方法来进行编码，否则 / 字符被编码之后URL将显示错误。 <br><br>不会被此方法编码的字符：! * ( ) ' <br><br>因此，对于中文字符串来说，如果不希望把字符串编码格式转化成UTF-8格式的（比如原页面和目标页面的charset是一致的时候），只需要使用escape。如果你的页面是GB2312或者其他的编码，而接受参数的页面是UTF-8编码的，就要采用encodeURI或者encodeURIComponent。 <br><br><strong>在后台JAVA处理函数：</strong><br><br>JS是：escape()函数&nbsp;&nbsp;&nbsp;&nbsp;<br>Java是:&nbsp;&nbsp;&nbsp;<br>java.net.URLEncoder.encode()&nbsp;&nbsp;&nbsp;<br>java.net.URLDecoder.decode()&nbsp;&nbsp; <br>但是这个函数已经不推荐使用了<br>现在推荐使用<br>java.net.URLEncoder.encode(str,encode);<br>java.net.URLDecoder.decode(str,encode);<br><br>这样就构成了统一的编码格式下面举简单的个例子：<br>在服务器端：<br>String encode=java.net.URLEncoder.encode("大家好","utf-8");<br>//encode=("%E5%A4%A7%E5%AE%B6%E5%A5%BD"<br>String decode=java.net.URLDecoder.decode("%E5%A4%A7%E5%AE%B6%E5%A5%BD","utf-8");<br><br>客户端解码Javascript:<br>decodeURIComponent(xmlHttp.responseText);<br>客户端传送时编码：<br>encodeURIComponent("大家好")<br>或<br>encodeURI("大家好")<br>这样就可以解决中文乱码编码问题了。<br><br>下面方一个最简单的AJAX给大家下载：<br><a href="http://www.blogjava.net/Files/yczz/ajax.rar">点击下载</a><br></span>
<img src ="http://www.blogjava.net/yczz/aggbug/109866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2007-04-11 12:12 <a href="http://www.blogjava.net/yczz/articles/109866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr简介--一个例子(续)</title><link>http://www.blogjava.net/yczz/articles/46819.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 18 May 2006 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/46819.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/46819.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/46819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/46819.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/46819.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: dwr简介--一个例子(续)														TableModelBean.java 这是核心业务类，既要被Action使用又要被dwr使用。由于我注释写了一些，所以就不详细介绍了public class TableModelBean {        //表格的第一列    public static final int COLUMN_1 = 0;        //表...&nbsp;&nbsp;<a href='http://www.blogjava.net/yczz/articles/46819.html'>阅读全文</a><img src ="http://www.blogjava.net/yczz/aggbug/46819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2006-05-18 14:59 <a href="http://www.blogjava.net/yczz/articles/46819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr简介--一个例子(续二) </title><link>http://www.blogjava.net/yczz/articles/46820.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 18 May 2006 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/46820.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/46820.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/46820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/46820.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/46820.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: dwr简介--一个例子(续二) 														页面部分有几个重要的文件：login.jsp -- 登陆画面showtable.jsp -- 显示table的画面showtable.js -- 显示table页用到的javascript下面是login.jsp																								&lt;										body				...&nbsp;&nbsp;<a href='http://www.blogjava.net/yczz/articles/46820.html'>阅读全文</a><img src ="http://www.blogjava.net/yczz/aggbug/46820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2006-05-18 14:59 <a href="http://www.blogjava.net/yczz/articles/46820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dwr简介--一个例子(结合Struts) </title><link>http://www.blogjava.net/yczz/articles/46795.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 18 May 2006 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/46795.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/46795.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/46795.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/46795.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/46795.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上一篇我主要介绍dwr的概况。这一篇我用dwr做了个可以不刷新页面就更新的表格。运行环境：windows xp pro sp2j2sdk1.2.4_03weblogic8.1struts1.2.4开发工具eclipse3.0其实dwr和struts没有什么关系，只不过最近我们项目组在用struts作东西。我就顺便用把我的程序建立在Struts上。主要文件。dwr.jar--dwr的类库包strut...&nbsp;&nbsp;<a href='http://www.blogjava.net/yczz/articles/46795.html'>阅读全文</a><img src ="http://www.blogjava.net/yczz/aggbug/46795.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2006-05-18 13:48 <a href="http://www.blogjava.net/yczz/articles/46795.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转帖DWR学习 </title><link>http://www.blogjava.net/yczz/articles/46793.html</link><dc:creator>飞鸟</dc:creator><author>飞鸟</author><pubDate>Thu, 18 May 2006 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/yczz/articles/46793.html</guid><wfw:comment>http://www.blogjava.net/yczz/comments/46793.html</wfw:comment><comments>http://www.blogjava.net/yczz/articles/46793.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yczz/comments/commentRss/46793.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yczz/services/trackbacks/46793.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed" cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td valign="top">http://getahead.ltd.uk/dwr/ <br />这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地方确实很是先进.比如动态生成javascript代码;隐藏的http协议;javascript于java代码交互的是javascript对象(或字符串)等. <br />以下是我临时译的一些东西.本来想全译,发现dwr实在是简单,就随便写了.英文居差,现一把. <br /><br />1、DWR: Easy AJAX for JAVA <br /><br />作为一个java open source library,DWR可以帮助开发人员完成应用AJAX技术的web程序。它可以让浏览器上的javascript方法调用运行在web服务器上java方法。 <br /><br />DWR主要由两部门组成。javascript与web服务器通信并更新web页；运行在web服务器的Servlet处理请求并把响应发回浏览器。 <br /><br />DWR采用新颖的方法实现了AJAX(本来也没有确切的定义)，在java代码基础上动态的生成javascript代码。web开发者可以直接调用这些javascript代码，然而真正的代码是运行在web服务器上的java code。出与安全考虑，开发者必须配置哪些java class暴露给DWR.(dwr.xml) <br /><br />这种从(java到javascript)调用机制给用户一种感觉，好象常规的RPC机制，或RMI or SOAP.但是它运行在web上，不需要任何浏览器插件。 <br /><br />DWR不认为浏览器和web服务器之间协议重要，把系统界面放在首位。最大挑战是java method call的同步特征与ajax异步特性之间的矛盾。在异步模型里，结果只有在方法结束后才有效。DWR解决了这个问题，把回调函数当成参数传给方法，处理完成后，自动调用回调方法。 <br /><br />这个图表显示了，通过javascript事件，DWR能改变select的内容，当然这些内容由java代码返回。 javascript函数Data.getOptions(populateList)由DWR动态生成，这个函数会调用java class Data类的方法。DWR处理如何远程调用，包括转换所有的参数和返回的结果（javascript\java）。java方法执行完后，执行回调方法populateList。在整个过程中我们就想在用本地的方法一样。 <br /><br />2、Getting Started <br /><br />废话少说，试试就ok了。 <br />web.xml <br /><br />&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt; <br />&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt; <br /><br />&lt;web-app id="dwr"&gt; <br />&lt;servlet&gt; <br />&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt; <br />&lt;/servlet&gt; <br />&lt;servlet-mapping&gt; <br />&lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt; <br />&lt;/web-app&gt; <br /><br />dwr.xml 与web.xml同目录 <br />&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt; <br />&lt;dwr&gt; <br />&lt;allow&gt; <br />&lt;create creator="new" javascript="JDate"&gt; <br />&lt;param name="class" value="/oblog312/java.util.Date"/&gt; <br />&lt;/create&gt; <br />&lt;/allow&gt; <br />&lt;/dwr&gt; <br /><br />index.html <br />&lt;html&gt; <br />&lt;head&gt; <br />&lt;title&gt;DWR - Test Home&lt;/title&gt; <br />&lt;script type='text/javascript' src="/oblog312/dwr/interface/JDate.js"&gt;&lt;/script&gt; <br />&lt;script type='text/javascript' src="/oblog312/dwr/engine.js"&gt;&lt;/script&gt; <br />&lt;script&gt; <br />function init(){ <br />JDate.getYear(load); <br />} <br />function load(data){ <br />alert(data+1900+'年') <br />} <br />&lt;/script&gt; <br />&lt;/head&gt; <br />&lt;body onload="init()"&gt; <br />&lt;/body&gt; <br />&lt;/html&gt; <br /><br />dwr.jar 下载放lib下 <br /><br />完了，什么，够了，就这些。访问ok! <br />3、Examples <br />http://www.aboutmyhealth.org/ 这不是Google Suggest吗!ok. <br />4、源码浅析 <br />dwr的设计很象webwork2的设计,隐藏http协议,扩展性，兼容性及强。 <br /><br />通过研究uk.ltd.getahead.dwr.DWRServlet这个servlet来研究下dwr到底是如何工作滴。 <br /><br />java代码:  <br /><br />web.xml配置 <br />&lt;servlet&gt; <br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />    &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt; <br />  &lt;/servlet&gt; <br />  &lt;servlet-mapping&gt; <br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />    &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt;<br /><br /><br />这样所有的/dwr/*所有请求都由这个servlet来处理，它到底处理了些什么能。我们还以上面最简单的例子来看。 <br />1、 web服务器启动，DWRServlet init()方法调用，init主要做了以下工作。 <br />设置日志级别、实例化DWR用到的单例类（这些类在jvm中只有一个实例对象）、读去配置文件（包括dwr.jar包中的dwr.xml,WEB-INF/dwr.xml. config*.xml）。 <br />2、请求处理 <br />DWRServlet.doGet, doPost方法都调用processor.handle(req, resp)方法处理。Processor对象在init()方法中已经初始化了。 <br />java代码:  <br /><br />public void handle(HttpServletRequest req, HttpServletResponse resp) <br />        throws IOException <br />    { <br />        String pathinfo = req.getPathInfo(); <br />        if(pathinfo == null || pathinfo.length() == 0 || pathinfo.equals("/")) <br />        { <br />            resp.sendRedirect(req.getContextPath() + req.getServletPath() + '/' + "index.html"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/index.html")) <br />        { <br />            doIndex(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/test/")) <br />        { <br />            doTest(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/engine.js")) <br />        { <br />            doFile(resp, "engine.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/util.js")) <br />        { <br />            doFile(resp, "util.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.equalsIgnoreCase("/deprecated.js")) <br />        { <br />            doFile(resp, "deprecated.js", "text/javascript"); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/interface/")) <br />        { <br />            doInterface(req, resp); <br />        } else <br />        if(pathinfo != null &amp;&amp; pathinfo.startsWith("/exec")) <br />        { <br />            doExec(req, resp); <br />        } else <br />        { <br />            log.warn("Page not found. In debug/test mode try viewing /[WEB-APP]/dwr/"); <br />            resp.sendError(404); <br />        } <br />    }<br /><br /><br />哦。这些恍然大悟。dwr/*处理的请求也就这几种。 <br />（1）dwr/index.html，dwr/test/这种只能在debug模式下使用，调试用。 <br />dwr/engine.js，dwr/util.js，dwr/deprecated.js当这个请求到达，从dwr.jar包中读取文件流，响应回去。（重复请求有缓存） <br />（2）当dwr/interface/这种请求到来，（例如我们在index.html中的 &lt;script type='text/javascript' src="/oblog312/dwr/interface/JDate.js"&gt;&lt;/script&gt;）DWR做一件伟大的事。把我们在WEB-INF/dwr.xml中的 <br />&lt;create creator="new" javascript="JDate"&gt; <br />&lt;param name="class" value="/oblog312/java.util.Date"/&gt; <br />&lt;/create&gt; <br />java.util.Date转化为javascript函数。 <br />http://localhost:port/simpledwr/dwr/interface/JDate.js看看吧。 <br />细节也比较简单，通过java反射，把方法都写成javascript特定的方法。（我觉得这些转换可以放到缓存里，下次调用没必要再生成一遍，不知道作者为什么没这样做）。 <br />（3）dwr/exec <br />javascript调用方法时发送这种请求，可能是XMLHttpRequest或IFrame发送。 <br />当然，javascript调用的方法签名与java代码一致，包括参数，还有javascript的回调方法也传到了服务器端，在服务器端很容易实现。回调方法的java的执行结果 返回类似 &lt;script&gt;callMethod(结果)&lt;script&gt;的javascript字符串,在浏览器执行。哈，一切就这么简单，巧妙。 <br /><br />dwr的设计构思很是巧妙。 <br />第一、把java类转化为javascript类由dwr自动完成，只需简单的配置。 <br />第二、应用起来极其简单。开发者不要该服务器代码就可以集成。 <br />第三、容易测试。和webwork一样，隐藏的http协议。 <br />第四、及强扩展性。例如与spring集成，只需修改一点代码。 <br />第五、性能。就我与jason,等简单比较，dwr性能可能是最好的。</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/yczz/aggbug/46793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yczz/" target="_blank">飞鸟</a> 2006-05-18 13:47 <a href="http://www.blogjava.net/yczz/articles/46793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>