﻿<?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-BeanSoft's Java Blog-随笔分类-AJAX</title><link>http://www.blogjava.net/beansoft/category/19463.html</link><description>MyEclipse 6, Java EE 5, JSPWiki, Spring, Struts, Hibernate, JPA, SWT, Swing, AJAX, JavaScript, Netbeans</description><language>zh-cn</language><lastBuildDate>Fri, 25 Apr 2008 12:34:16 GMT</lastBuildDate><pubDate>Fri, 25 Apr 2008 12:34:16 GMT</pubDate><ttl>60</ttl><item><title>转载：[原创/整理]首次发布DWR中文文档.PDF </title><link>http://www.blogjava.net/beansoft/archive/2008/04/25/196033.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 25 Apr 2008 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/04/25/196033.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/196033.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/04/25/196033.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/196033.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/196033.html</trackback:ping><description><![CDATA[
		<a id="viewpost1_TitleUrl" href="/jorwen/archive/2007/02/08/98857.html">
				<font color="#000080">[原创/整理]首次发布DWR中文文档.PDF</font>
		</a>
		<br />
		<br />v0.9 <a title="点击下载" href="/Files/jorwen/DWR中文文档v0.9.rar"><font color="#ff0000">点击下载</font></a><br /><br />有些错别字，我会在以后版本更正<br /><a href="/jorwen/archive/2007/02/08/98857.html">http://www.blogjava.net/jorwen/archive/2007/02/08/98857.html</a><img src ="http://www.blogjava.net/beansoft/aggbug/196033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-04-25 18:02 <a href="http://www.blogjava.net/beansoft/archive/2008/04/25/196033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐Ext的教程：ExtJS2.0实用简明教程</title><link>http://www.blogjava.net/beansoft/archive/2008/04/13/192514.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sun, 13 Apr 2008 02:03:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/04/13/192514.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/192514.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/04/13/192514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/192514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/192514.html</trackback:ping><description><![CDATA[<p>有人询问除了Ext Grid视频教程之外的基础教程，本着不重复发明轮子的原则，特意推荐开源框架EasyJWeb的成员之一冷雨制作的文章，适合入门学习。特此转载，出处：<a title="http://www.easyjf.com/blog/html/20080217/1179671.html" href="http://www.easyjf.com/blog/html/20080217/1179671.html">http://www.easyjf.com/blog/html/20080217/1179671.html</a></p> <h4><a>ExtJS2.0实用简明教程</a></h4><a href="http://www.easyjf.com/blog/html/20080217/1146886.html">序</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146887.html">ExtJS简介</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146888.html">开始ExtJS</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146888.html">获得ExtJS</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146889.html">应用ExtJS</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179648.html">ExtJS版的Hello</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179649.html">Ext框架基础及核心简介</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179649.html">Ext类库简介</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179651.html">ExtJS的组件</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179653.html">组件的使用</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179656.html">组件的配置属性</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179658.html">事件处理</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179661.html">使用面板</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179661.html">Panel</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179662.html">工具栏Toolbar</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179663.html">选项面板TabPanel</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179665.html">视图区ViewPort</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179667.html">窗口Window及对话框MessageBox</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179667.html">窗口基本应用</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179669.html">窗口分组</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179670.html">对话框</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146890.html">布局layout</a><br><a href="http://www.easyjf.com/blog/html/20080217/1146890.html">布局概述</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179650.html">Border区域布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179652.html">Column列布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179654.html">Fit布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179655.html">Form布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179657.html">Accordion布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179659.html">Card布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179660.html">Table布局及其它布局</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179664.html">使用表格控件Grid</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179664.html">基本表格GridPanel</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179666.html">可编辑的表格EditorGridPanel</a><br><a href="http://www.easyjf.com/blog/html/20080217/1179668.html">与服务器交互</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245187.html">数据存储Stroe</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245185.html">Stroe</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245189.html">DataReader</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245188.html">DataProxy与自定义Store</a> <p><a href="http://www.easyjf.com/blog/html/20080224/1245186.html">使用树控件TreePanel</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245186.html">TreePanel基本使用</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245192.html">TreeNode</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245193.html">TreeLoader</a><br><a href="http://www.easyjf.com/blog/html/20080224/1245194.html">自定义TreeLoader</a> <p>使用表单Forms<br>FormPanel基本应用<br>FieldSet<br>基本Field<br>ComboBox<br>DateField<br>TimeField<br>HtmlEditor<br>拖放(DD)<br>拖放的基本应用<br>DD<br>DDTarget<br>实用工具(Util)<br>Ext类<br>Ext.Ajax类<br>Ext.util.Format类<br>Date扩展<br>String扩展<br>Function扩展<br>其它 <img src ="http://www.blogjava.net/beansoft/aggbug/192514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-04-13 10:03 <a href="http://www.blogjava.net/beansoft/archive/2008/04/13/192514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分享两个小代码：ibatis简单示例和在浏览器中同时选中多文件上传</title><link>http://www.blogjava.net/beansoft/archive/2008/04/02/190341.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 02 Apr 2008 04:55:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/04/02/190341.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/190341.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/04/02/190341.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/190341.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/190341.html</trackback:ping><description><![CDATA[
		<p>本文代码一概以不担保，免责（也就是不管你遇到任何问题，都与本人无关）的方式提供，内容仅供参考。</p>
		<p>
				<font color="#ff0000">
						<strong>友情提示</strong>
						<strong>: </strong>
						<strong>下载微软网盘文件时关闭下载工具</strong>
						<strong>,  </strong>
						<strong>否则你将得到错误的文件</strong>
						<strong>, </strong>
						<strong>双击</strong>
						<strong> EXE </strong>
						<strong>会出来</strong>
						<strong> DOS </strong>
						<strong>窗口</strong>
						<strong>. </strong>
						<strong>正确操作是点击文件名后能看到显示下载链接和文件大小等信息</strong>
						<strong>.</strong>
				</font>
		</p>
		<p> </p>
		<p>
				<a title="http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/ibatis/ibatis.zip" href="http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/ibatis/ibatis.zip">http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/ibatis/ibatis.zip</a>  IMB 这是个我写的iBATIS的入门单表映射例子，MySQL开发，注释完整，表还是我常用的那个 Student.</p>
		<p>示例文件：</p>
		<p> </p>
		<blockquote>
				<p>&lt;?xml version="1.0" encoding="UTF-8" ?&gt; 
</p>
				<p>&lt;!DOCTYPE sqlMap      <br />    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      <br />    "<a href="http://ibatis.apache.org/dtd/sql-map-2.dtd&quot;" temp_href="http://ibatis.apache.org/dtd/sql-map-2.dtd&quot;">http://ibatis.apache.org/dtd/sql-map-2.dtd"</a>&gt; 
</p>
				<p>&lt;!-- 此命名空间在配置文件较多时可以起到包的作用，参考 useStatementNamespaces 相关资料 --&gt;<br />&lt;sqlMap namespace="Student"&gt; 
</p>
				<p>  &lt;!-- 使用类型的别名可以避免在下面的 SQL 映射语句中每次都得使用完整类名称 --&gt;<br />  &lt;typeAlias alias="Student" type="entity.Student"/&gt; 
</p>
				<p>  &lt;!-- 结果集映射描述了从查询结果的列映射到类属性的方式. 当然这个结果映射配置不是必须的，<br />  如果列名(或者查询结果的列别名）和属性相匹配的话，会进行自动转换. <br />  &lt;resultMap id="StudentResult" class="Student"&gt;<br />    &lt;result property="id" column="USER_ID"/&gt;<br />    &lt;result property="username" column="USER_NAME"/&gt;<br />    &lt;result property="password" column="USER_PASSWORD"/&gt;<br />    &lt;result property="age" column="USER_AGE"/&gt;<br />  &lt;/resultMap&gt;<br />  --&gt; 
</p>
				<p>  &lt;!-- 不带参数选中数据并将结果映射到 Student（对应类 entity.Student）. --&gt;<br />  &lt;select id="selectAllStudent" resultClass="Student"&gt;<br />    select * from Student<br />  &lt;/select&gt; 
</p>
				<p>  &lt;!-- 根据ID选择数据并映射到类，带有一个属性名为 id 的参数 --&gt;<br />  &lt;select id="selectStudentById" parameterClass="int" resultClass="Student"&gt;<br />    select<br />      *<br />    from Student<br />    where ID = #id#<br />  &lt;/select&gt;<br />  &lt;!-- 插入数据示例，使用了 Student 类作为参数 --&gt;<br />  &lt;insert id="insertStudent" parameterClass="Student"&gt;<br />    insert into Student (<br />      username,<br />      password,<br />      age )<br />    values (<br />      #username#, #password#, #age#<br />    )<br />  &lt;/insert&gt; 
</p>
				<p>  &lt;!-- 更新数据示例, 使用了 Student 类作为参数 --&gt;<br />  &lt;update id="updateStudent" parameterClass="Student"&gt;<br />    update Student set<br />      username = #username#,<br />      password = #password#,<br />      age = #age#<br />    where<br />      ID = #id#<br />  &lt;/update&gt; 
</p>
				<p>  &lt;!-- 删除示例, 使用整数作为参数 --&gt;<br />  &lt;delete id="deleteStudentById" parameterClass="int"&gt;<br />    delete from Student where ID = #id#<br />  &lt;/delete&gt; 
</p>
				<p>&lt;/sqlMap&gt;</p>
		</blockquote>
		<p> </p>
		<p>另外，做开发时经常有人希望能在浏览器中一次选中多个文件然后上传（注意是在文件打开框里选中多个，不是一次选一个那种），还带上传队列和进度条。不过这个使用HTML自带的File组件是办不到的，可以使用Applet，或者SWF，或者IE插件来实现。有个开源的是FancyUpload，用SWF实现的。大家可以自己去看例子<a title="http://digitarald.de/playground/uplooad.html" href="http://digitarald.de/playground/uplooad.html">http://digitarald.de/playground/uplooad.html</a> 官方站点 <a title="http://digitarald.de/project/fancyupload/" href="http://digitarald.de/project/fancyupload/">http://digitarald.de/project/fancyupload/</a></p>
		<p>JavaEye上有人把完整代码做了个例子提供下载，并写了个说明，参考：<a href="http://www.javaeye.com/topic/144518">http://www.javaeye.com/topic/144518</a> Ajax+Flash多文件上传之FancyUpload的应用，尊重作者，这第二个代码是原作者写的，我只是转载，欢迎阅读原文获得信息。</p>
		<p>
				<a title="http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/AJAX/fancyupload.rar" href="http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/AJAX/fancyupload.rar">http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/AJAX/fancyupload.rar</a> 21KB </p>
		<p>运行效果示例：</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/ibatis_B4FF/image_8.png">
						<img height="168" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/ibatis_B4FF/image_thumb_3.png" width="711" border="0" />
				</a>
		</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/ibatis_B4FF/image_2.png">
						<img height="420" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/ibatis_B4FF/image_thumb.png" width="563" border="0" />
				</a>
		</p>
		<p>附送美女一张（好像是大旗网的）： </p>
		<p>
				<a title="http://image1.daqi.com/pic_search/original/26956/5927cb911989eaf46bd378c75f6b46e7.jpg" href="http://image1.daqi.com/pic_search/original/26956/5927cb911989eaf46bd378c75f6b46e7.jpg">http://image1.daqi.com/pic_search/original/26956/5927cb911989eaf46bd378c75f6b46e7.jpg</a> 点击看大图</p>
		<p>
				<img height="768" src="http://image1.daqi.com/pic_search/original/26956/5927cb911989eaf46bd378c75f6b46e7.jpg" width="576" />
		</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/190341.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-04-02 12:55 <a href="http://www.blogjava.net/beansoft/archive/2008/04/02/190341.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX 入门视频之 Ext 2.0.1 Grid 增删改 &amp;amp; DWR 1 实例</title><link>http://www.blogjava.net/beansoft/archive/2008/01/27/178052.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sun, 27 Jan 2008 11:34:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2008/01/27/178052.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/178052.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2008/01/27/178052.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/178052.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/178052.html</trackback:ping><description><![CDATA[<p>&nbsp;</p> <p>&nbsp;&nbsp;&nbsp; 说实话, 我也是特别懒的人, 很早就想看看 Ext, 尤其是做一个实时编辑的带后台的表格例子, 一直没能深入, 今天抽时间深入看了看 Ext 的 EditorGrid,可编辑的表格控件,总算凑出来了个实时增删改的例子(不单独弹出添加对话框的那种),带用DWR 1 (不用DWR 2 是因为2个头太大了)开发的后台服务器端,没有整合Spring,JPA啊,Struts,Hibernate等等的流感框架, 这样总的代码非常的小,省得当大家接触到了一些大量的自己不熟悉的框架的时候会产生发晕的感觉,而且那样下来整个例子的源码会远远超过1MB,发布的包更是估计要超过5MB了. 在此之前上网找了好多资料, 然而大部分都是基于 Ext 1 开发, 而 2.0 的呢, 大多又找不到源码下载, 而且其类库比较复杂, 所以今天做它是花了一番功夫,不过当最后的结果出来后, 一切辛苦都显的那么值得了, 学技术,归根到底就是一种学习和总结的能力,您觉得是不是呢(我说的不是发明技术,那个我做不来)?</p> <p>&nbsp;</p> <p><strong>广告:</strong> 如果您或者您所在公司需要 Java EE 或者 AJAX 方面的技术顾问或者培训服务,欢迎联系本人!</p> <p>&nbsp;</p> <p>您可以查看在线演示(不带服务器端代码): <a href="http://beansoft.java-cn.org/ajax/extgrid/">http://beansoft.java-cn.org/ajax/extgrid/</a> </p> <p>源代码下载(带完整注释): <a href="http://beansoft.java-cn.org/ajax/extgrid/extdwrgrid.zip">http://beansoft.java-cn.org/ajax/extgrid/extdwrgrid.zip</a> 778 KB</p> <p>视频下载: <a href="http://beansoft.java-cn.org/ajax/extgrid/ext.exe">http://beansoft.java-cn.org/ajax/extgrid/ext.exe</a> 16.1 MB 43分44秒</p> <p>运行效果:</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_2.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="450" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_thumb.png" width="640" border="0"></a></p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_4.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="101" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_thumb_1.png" width="266" border="0"></a> <a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_6.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="111" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/AJAXMyEclipse6Ext2.0.1DWR1_10F5A/image_thumb_2.png" width="218" border="0"></a> </p> <p>服务器的输出:</p> <blockquote> <p>添加用户 新用户3, 地区:北京<br>修改用户 4的字段:area, 值为:河南南阳<br>修改用户 1的字段:email, 值为:beansoft@126.com22<br>修改用户 3的字段:email, 值为:aa@bb.com22<br>删除用户 2</p></blockquote> <p>核心的代码(无DWR部分,便于大家自测,注意先把Ext类库所在的目录改对了就可以了):  <p>页面的(注意编码是 UTF-8):  <p>&nbsp; <p>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br>&lt;title&gt;表格编辑器示例&lt;/title&gt;  <p>&lt;link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /&gt;  <p>&lt;!-- 图标样式 CSS 信息 --&gt;  <p>&lt;link rel="stylesheet" type="text/css" href="edit-grid2.css" /&gt;  <p>&nbsp;&nbsp;&nbsp; &lt;!-- GC --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- LIBS --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="ext/adapter/ext/ext-base.js"&gt;&lt;/script&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- ENDLIBS --&gt;  <p>&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="ext/ext-all.js"&gt;&lt;/script&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!-- 中文提示信息支持 --&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="ext/source/locale/ext-lang-zh_CN.js"&gt;&lt;/script&gt;  <p>&nbsp;&nbsp;&nbsp; &lt;!-- 本页的功能代码 --&gt;<br>&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript" src="edit-gridnojava.js"&gt;&lt;/script&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--&nbsp; DWR JavaScript 类库 --&gt;<br>&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='/dwrtest/dwr/interface/JUserManager.js'&gt;&lt;/script&gt;<br>&nbsp; &lt;script type='text/javascript' src='/dwrtest/dwr/engine.js'&gt;&lt;/script&gt;  <p>&lt;/head&gt;<br>&lt;body&gt;  <p>&lt;h1&gt;Ext 2.0 &amp;amp; DWR 1表格实时编辑器示例(无Java服务器端)&lt;/h1&gt;<br>&lt;p&gt;这个例子展示了如何创建可编辑的表格控件.&lt;/p&gt;<br>&lt;p&gt;注意脚本没有压缩, 因此便于读者阅读. 点击浏览 &lt;a href="edit-gridnojava.js"&gt;edit-gridnojava.js&lt;/a&gt;.&lt;/p&gt;  <p>&lt;p&gt;表格的数据文件加载自 &lt;a href="users.xml"&gt;users.xml&lt;/a&gt;.&lt;/p&gt;  <p>&lt;!-- 这个默认不显示的下拉选择框必须在这里定义, 因为'地区'列的编辑器需要用它在这里取值 --&gt;<br>&lt;select name="area" id="area" style="display: none;"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;option value="北京"&gt;北京&lt;/option&gt;<br>&nbsp;&nbsp;&nbsp; &lt;option value="河南南阳"&gt;河南南阳&lt;/option&gt;<br>&nbsp;&nbsp;&nbsp; &lt;option value="河北涿州"&gt;河北涿州&lt;/option&gt;<br>&lt;/select&gt;  <p>&lt;!-- 放置可编辑控件的 DIV --&gt;<br>&lt;div id="editor-grid"&gt;&lt;/div&gt;  <p>作者: 刘长炯&lt;br&gt;<br>邮件: beansoft@126.com&lt;br&gt;<br>博客: &lt;a href="<a href="http://beansoft.blogjava.net/&quot;">http://beansoft.blogjava.net/"</a>&gt;<a href="http://beansoft.blogjava.net/">http://beansoft.blogjava.net/</a>&lt;/a&gt;&lt;br&gt; <br>2008-01-27&lt;br&gt;<br>本页面和JS的编码都是 UTF-8.  <p>&lt;/body&gt;<br>&lt;/html&gt;  <p>&nbsp;</p> <p>CSS(自己把图放进去就好了) editor-grid2.css:</p> <p>/** 定义了一些工具栏按钮的 CSS 样式 */<br>.add {<br>&nbsp;&nbsp;&nbsp; background-image:url(./images/add.gif) !important;<br>}  <p>.remove {<br>&nbsp;&nbsp;&nbsp; background-image:url(./images/delete.gif) !important;<br>}  <p>.details {<br>&nbsp;&nbsp;&nbsp; background-image:url(./images/details.gif) !important;<br>}  <p>.user-delete {<br>&nbsp;&nbsp;&nbsp; background-image:url(./images/user_delete.gif) !important;<br>}  <p>&nbsp;</p> <p>以及数据文件 users.xml</p> <p>&lt;?xml version="1.0" encoding="GBK"?&gt;<br>&lt;users&gt;<br>&nbsp; &lt;user&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;id&gt;1&lt;/id&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name&gt;刘长炯&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;area&gt;河南南阳&lt;/area&gt;<br>&nbsp;&nbsp;&nbsp; &lt;email&gt;beansoft@126.com&lt;/email&gt;<br>&nbsp;&nbsp;&nbsp; &lt;age&gt;28&lt;/age&gt;<br>&nbsp;&nbsp;&nbsp; &lt;sex&gt;true&lt;/sex&gt;<br>&nbsp;&nbsp;&nbsp; &lt;birth&gt;1980/01/01&lt;/birth&gt;<br>&nbsp; &lt;/user&gt;<br>&nbsp;&nbsp;&nbsp; &lt;user&gt;<br>&nbsp;&nbsp;&nbsp; &lt;id&gt;2&lt;/id&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name&gt;BeanSoft&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;area&gt;北京&lt;/area&gt;<br>&nbsp;&nbsp;&nbsp; &lt;email&gt;beansoft@126.com&lt;/email&gt;<br>&nbsp;&nbsp;&nbsp; &lt;age&gt;28&lt;/age&gt;<br>&nbsp;&nbsp;&nbsp; &lt;sex&gt;true&lt;/sex&gt;<br>&nbsp;&nbsp;&nbsp; &lt;birth&gt;1980/01/01&lt;/birth&gt;<br>&nbsp; &lt;/user&gt;<br>&nbsp;&nbsp;&nbsp; &lt;user&gt;<br>&nbsp;&nbsp;&nbsp; &lt;id&gt;3&lt;/id&gt;<br>&nbsp;&nbsp;&nbsp; &lt;name&gt;MM&lt;/name&gt;<br>&nbsp;&nbsp;&nbsp; &lt;area&gt;河北涿州&lt;/area&gt;<br>&nbsp;&nbsp;&nbsp; &lt;email&gt;aa@bb.com&lt;/email&gt;<br>&nbsp;&nbsp;&nbsp; &lt;age&gt;22&lt;/age&gt;<br>&nbsp;&nbsp;&nbsp; &lt;sex&gt;false&lt;/sex&gt;<br>&nbsp;&nbsp;&nbsp; &lt;birth&gt;1985/01/01&lt;/birth&gt;<br>&nbsp; &lt;/user&gt;  <p>&lt;/users&gt;</p> <p>后台的Java类,很简单的模拟数据库操作:</p> <p>/**<br>* 基于 DWR 的用户管理类示例, 数据库操作和数据传输协议的选择可以根据情况自行加入,<br>* 推荐 JPA + JSON 或者 Hibernate + XML.<br>* <br>* @author BeanSoft<br>* 2008-01-27<br>*/<br>public class UserManager {<br>&nbsp;&nbsp;&nbsp; private int counter = 3;<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 虚拟的添加用户功能.<br>&nbsp;&nbsp;&nbsp;&nbsp; * TODO: 封装并传递所有参数.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param username 用户名<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param area 地区<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return 新的数据ID<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public int addUser(String username, String area) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("添加用户 " + username + ", 地区:" + area);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ++counter;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 虚拟的删除用户操作.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param userid 用户编号<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return 成功或者失败<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public boolean removeUser(int userid) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("删除用户 " + userid);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new java.util.Random().nextBoolean();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 虚拟的修改用户操作.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param userid 用户编号<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param field 改变的字段<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param newValue 新的取值<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return 是否更改成功<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public boolean editUser(int userid, String field, String newValue) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("修改用户 " + userid + "的字段:" + field + ", 值为:" + newValue);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 模拟网络延迟, 停2秒<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread.sleep(2000);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (InterruptedException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // TODO Auto-generated catch block<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new java.util.Random().nextBoolean();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 虚拟的删除所有用户的操作.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return 是否成功<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public boolean removeAllUser() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return new java.util.Random().nextBoolean();<br>&nbsp;&nbsp;&nbsp; }<br>}  <p>DWR的配置文件 dwr.xml:</p> <p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br>&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" <br>"<a href="http://www.getahead.ltd.uk/dwr/dwr10.dtd&quot;">http://www.getahead.ltd.uk/dwr/dwr10.dtd"</a>&gt;  <p>&lt;dwr&gt;  <p>&nbsp; &lt;init&gt;<br>&nbsp; &lt;/init&gt;  <p>&nbsp; &lt;allow&gt;<br>&nbsp;&nbsp;&nbsp; &lt;!--&nbsp; 将 Java 类 UserManager 映射为 JavaScript 里面的对象 JUserManager --&gt;<br>&nbsp;&nbsp;&nbsp; &lt;create creator="new" javascript="JUserManager" scope="application"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="class" value="UserManager"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/create&gt;<br>&lt;/allow&gt;  <p>&nbsp; &lt;signatures&gt;<br>&nbsp; &lt;![CDATA[<br>&nbsp; import java.util.*;<br>&nbsp; import uk.ltd.getahead.testdwr.*;  <p>&nbsp; ]]&gt;<br>&nbsp; &lt;/signatures&gt;  <p>&lt;/dwr&gt;  <p>&nbsp;</p> <p>最后,核心的 JS 文件 </p> <p>edit-gridnojava.js</p> <p>/*<br>* Ext JS Library 2.0.1<br>* Copyright(c) 2006-2008, Ext JS, LLC.<br>* licensing@extjs.com<br>* <br>* <a href="http://extjs.com/license">http://extjs.com/license</a><br>*/  <p>/**<br>* 无 DWR Java 后台静态页面演示版本.<br>* 简体中文 Demo 制作: 刘长炯 beansoft@126.com<br>* <a href="http://beansoft.blogjava.net/">http://beansoft.blogjava.net/</a><br>*/  <p>Ext.onReady(function(){<br>&nbsp;&nbsp;&nbsp; Ext.QuickTips.init();  <p>&nbsp;&nbsp;&nbsp; // 格式化日期显示<br>&nbsp;&nbsp;&nbsp; function formatDate(value){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value ? value.dateFormat('Y, M d') : '';<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; // 格式化性别显示,这是个 renderer, 渲染器<br>&nbsp;&nbsp;&nbsp; function formatSex(value) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return value ? "男" : "女";<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; // 弄个缩写的别名<br>&nbsp;&nbsp;&nbsp; var fm = Ext.form;  <p>&nbsp;&nbsp;&nbsp; // 列模型定义了表格所有列的信息, <br>&nbsp;&nbsp;&nbsp; // dataIndex 将特定的列映射到数据源(Data Store)中的数据列(在后面创建)<br>&nbsp;&nbsp;&nbsp; var cm = new Ext.grid.ColumnModel([<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:'id',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "编号",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'id',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 50<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:'name',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "用户名",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'name',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 250,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.TextField({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowBlank: false// 不能为空<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "地区",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'area',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 100,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new Ext.form.ComboBox({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typeAhead: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; triggerAction: 'all',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; transform:'area',// 对应的选择框的ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lazyRender:true,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; listClass: 'x-combo-list-small'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "电子邮件",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'email',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 220,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; align: 'left',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.TextField({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowBlank: true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "年龄",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'age',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 70,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; align: 'right',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.NumberField({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowBlank: true,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allowNegative: false,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxValue: 100<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "生日",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'birthDay',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 95,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer: formatDate,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.DateField({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; format: 'y/m/d',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minValue: '1970/01/01',//最小值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disabledDays: [0, 6],// 禁止选择的日期<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disabledDaysText: '不许周末出生孩子'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; header: "性别",<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dataIndex: 'sex',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width: 95,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderer: formatSex,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; editor: new fm.Checkbox()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ]);  <p>&nbsp;&nbsp;&nbsp; // 默认情况下列是可排序的<br>&nbsp;&nbsp;&nbsp; cm.defaultSortable = true;  <p>&nbsp;&nbsp;&nbsp; // 定义一个用户对象,这样便于我们动态的添加记录,虽然也可以设置成匿名内置对象<br>&nbsp;&nbsp;&nbsp; var User = Ext.data.Record.create([<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 下面的 "name" 匹配读到的标签名称, 除了 "birthDay",它被映射到标签 "birth"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'id', type: 'int' },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'name', type: 'string'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'area'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'email', type: 'string'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'age', type: 'int'},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // automatic date conversions<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'birthDay', mapping: 'birth', type: 'date', dateFormat: 'Y/m/d'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {name: 'sex', type: 'bool'}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]);  <p>&nbsp;&nbsp;&nbsp; // 创建 Data Store<br>&nbsp;&nbsp;&nbsp; var store = new Ext.data.Store({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 使用 HTTP 加载<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: 'users.xml',  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 因为返回值是 XML, 所以我们创建一个解析器<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader: new Ext.data.XmlReader({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 记录必须包含 "user" 标签<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; record: 'user'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, User),  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sortInfo:{field:'name', direction:'ASC'}// 排序信息<br>&nbsp;&nbsp;&nbsp; });  <p>&nbsp;&nbsp;&nbsp; // 创建编辑器表格<br>&nbsp;&nbsp;&nbsp; var grid = new Ext.grid.EditorGridPanel({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store: store,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cm: cm,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; renderTo: 'editor-grid',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:800,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; height:300,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; autoExpandColumn:'name',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:'用户管理',// 标题<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; frame:true,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clicksToEdit:1,//设置点击几次才可编辑<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),//设置单行选中模式, 否则将无法删除数据  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 顶部工具栏按钮<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tbar: [<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '添加用户',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls:'add',//按钮图标的CSS名称<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){// 点击按钮执行的操作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var n = grid.getStore().getCount();// 获得总行数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var p = new User({<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id: n + 1,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name: '新用户' + n,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; area: '北京',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email: 'beansoft@126.com',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; age: 20,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; birthDay: (new Date()).clearTime(),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sex: true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid.stopEditing();// 停止编辑<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; store.insert(n, p);// 插入到最后一行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grid.startEditing(n, 1);// 开始编辑1单元格<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '查看所选',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls: 'details',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var recordtoedit = grid.getSelectionModel().getSelected();// 返回值为 Record 类型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(recordtoedit) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.Msg.alert('查看选中', "您现在选中的用户其名字为:" + recordtoedit.get("name"));// 取得用户名<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // alert("您现在选中的用户其名字为:" + recordtoedit.get("name"));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '删除所选',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls:'remove',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var record = grid.getSelectionModel().getSelected();// 返回值为 Record 类型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!record){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.Msg.alert("提示","请先选择要删除的行!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 弹出对话框警告<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(record) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.MessageBox.confirm('确认删除', <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '你真的要删除所选用户吗?', <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function(btn) {<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; if(btn == 'yes') {// 选中了是按钮<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; // 更新界面, 来真正删除数据<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; store.remove(record);<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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text: '删除所有',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iconCls: 'user-delete',<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; handler : function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.MessageBox.confirm('确认删除', <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '你真的要删除所有用户信息吗?', <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function(btn) {<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; if(btn == 'yes') {// 选中了是按钮<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; // 更新界面, 来真正删除数据<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; store.removeAll();<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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br>&nbsp;&nbsp;&nbsp; });  <p>&nbsp;&nbsp;&nbsp; // 单元格编辑后事件处理<br>&nbsp;&nbsp;&nbsp; grid.on("afteredit", afterEdit, grid);<br>&nbsp;&nbsp;&nbsp; // 事件处理函数<br>&nbsp;&nbsp;&nbsp; function afterEdit(e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var record = e.record;// 被编辑的记录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 显示等待对话框<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.Msg.wait("请等候", "修改中", "操作进行中...");  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 更新界面, 来真正删除数据<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.Msg.alert('您成功修改了用户信息', "被修改的用户是:" + e.record.get("name") + "\n 修改的字段是:" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + e.field);// 取得用户名<br>&nbsp;&nbsp;&nbsp; };  <p>&nbsp;&nbsp;&nbsp; // 触发数据加载<br>&nbsp;&nbsp;&nbsp; store.load();<br>});  <img src ="http://www.blogjava.net/beansoft/aggbug/178052.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2008-01-27 19:34 <a href="http://www.blogjava.net/beansoft/archive/2008/01/27/178052.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>翻译: MyEclipse AJAX 调试教程(含官方视频)</title><link>http://www.blogjava.net/beansoft/archive/2007/11/22/162498.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 22 Nov 2007 15:52:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/11/22/162498.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/162498.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/11/22/162498.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/162498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/162498.html</trackback:ping><description><![CDATA[<p>这是 MyEclipse 帮助文档中的内容的翻译, 点击菜单 Help -&gt; Contents 可以看到 MyEclipse 的全部英文帮助文档.</p> <p>在线阅读(完整内容含 Flash 动画): <a href="http://beansoft.java-cn.org/myeclipse_doc_cn/ajaxtutorial/">http://beansoft.java-cn.org/myeclipse_doc_cn/ajaxtutorial/</a> </p> <p>下载: <a href="http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/MyEclipse中文文档/ajaxtutorial.zip">http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/MyEclipse中文文档/ajaxtutorial.zip</a> 1.53 MB&nbsp; </p> <h3><strong><font color="#ff0000">友情提示: 下载微软网盘文件时关闭下载工具,&nbsp; 否则你将得到错误的文件, 双击 EXE 会出来 DOS 窗口. 正确操作是点击文件名后能看到显示下载链接和文件大小等信息.</font> </strong></h3> <p>翻译: 刘长炯 <a href="mailto:BeanSoft@126.com">BeanSoft@126.com</a><br>Blog: <a href="http://www.blogjava.net/beansoft/">http://www.blogjava.net/beansoft/</a><br>日期: 2007-11-22<br>声明: 中文文字版权归 刘长炯 所有, 原文及相关的图片等资源的版权归原作者 Genuitec L.L.C 公司所有.  <h3>目录</h3> <ol> <li>简介 <li>建议的听众 <li>系统需求 <li>AJAX Debugging <li>小结 <li>常见问题 FAQ <li>资源 <li>反馈</li></ol> <p>&nbsp;</p> <p>本人原创 MyEclipse 6 帮助文档中文版集中下载  <p><a title="http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/MyEclipse中文文档" href="http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/MyEclipse中文文档">http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/MyEclipse中文文档</a></p><img src ="http://www.blogjava.net/beansoft/aggbug/162498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-11-22 23:52 <a href="http://www.blogjava.net/beansoft/archive/2007/11/22/162498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BeanSoft 的 AJAX 视频, 电子书集中下载</title><link>http://www.blogjava.net/beansoft/archive/2007/11/05/158174.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 05 Nov 2007 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/11/05/158174.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/158174.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/11/05/158174.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/158174.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/158174.html</trackback:ping><description><![CDATA[<p>BeanSoft 的 AJAX 视频, 电子书集中下载</p> <p>陆续上传中, 请关注:</p> <p><a title="http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/AJAX" href="http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/AJAX">http://cid-519b3f7aa2172030.skydrive.live.com/browse.aspx/Public/AJAX</a></p><img src ="http://www.blogjava.net/beansoft/aggbug/158174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-11-05 09:30 <a href="http://www.blogjava.net/beansoft/archive/2007/11/05/158174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>改进后的第一次访问弹出欢迎仿MSN通知的代码</title><link>http://www.blogjava.net/beansoft/archive/2007/10/26/156062.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 26 Oct 2007 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/10/26/156062.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/156062.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/10/26/156062.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/156062.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/156062.html</trackback:ping><description><![CDATA[<div>每次访问都弹出有点太扰民了, 而且导致鼠标滚轮不可用. 现在改成访问时只在第一次弹出一次. 用 cookie 做判断.</div> <div><pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">&lt;SCRIPT&gt;
<span style="color: #0000ff">function</span> WebFXCookie() {
    <span style="color: #0000ff">if</span> (document.cookie.length) { <span style="color: #0000ff">this</span>.cookies = <span style="color: #006080">' '</span> + document.cookie; }
}

WebFXCookie.prototype.setCookie = <span style="color: #0000ff">function</span> (key, value) {
    document.cookie = key + <span style="color: #006080">"="</span> + escape(value);
}

WebFXCookie.prototype.getCookie = <span style="color: #0000ff">function</span> (key) {
    <span style="color: #0000ff">if</span> (<span style="color: #0000ff">this</span>.cookies) {
        <span style="color: #0000ff">var</span> start = <span style="color: #0000ff">this</span>.cookies.indexOf(<span style="color: #006080">' '</span> + key + <span style="color: #006080">'='</span>);
        <span style="color: #0000ff">if</span> (start == -1) { <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>; }
        <span style="color: #0000ff">var</span> end = <span style="color: #0000ff">this</span>.cookies.indexOf(<span style="color: #006080">";"</span>, start);
        <span style="color: #0000ff">if</span> (end == -1) { end = <span style="color: #0000ff">this</span>.cookies.length; }
        end -= start;
        <span style="color: #0000ff">var</span> cookie = <span style="color: #0000ff">this</span>.cookies.substr(start,end);
        <span style="color: #0000ff">return</span> unescape(cookie.substr(cookie.indexOf(<span style="color: #006080">'='</span>) + 1, cookie.length - cookie.indexOf(<span style="color: #006080">'='</span>) + 1));
    }
    <span style="color: #0000ff">else</span> { <span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span>; }
}
<span style="color: #0000ff">var</span> webFXCookie = <span style="color: #0000ff">new</span> WebFXCookie();
webFXCookie.setCookie(<span style="color: #006080">"popupViewed"</span>, <span style="color: #006080">"yes"</span>);

<span style="color: #0000ff">if</span>(webFXCookie.getCookie(<span style="color: #006080">"popupViewed"</span>)  != <span style="color: #006080">"yes"</span>) {

      <span style="color: #0000ff">var</span> oPopup;
      <span style="color: #0000ff">try</span> {
      oPopup = window.createPopup();
      } <span style="color: #0000ff">catch</span>(e) {
      window.status=<span style="color: #006080">'弹出通知消息仅能用于 IE 下!'</span>;
      }

      <span style="color: #0000ff">var</span> popTop=10;
      <span style="color: #0000ff">var</span> mytime;

      <span style="color: #0000ff">function</span> popmsg(msgstr){
      <span style="color: #0000ff">if</span>(!oPopup) {
        <span style="color: #0000ff">return</span>;
      }
      oPopup.document.body.innerHTML = msgstr;
      popshow();
      }

      <span style="color: #0000ff">function</span> popshow(){
      <span style="color: #008000">//window.status=popTop;</span>
      <span style="color: #0000ff">if</span>(popTop &gt; 1720){
      clearTimeout(mytime);
      oPopup.hide();
      <span style="color: #0000ff">return</span>;
      } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(popTop&gt;=1720 - 108 &amp;&amp; popTop&lt;= 1720){
        oPopup.show(screen.width-200,screen.height, 193, 1720 - popTop);
      }<span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(popTop&gt;=1500 &amp;&amp;popTop&lt; 1720 - 108){
      oPopup.show(screen.width-200, screen.height - 220  + (popTop - 1500), 193, 108);
      } <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(popTop&lt;=108){
      oPopup.show(screen.width-200, screen.height, 193, popTop);
      } 
      <span style="color: #0000ff">else</span> <span style="color: #0000ff">if</span>(popTop&lt;=220){
      oPopup.show(screen.width-200, screen.height-popTop, 193, 108);
      }<span style="color: #0000ff">else</span> {
        <span style="color: #008000">//window.status=popTop + "  else";</span>
        oPopup.show(screen.width-200, screen.height-220, 193, 108);
        <span style="color: #008000">//oPopup.parent.focus():</span>
      }

      popTop += 10;
      mytime=setTimeout(<span style="color: #006080">"popshow();"</span>, 40);
      }

      <span style="color: #0000ff">function</span> hidePop() {
        clearTimeout(mytime);
        oPopup.hide();
      }

      popmsg(<span style="color: #006080">"&lt;div  onclick='window.parent.hidePop()' title='点击隐藏' style='cursor:pointer; background-image: url(http://www.blogjava.net/images/blogjava_net/beansoft/18269/o_qqbg.gif); width:193; height:108; color:white; padding-top:1em; padding-left:5; font-size:11pt; color:white' &gt;&lt;center&gt;&lt;b&gt;BlogJava 系统通知&lt;br&gt;&lt;br&gt;请留言或者捐款支持 BeanSoft 的 Java EE 学习视频!! &lt;/b&gt;&lt;/center&gt;&lt;/div&gt;"</span>);

}

&lt;/SCRIPT&gt;</pre></div>
<div>&nbsp;</div>
<div>&nbsp;</div><img src ="http://www.blogjava.net/beansoft/aggbug/156062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-10-26 11:06 <a href="http://www.blogjava.net/beansoft/archive/2007/10/26/156062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>页面外仿 MSN 弹出提示信息的脚本改进版(仅能在IE下运行!) + 页面内完美仿MSN右下角弹出广告附带关闭按钮(支持多种浏览器)</title><link>http://www.blogjava.net/beansoft/archive/2007/10/18/154020.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 18 Oct 2007 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/10/18/154020.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/154020.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/10/18/154020.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/154020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/154020.html</trackback:ping><description><![CDATA[<p>从网上找的版本呢, 有白边. 今天花时间改进了一下, 效果打开页面的时候你就应该看到了. 如果配合 AJAX 做基于网页版 Outlook 通知的话会有一点点用. 首先感谢最初的原作者(转载的太多了, 找不到了).</p> <p>显示效果:</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/image_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="108" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/image_thumb.png" width="193" border="0"></a> <br>其实有人做的有更好的版本, 参考这里(也是仅支持IE的):<br><a id="viewpost_ascx_TitleUrl" href="http://blog.joycode.com/dotey/archive/2005/01/19/43277.aspx">Web的桌面提醒（Popup）</a> 效果演示: <a href="http://webuc.net/MyProject/Popup/popup.htm"><font color="#223355">http://webuc.net/MyProject/Popup/popup.htm</font></a><br>下载: <a href="http://webuc.net/MyProject/Popup/popup.rar">http://webuc.net/MyProject/Popup/popup.rar</a><br></p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/blogjava_popup_outlook_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="75" alt="blogjava_popup_outlook" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/blogjava_popup_outlook_thumb.png" width="344" border="0"></a> <br><br></p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">&lt;</span> <span style="color: #000000">SCRIPT</span> <span style="color: #000000">&gt;</span> <span style="color: #000000"><br></span><span style="color: #0000ff">var</span> <span style="color: #000000"> oPopup;<br></span><span style="color: #0000ff">try</span> <span style="color: #000000"> {<br>oPopup </span> <span style="color: #000000">=</span> <span style="color: #000000"> window.createPopup();<br>} </span> <span style="color: #0000ff">catch</span> <span style="color: #000000">(e) {<br>window.status</span> <span style="color: #000000">=</span> <span style="color: #000000">'弹出通知消息仅能用于 IE 下</span> <span style="color: #000000">!</span> <span style="color: #000000">';<br>}<br><br></span><span style="color: #0000ff">var</span> <span style="color: #000000"> popTop</span> <span style="color: #000000">=</span> <span style="color: #000000">10</span> <span style="color: #000000">;<br></span><span style="color: #0000ff">var</span> <span style="color: #000000"> mytime;<br><br></span><span style="color: #0000ff">function</span> <span style="color: #000000"> popmsg(msgstr){<br></span><span style="color: #0000ff">if</span> <span style="color: #000000">(</span> <span style="color: #000000">!</span> <span style="color: #000000">oPopup) {<br>&nbsp; </span> <span style="color: #0000ff">return</span> <span style="color: #000000">;<br>}<br>oPopup.document.body.innerHTML </span> <span style="color: #000000">=</span> <span style="color: #000000"> msgstr;<br>popshow();<br>}<br><br></span><span style="color: #0000ff">function</span> <span style="color: #000000"> popshow(){<br></span><span style="color: #008000">//</span> <span style="color: #008000">window.status=popTop;</span> <span style="color: #008000"><br></span><span style="color: #0000ff">if</span> <span style="color: #000000">(popTop </span> <span style="color: #000000">&gt;</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">1720</span> <span style="color: #000000">){<br>clearTimeout(mytime);<br>oPopup.hide();<br></span><span style="color: #0000ff">return</span> <span style="color: #000000">;<br>} </span> <span style="color: #0000ff">else</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">if</span> <span style="color: #000000">(popTop</span> <span style="color: #000000">&gt;=</span> <span style="color: #000000">1720</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">-</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">108</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000"> popTop</span> <span style="color: #000000">&lt;=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">1720</span> <span style="color: #000000">){<br>&nbsp; oPopup.show(screen.width</span> <span style="color: #000000">-</span> <span style="color: #000000">200</span> <span style="color: #000000">,screen.height, </span> <span style="color: #000000">193</span> <span style="color: #000000">, </span> <span style="color: #000000">1720</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">-</span> <span style="color: #000000"> popTop);<br>}</span> <span style="color: #0000ff">else</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">if</span> <span style="color: #000000">(popTop</span> <span style="color: #000000">&gt;=</span> <span style="color: #000000">1500</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">&amp;&amp;</span> <span style="color: #000000">popTop</span> <span style="color: #000000">&lt;</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">1720</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">-</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">108</span> <span style="color: #000000">){<br>oPopup.show(screen.width</span> <span style="color: #000000">-</span> <span style="color: #000000">200</span> <span style="color: #000000">, screen.height </span> <span style="color: #000000">-</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">220</span> <span style="color: #000000">&nbsp; </span> <span style="color: #000000">+</span> <span style="color: #000000"> (popTop </span> <span style="color: #000000">-</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">1500</span> <span style="color: #000000">), </span> <span style="color: #000000">193</span> <span style="color: #000000">, </span> <span style="color: #000000">108</span> <span style="color: #000000">);<br>} </span> <span style="color: #0000ff">else</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">if</span> <span style="color: #000000">(popTop</span> <span style="color: #000000">&lt;=</span> <span style="color: #000000">108</span> <span style="color: #000000">){<br>oPopup.show(screen.width</span> <span style="color: #000000">-</span> <span style="color: #000000">200</span> <span style="color: #000000">, screen.height, </span> <span style="color: #000000">193</span> <span style="color: #000000">, popTop);<br>} <br></span><span style="color: #0000ff">else</span> <span style="color: #000000">&nbsp;</span> <span style="color: #0000ff">if</span> <span style="color: #000000">(popTop</span> <span style="color: #000000">&lt;=</span> <span style="color: #000000">220</span> <span style="color: #000000">){<br>oPopup.show(screen.width</span> <span style="color: #000000">-</span> <span style="color: #000000">200</span> <span style="color: #000000">, screen.height</span> <span style="color: #000000">-</span> <span style="color: #000000">popTop, </span> <span style="color: #000000">193</span> <span style="color: #000000">, </span> <span style="color: #000000">108</span> <span style="color: #000000">);<br>}</span> <span style="color: #0000ff">else</span> <span style="color: #000000"> {<br>&nbsp; </span> <span style="color: #008000">//</span> <span style="color: #008000">window.status=popTop + "&nbsp; else";</span> <span style="color: #008000"><br></span><span style="color: #000000">&nbsp; oPopup.show(screen.width</span> <span style="color: #000000">-</span> <span style="color: #000000">200</span> <span style="color: #000000">, screen.height</span> <span style="color: #000000">-</span> <span style="color: #000000">220</span> <span style="color: #000000">, </span> <span style="color: #000000">193</span> <span style="color: #000000">, </span> <span style="color: #000000">108</span> <span style="color: #000000">);<br>}<br><br>popTop </span> <span style="color: #000000">+=</span> <span style="color: #000000">&nbsp;</span> <span style="color: #000000">10</span> <span style="color: #000000">;<br>mytime</span> <span style="color: #000000">=</span> <span style="color: #000000">setTimeout(</span> <span style="color: #000000">"</span> <span style="color: #000000">popshow();</span> <span style="color: #000000">"</span> <span style="color: #000000">, </span> <span style="color: #000000">40</span> <span style="color: #000000">);<br>}<br><br></span><span style="color: #0000ff">function</span> <span style="color: #000000"> hidePop() {<br>&nbsp; clearTimeout(mytime);<br>&nbsp; oPopup.hide();<br>}<br><br>popmsg(</span> <span style="color: #000000">"</span> <span style="color: #000000">&lt;div onclick='window.parent.hidePop()' title='点击隐藏' style='cursor:pointer; background-image: url(http://www.blogjava.net/images/blogjava_net/beansoft/18269/o_qqbg.gif); width:193; height:108; color:white; padding-top:1em; padding-left:5; font-size:11pt; color:white' &gt;&lt;center&gt;&lt;b&gt;BlogJava 系统消息&lt;br&gt;&lt;br&gt;请留言或者捐款支持 BeanSoft 的 Java EE 学习视频, 谢谢 !!&lt;/b&gt;&lt;/center&gt;&lt;/div&gt;</span> <span style="color: #000000">"</span> <span style="color: #000000">);<br><br></span><span style="color: #000000">&lt;/</span> <span style="color: #000000">SCRIPT</span> <span style="color: #000000">&gt;</span> </div> <p>&nbsp;</p> <p>最后来一个支持页面内的跨浏览器的:</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/blogjava_popup_msn_in_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="117" alt="blogjava_popup_msn_in" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/MSNIEMSN_98CA/blogjava_popup_msn_in_thumb.png" width="180" border="0"></a> </p> <p>完美仿MSN右下角弹出广告代码并可自动消失,附带关闭按钮.</p> <p>&lt;html&gt;<br>&lt;head&gt;<br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br>&lt;title&gt;先飞电脑技术网&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;Script language="JavaScript"&gt;<br>&lt;!--<br>window.onload = getMsg;<br>window.onresize = resizeDiv;<br>window.onerror = function(){}<br>//短信提示使用(asilas添加)<br>var divTop,divLeft,divWidth,divHeight,docHeight,docWidth,objTimer,i = 0;<br>function getMsg()<br>{<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; divTop = parseInt(document.getElementById("eMeng").style.top,10)<br>&nbsp;&nbsp;&nbsp; divLeft = parseInt(document.getElementById("eMeng").style.left,10)<br>&nbsp;&nbsp;&nbsp; divHeight = parseInt(document.getElementById("eMeng").offsetHeight,10)<br>&nbsp;&nbsp;&nbsp; divWidth = parseInt(document.getElementById("eMeng").offsetWidth,10)<br>&nbsp;&nbsp;&nbsp; docWidth = document.body.clientWidth;<br>&nbsp;&nbsp;&nbsp; docHeight = document.body.clientHeight;<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.top = parseInt(document.body.scrollTop,10) + docHeight + 10;//&nbsp; divHeight<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.left = parseInt(document.body.scrollLeft,10) + docWidth - divWidth<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.visibility="visible"<br>&nbsp;&nbsp;&nbsp; objTimer = window.setInterval("moveDiv()",10)<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch(e){}<br>}  <p>function resizeDiv()<br>{<br>&nbsp;&nbsp;&nbsp; i+=1<br>&nbsp;&nbsp;&nbsp; if(i&gt;300) closeDiv()&nbsp;&nbsp;&nbsp; //客户想不用自动消失由用户来自己关闭所以屏蔽这句<br>&nbsp;&nbsp;&nbsp; try{<br>&nbsp;&nbsp;&nbsp; divHeight = parseInt(document.getElementById("eMeng").offsetHeight,10)<br>&nbsp;&nbsp;&nbsp; divWidth = parseInt(document.getElementById("eMeng").offsetWidth,10)<br>&nbsp;&nbsp;&nbsp; docWidth = document.body.clientWidth;<br>&nbsp;&nbsp;&nbsp; docHeight = document.body.clientHeight;<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.top = docHeight - divHeight + parseInt(document.body.scrollTop,10)<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.left = docWidth - divWidth + parseInt(document.body.scrollLeft,10)<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch(e){}<br>}  <p>function moveDiv()<br>{<br>&nbsp;&nbsp;&nbsp; try<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; if(parseInt(document.getElementById("eMeng").style.top,10) &lt;= (docHeight - divHeight + parseInt(document.body.scrollTop,10)))<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; window.clearInterval(objTimer)<br>&nbsp;&nbsp;&nbsp; objTimer = window.setInterval("resizeDiv()",1)<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; divTop = parseInt(document.getElementById("eMeng").style.top,10)<br>&nbsp;&nbsp;&nbsp; document.getElementById("eMeng").style.top = divTop - 1<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; catch(e){}<br>}<br>function closeDiv()<br>{<br>&nbsp;&nbsp;&nbsp; document.getElementById('eMeng').style.visibility='hidden';<br>&nbsp;&nbsp;&nbsp; if(objTimer) window.clearInterval(objTimer)<br>}<br>--&gt;<br>&lt;/Script&gt;  <p>&lt;!--温馨提示代码开始--&gt;  <p>&lt;DIV id=eMeng style="BORDER-RIGHT: #455690 1px solid; BORDER-TOP: #a6b4cf 1px solid; Z-INDEX:99999; LEFT: 0px; VISIBILITY: hidden; BORDER-LEFT: #a6b4cf 1px solid; WIDTH: 180px; BORDER-BOTTOM: #455690 1px solid; POSITION: absolute; TOP: 0px; HEIGHT: 116px; BACKGROUND-COLOR: #c9d3f3"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;TABLE style="BORDER-TOP: #ffffff 1px solid; BORDER-LEFT: #ffffff 1px solid" cellSpacing=0 cellPadding=0 width="100%" bgColor=#AFDCF3 border=0&gt;<br>&nbsp;&nbsp;&nbsp; &lt;TBODY&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TR bgColor=#6699cc&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD style="font-size: 12px; background-image: url('msgTopBg.gif'); color: #0f2c8c" width=30 height=24&gt;&lt;/TD&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD style="font-weight: normal; font-size: 12px; background-image: url('msgTopBg.gif'); color: #ffffff; padding-left: 4px; padding-top: 4px" vAlign=center width="100%"&gt; 网站温馨提示：&lt;/TD&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD style="background-image: url('msgTopBg.gif'); padding-right: 2px; padding-top: 2px" vAlign=center align=right width=19&gt;&lt;span title=关闭 style="CURSOR: hand;color:white;font-size:12px;font-weight:bold;margin-right:4px;" onclick=closeDiv() &gt;×&lt;/span&gt;&lt;!--&lt;IMG title=关闭 style="CURSOR: hand" onclick=closeDiv() hspace=3 src="msgClose.jpg"&gt;--&gt;&lt;/TD&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TR&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TR&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TD style="background-image: url('<a href="http://pic.tianyaclub.com/images/windty_bg.jpg');">http://pic.tianyaclub.com/images/windty_bg.jpg');</a> padding-right: 1px; padding-bottom: 1px" colSpan=3 height=90&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV style="BORDER-RIGHT: #b9c9ef 1px solid; PADDING-RIGHT: 13px; BORDER-TOP: #728eb8 1px solid; PADDING-LEFT: 13px; FONT-SIZE: 12px; PADDING-BOTTOM: 13px; BORDER-LEFT: #728eb8 1px solid; WIDTH: 100%; COLOR: #1f336b; PADDING-TOP: 18px; BORDER-BOTTOM: #b9c9ef 1px solid; HEIGHT: 100%"&gt;先飞电脑技术网全新改版，免费精品网络资源，你用了吗？&lt;BR&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV align=center style="word-break:break-all"&gt;&lt;!--&lt;a href="<a href="http://pic.tianyaclub.com/default.asp?idWriter=0&amp;Key=0&quot;">http://pic.tianyaclub.com/default.asp?idWriter=0&amp;Key=0"</a> target="_blank"&gt;--&gt;&lt;a href="<a href="http://www.xfbbs.com&quot;">http://www.xfbbs.com"</a> target="_blank"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;font color=#FF0000&gt;进入网站浏览&lt;/font&gt;&lt;/a&gt;&lt;/DIV&gt;  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DIV&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TD&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/TR&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/TBODY&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/TABLE&gt;<br>&lt;/DIV&gt;<br>&lt;!--温馨提示代码结束--&gt;<br>&lt;/html&gt;</p><img src ="http://www.blogjava.net/beansoft/aggbug/154020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-10-18 23:03 <a href="http://www.blogjava.net/beansoft/archive/2007/10/18/154020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最简单的 AJAX 例子代码(完整注释)</title><link>http://www.blogjava.net/beansoft/archive/2007/10/12/152318.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 12 Oct 2007 05:19:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/10/12/152318.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/152318.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/10/12/152318.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/152318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/152318.html</trackback:ping><description><![CDATA[<div><pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">&lt;input type=<span style="color: #006080">"button"</span> onclick=<span style="color: #006080">"ajaxTest()"</span> <span style="color: #0000ff">value</span>=<span style="color: #006080">"AJAX测试"</span>&gt;

&lt;input type=<span style="color: #006080">"button"</span> onclick=<span style="color: #006080">" document.getElementById('weather').innerHTML='' "</span> <span style="color: #0000ff">value</span>=<span style="color: #006080">"隐藏"</span>&gt;

&lt;script&gt;
<span style="color: #008000">// 1. 初始化 请求 对象</span>
<span style="color: #008000">// Mozilla/Firefox 下的</span>
var xmlhttp = <span style="color: #0000ff">new</span> XMLHttpRequest();
<span style="color: #008000">// IE 下的</span>
<span style="color: #008000">//var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")</span>
<span style="color: #008000">//alert(xmlhttp);</span>

function ajaxTest() {
    <span style="color: #008000">// 指定要打开的页面</span>
    xmlhttp.open(<span style="color: #006080">"GET"</span>, <span style="color: #006080">"staticpage.html"</span>, <span style="color: #0000ff">true</span>);<span style="color: #008000">// HTTP 请求的方式, URL, 是否异步</span>
    <span style="color: #008000">// 指定页面打开完之后要进行的操作.</span>
    xmlhttp.onreadystatechange = mychange;
    <span style="color: #008000">// 开始发起浏览请求, Mozilla 必须加 null</span>
    xmlhttp.send(<span style="color: #0000ff">null</span>);
}

<span style="color: #008000">// 这个函数就是每次状态改变要调用的函数</span>
function mychange() {
    <span style="color: #008000">// 请求已完成</span>
    <span style="color: #0000ff">if</span>(xmlhttp.readyState == 4) {
        <span style="color: #008000">//alert(xmlhttp.readyState);</span>
        alert(xmlhttp.responseText);
        <span style="color: #008000">// 更新对应的 HTML 元素里面显示的内容</span>
    <span style="color: #008000">// 根据 ID 引用页面里面的元素 document.getElementById(元素名)</span>
    document.getElementById(<span style="color: #006080">'weather'</span>).innerHTML = xmlhttp.responseText;
    }
}
&lt;/script&gt;

&lt;div id=<span style="color: #006080">"weather"</span>&gt;&lt;/div&gt;</pre></div><img src ="http://www.blogjava.net/beansoft/aggbug/152318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-10-12 13:19 <a href="http://www.blogjava.net/beansoft/archive/2007/10/12/152318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Instant Source 实时 IE HTML 源码查看(视频讲解)</title><link>http://www.blogjava.net/beansoft/archive/2007/09/24/147645.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sun, 23 Sep 2007 16:07:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/24/147645.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147645.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/24/147645.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147645.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147645.html</trackback:ping><description><![CDATA[<p>软件下载请看这里: <a href="http://www.blogjava.net/beansoft/archive/2006/11/23/83065.html">Instant Source 2003 1.44 汉化版</a></p> <p>Instant Source - the first real-time HTML source viewer and editor. <br>测试过的浏览器: IE 5,6,7 <br>这是一个IE浏览器插件，主要功能是实时的查看和修改 HTML 网页上的源代码，当鼠标指向或选择网页的某一部分，即可在下方的窗口中快速看到网页的源代码，这对网页设计相关人员还是相当有用的。而且可以列出当前页面的所有源码(包括引用到的 JS, CSS 文件等)推荐使用！ 例如大家看到 Google 网页的时候, 想拿到他们的所有代码, 或者想看看某个控件的源码, 这时候就非常方便了, 第一个可以通过 "Display Entire Page(current State)"来看到, 第二个可以通过"Display Element Under Cursor"来看到. 同样, 也可以方便的来检测自己写的页面是否达到了预期的目的. <br><a href="http://www.blogjava.net/beansoft/archive/2006/11/23/83065.html">阅读全文</a>  <p>操作讲解视频:  <p><a href="http://download.gro.clinux.org/beansoft/InstantSource.swf">http://download.gro.clinux.org/beansoft/InstantSource.swf</a> &nbsp;1.45 MB <embed pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" src="http://download.gro.clinux.org/beansoft/InstantSource.swf" width="800" height="624" type="application/x-shockwave-flash" quality="high" bgcolor="#FFFFFF"></embed><img src ="http://www.blogjava.net/beansoft/aggbug/147645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-24 00:07 <a href="http://www.blogjava.net/beansoft/archive/2007/09/24/147645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几个比较好的 JavaScript UI 控件</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147390.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147390.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147390.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147390.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147390.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147390.html</trackback:ping><description><![CDATA[<div><a href="http://scbr.com/docs/products/dhtmlxGrid/">http://scbr.com/docs/products/dhtmlxGrid/</a></div> <div>比较完毕的表格编辑系统, 支持 Editor, Renderer 等, OpenSource.</div> <div>&nbsp;</div> <div><a href="http://www.walterzorn.com/index.htm">http://www.walterzorn.com/index.htm</a></div> <div>JavaScript 向量图.</div> <div>&nbsp;</div> <div><a href="http://webfx.eae.net/">http://webfx.eae.net/</a></div> <div>包括 Tab Pane, Tree, Menu, Table, Tooltip 等众多的 HTML 特效文章和作品下载(含源码).</div><img src ="http://www.blogjava.net/beansoft/aggbug/147390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 13:35 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Custom Alert Demonstration</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147365.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 04:22:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147365.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147365.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147365.html</trackback:ping><description><![CDATA[<div><a href="http://slayeroffice.com/code/custom_alert/">http://slayeroffice.com/code/custom_alert/</a></div> <div> <div> <h1>Custom Alert Demonstration</h1> <p>This is a demonstration of how to over-ride the default <code><font color="#006699" size="3">window.alert</font></code> method of a browser. </p> <p>This was born from the design requirements of a recent project to have non-standard alerts to notify the user of a problem with data they had entered. The trick here was that all products use the same validation scripts, and not all of them fell under this requirement. </p> <p>To modify the validation scripts to expect another argument that would have told it to use a DIV overlay or a standard alert would have proven difficult to implement and maintain. A co-worker (<a href="http://blog.slayeroffice.com/index.php?content=1"><u><font color="#0000ff">Dean</font></u></a>) wondered out loud if it was possible to overload the alert method, and turns out - you can. </p> <p>You can test the alert functionality with the following button. You can also type <code><font color="#006699" size="3">javascript:alert("Hello World");</font></code> from your browsers URL bar to see it work. </p> <p></p> <p>The markup for the above button is:<br><code><font color="#006699" size="3">&lt;input type="button" value = "Test the alert" onclick="alert('This is a custom alert dialog that was created by over-riding the window.alert method.');" /&gt; </font></code></p> <p>Psuedo-modality is achieved by using a 100% wide and 100% tall absolutely positioned DIV element that acts as the parent element of the custom alert. This DIV overlays everything on the page and prevents user interaction with elements other than the custom alert. Note that a 1x1 transparent png image is set as the background-image -- this prevents MSIE from allowing the parent DIV to be "hollow", which would defeat its purpose. </p> <p>Only one alert can exist at a time -- the function will return if it detects the existence of a previous instance of the "modalContainer" parent element. Hitting the "Ok" button will remove the "modalContainer" element from the DOM along with its child elements and hand control of the page back to the user. </p> <p>In browsers that support <code><font color="#006699" size="3">position:fixed</font></code>, meaning all of them except MSIE, the alert will stay with the user as they scroll. Thanks to <a href="http://centricle.com/"><u><font color="#0000ff">Kevin</font></u></a> for the education on that property value. </p> <p>This has been tested and verified to work in MSIE6, Firefox 1.0, Safari and Opera 7.1+. </p> <p><strong>Note:</strong> This is a demonstration <em>only</em>. I am not saying that this is a production worthy alternative to the default behavior of the window.alert method as it does not allow for true modality. I am only showing what is possible - implement at your own risk. Feel free to contact me with any suggestions. </p> <h2>Source:</h2><pre><code>
<font face="Courier New"><span><font color="#008000">// constants to define the title of the alert and button text.</font></span>
</font><font color="#006699">var ALERT_TITLE = "Oops!";
var ALERT_BUTTON_TEXT = "Ok";

</font><font face="Courier New"><span><font color="#008000">// over-ride the alert method only if this a newer browser.</font></span>
<span><font color="#008000">// Older browser will see standard alerts</font></span>
</font><font color="#006699">if(document.getElementById) {
	window.alert = function(txt) {
		createCustomAlert(txt);
	}
}

function createCustomAlert(txt) {
	</font><font face="Courier New"><span><font color="#008000">// shortcut reference to the document object</font></span>
</font><font color="#006699">	d = document;

	</font><font face="Courier New"><span><font color="#008000">// if the modalContainer object already exists in the DOM, bail out.</font></span>
</font><font color="#006699">	if(d.getElementById("modalContainer")) return;

	</font><font face="Courier New"><span><font color="#008000">// create the modalContainer div as a child of the BODY element</font></span>
</font><font color="#006699">	mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
	mObj.id = "modalContainer";
	</font><font face="Courier New"><span><font color="#008000"> // make sure its as tall as it needs to be to overlay all the content on the page</font></span>
</font><font color="#006699">	mObj.style.height = document.documentElement.scrollHeight + "px";

	</font><font face="Courier New"><span><font color="#008000">// create the DIV that will be the alert </font></span>
</font><font color="#006699">	alertObj = mObj.appendChild(d.createElement("div"));
	alertObj.id = "alertBox";
	</font><font face="Courier New"><span><font color="#008000">// MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert</font></span>
</font><font color="#006699">	if(d.all &amp;&amp; !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
	</font><font face="Courier New"><span><font color="#008000">// center the alert box</font></span>
</font><font color="#006699">	alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";

	</font><font face="Courier New"><span><font color="#008000">// create an H1 element as the title bar</font></span>
</font><font color="#006699">	h1 = alertObj.appendChild(d.createElement("h1"));
	h1.appendChild(d.createTextNode(ALERT_TITLE));

	</font><font face="Courier New"><span><font color="#008000">// create a paragraph element to contain the txt argument</font></span>
</font><font color="#006699">	msg = alertObj.appendChild(d.createElement("p"));
	msg.appendChild(d.createTextNode(txt));

	</font><font face="Courier New"><span><font color="#008000">// create an anchor element to use as the confirmation button.</font></span>
</font><font color="#006699">	btn = alertObj.appendChild(d.createElement("a"));
	btn.id = "closeBtn";
	btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT));
	btn.href = "#";
	</font><font face="Courier New"><span><font color="#008000">// set up the onclick event to remove the alert when the anchor is clicked</font></span>
</font><font color="#006699">	btn.onclick = function() { removeCustomAlert();return false; }

	
}

</font><font face="Courier New"><span><font color="#008000">// removes the custom alert from the DOM</font></span>
<font color="#006699">function removeCustomAlert() {
	document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}
</font></font></code>
</pre></div>
<div><a href="http://slayeroffice.com/"><img alt="slayeroffice" src="http://slayeroffice.com/gr/office_logo_green.gif"></a> Custom Alert Demonstration<br>version 1.0<br>last revision: 02.02.2005<br><a href="http://slayeroffice.com/?c=/content/contact.html"><font color="#0000ff"><u>steve@slayeroffice.com</u></font></a><br><a href="http://slayeroffice.com/"><u><font color="#0000ff">http://slayeroffice.com</font></u></a> </div></div><img src ="http://www.blogjava.net/beansoft/aggbug/147365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 12:22 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX In Action Download</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147355.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 03:57:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147355.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147355.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147355.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147355.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147355.html</trackback:ping><description><![CDATA[<div>A good book as someone said.</div> <div>&nbsp;</div> <div>Here:</div> <div>&nbsp;</div> <div><a href="http://keke.ersha.cn/ftp/linshi/AJAXInAction.pdf">http://keke.ersha.cn/ftp/linshi/AJAXInAction.pdf</a>&nbsp; 9.96MB</div><img src ="http://www.blogjava.net/beansoft/aggbug/147355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 11:57 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147355.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSEclipse - 被 Adobe 收购的 Eclipse 下的 JavaScript 编辑工具</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147346.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147346.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147346.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147346.html</trackback:ping><description><![CDATA[<p><a title="http://labs.adobe.com/technologies/jseclipse/" href="http://labs.adobe.com/technologies/jseclipse/">http://labs.adobe.com/technologies/jseclipse/</a></p> <ol> <li><a href="http://labs.adobe.com/">Home</a>  <li><a href="http://labs.adobe.com/technologies/">Technologies</a></li></ol> <h3>JSEclipse</h3> <p><img src="http://labs.adobe.com/technologies/jseclipse/images/jseclipse_557x225.jpg">  <p><strong>Update</strong>: JSEclipse prerelease 2 released on April 2, 2007. <a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_jseclipse">Get it now</a>.  <p>JSEclipse is a new plugin for the Eclipse environment that helps developers code JavaScript faster and with no errors. With JSEclipse, you can complete a variety of tasks, from editing small sections of code to working with the next big AJAX library or developing plug-ins for a product that embeds JavaScript snippets.  <p>Download and install JSEclipse and improve your JavaScript coding experience with:  <ul> <li>Contextual code completion &amp; shortcuts.  <li>Project outline and quick navigation through function declarations.  <li>Syntax highlighting.  <li>Error reporting.  <li>Customizable code templates to get you started.  <li>Support for popular JavaScript libraries (Dojo, Prototype, Spry, YUI, Qooxdoo).  <li>Support for JavaDoc documentation and multi-line comments.  <li>Adobe Flex Builder 2 compatibility. </li></ul> <h5>Download and Discuss</h5> <ul> <li><a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_jseclipse"><img height="16" alt="Download" src="http://labs.adobe.com/images/icons/download.gif" width="16">Get the JSEclipse prerelease now</a>  <li><a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=629&amp;entercat=y"><img height="16" alt="Download" src="http://labs.adobe.com/images/icons/discussion.gif" width="16">Discuss JSEclipse in the Labs forums</a></li></ul> <p>For visual examples of how code completion, code templates, and JavaScript libraries (Ajax) features in JSEclipse behave, watch the streaming <a href="http://labs.adobe.com/technologies/jseclipse/videos/">demonstration videos</a> hosted on Labs.  <ul> <li><a>Getting Started</a>  <li><a>Community</a>  <li><a>Product Details</a></li></ul> <h4></h4> <p>Follow these steps to get started with the JSEclipse prerelease.  <h5>Prerequisites</h5> <p>In order to install and use JSEclipse, you need the following:  <ul> <li>Hardware requirements: same as for <a href="http://www.eclipse.org/eclipse/development/readme_eclipse_3.2.1.html#TargetOperatingEnvironments">Eclipse SDK</a>.  <li><a href="http://www.eclipse.org/downloads/">The Eclipse SDK version 3.1 or higher</a>  <li><a href="http://java.sun.com/j2se/downloads/index.html">The Java Runtime Environment version&nbsp;1.4</a> or higher  <li>Approximately 2 MB of available disk space. </li></ul> <h5>Installation</h5> <ol> <li><a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_jseclipse">Download JSEclipse</a>  <li><a href="http://www.interaktonline.com/Documentation/JSEclipse/jseclipse.htm#2000_installing.htm">Read the installation notes</a>  <li>Watch the <a href="http://labs.adobe.com/technologies/jseclipse/videos/">demonstration videos</a> for a tour of the features in JSEclipse.  <li>Check out the <a href="http://www.interaktonline.com/Documentation/JSEclipse/jseclipse.htm">JSEclipse online documentation</a> for a detailed description of the features and installation process.  <li> <p>Join the discussion on the <a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=72&amp;catid=629&amp;entercat=y">JSEclipse forum</a>, where you can ask questions, discuss your experience, and give us your feedback.  <p>Please note that your submission of comments, ideas, feature requests and techniques on this and other Adobe maintained forums, as well as Adobe's right to use such materials, is governed by the <a href="http://labs.adobe.com/misc/terms_of_use.html">Terms of Use</a>.</p></li></ol><img src ="http://www.blogjava.net/beansoft/aggbug/147346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 11:37 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX Suggest Tutorial</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147343.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147343.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147343.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147343.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147343.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147343.html</trackback:ping><description><![CDATA[<div><a href="http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html">http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html</a></div><img src ="http://www.blogjava.net/beansoft/aggbug/147343.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 11:32 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147343.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSDoc - JavaScript Documentation Tool</title><link>http://www.blogjava.net/beansoft/archive/2007/09/22/147338.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 22 Sep 2007 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/09/22/147338.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/147338.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/09/22/147338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/147338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/147338.html</trackback:ping><description><![CDATA[<div><a href="http://jsdoc.sourceforge.net/">http://jsdoc.sourceforge.net/</a></div> <div>&nbsp;</div> <div><a><font color="#000000">&nbsp;</font>  <h1>JSDoc <i>- JavaScript Documentation Tool</i></h1></a> <table unselectable="on"> <tbody> <tr> <td> <ul> <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#intro"><u><font color="#0000ff">Introduction</font></u></a>  <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#install"><u><font color="#0000ff">Installation</font></u></a>  <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#usage"><u><font color="#0000ff">Usage</font></u></a>  <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#tagref"><u><font color="#0000ff">Tag Reference</font></u></a>  <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#faq"><u><font color="#0000ff">Frequently Asked Questions</font></u></a>  <li><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#moreinfo"><u><font color="#0000ff">More Information</font></u></a> </li></ul></td></tr></tbody></table> <table unselectable="on"> <tbody> <tr> <td> <h3><a><font color="#000000">Introduction</font></a></h3></td></tr> <tr> <td> <p><a href="http://sourceforge.net/projects/jsdoc"><u><font color="#800080">JSDoc</font></u></a> is a tool that parses inline documentation in JavaScript source files, and produces an documentation of the JavaScript code. This is typically in the form of HTML (<a href="http://spaces.msn.com/mmm2006-03-03_18.09/example/index.html"><u><font color="#0000ff">example</font></u></a>), but XML and XMI (UML) export are also supported. JSDoc is based on the (very successful) <code>javadoc</code> tool that was created for the same purpose for the Java programming language. </p> <p>JSDoc is primarily intended for libraries of object-oriented JavaScript files, although it also works with procedural code. There is a basic ability to determine inheritance built into the parser, although some more obscure dynamic constructs will not be understood (for example, defining a method to set one class as the superclass of another). </p> <p>Anyone familiar with the <code>javadoc</code> tool will be able to use JSDoc right away; for anyone else it is a very simple matter to get started. JSDoc picks up on comments that are opened with a slash followed by two stars (<code>/**</code>), and closed with the typical star-slash (<code>*/</code>). </p> <div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table> <table unselectable="on"> <tbody> <tr> <td> <h3><a><font color="#000000">Installation</font></a></h3></td></tr> <tr> <td>JSDoc is implemented in Perl, as as such, requires the perl executable. This shouldn't be a problem for Linux/Unix users, but Windows users will probably have to install a perl runtime; <a href="http://www.activeperl.com/"><u><font color="#800080">ActivePerl</font></u></a> is recommended.  <p>JSDoc is distributed as a gzipped tarball, and can be downloaded from the <a href="http://sourceforge.net/projects/jsdoc"><u><font color="#800080">JSDoc project page</font></u></a>. Once you have downloaded JSDoc-x-x.tgz, just unpack it (tar zxf JSDoc-x-x.tgz on Linux/Unix, use WinZip on Windows), and you're ready to go. You can immediately try out JSDoc on the included test.js JavaScript file by going into the JSDoc directory and entering the command <pre>                  perl jsdoc.pl test.js
               </pre>This should output a set of HTML files in a directory called js_docs_out. 
<p>If you get an error message right away that looks something like <pre>                  Can't locate HTML/Template.pm in @INC ......
                </pre>then you will need to install the HTML::Template Perl module. Luckily, this is a very trivial operation thanks to the <a href="http://www.cpan.org/"><u><font color="#0000ff">CPAN</font></u></a>. In a Linux/Unix/POSIX-style operating system, open a terminal and run the following command as root: <pre>                  # perl -MCPAN -e 'install HTML::Template'
               </pre>
<p>If you're running Windows and ActivePerl, open a command prompt window and enter the following command: <pre>                  C:\&gt; ppm
               </pre>This will start the Perl Package Manager; at the PPM prompt, enter the following two commands (PPM&gt; is the PPM prompt): <pre>                  PPM&gt; install HTML-Template
                  PPM&gt; quit
               </pre>
<p>JSDoc <i>should</i> run without problems now. 
<div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table>
<table unselectable="on">
<tbody>
<tr>
<td>
<h3><a><font color="#000000">Usage</font></a></h3></td></tr>
<tr>
<td>
<p>The general idea of JSDoc is to pick up the form and documentation of code. A major part of JSDoc's functionality is based around documentation strings embedded in JavaScript code. The definitive reference to writing documentation strings for Java (with a large amount of carry-over to JSDoc) can be found at the <a href="http://java.sun.com/j2se/javadoc/writingdoccomments/"><u><font color="#0000ff">javadoc reference page</font></u></a>. 
<p>
<p>JSDoc currently supports a subset of javadoc's '@'-prefixed attributes, but the parser is customizable (as explained later). An example JavaScript file (test.js) is included with the JSDoc distribution. Most functionality of JSDoc can be seen within this script file, however for the impatient a small (and incomplete) example of a common usage of JSDoc is shown below </p>
<p><pre>                  <span>
<font face="Courier New" color="#000066">                  /**
                   * Shape is an abstract base class. It is defined simply
                   * to have something to inherit from for geometric 
                   * subclasses
                   * @constructor
                   */</font></span>
                   function Shape(color){
                     this.color = color;
                   }

                   // Bind the Shape_getColor method to the Shape class
                   Shape.prototype.getColor = Shape_getColor;
                   <font face="Courier New"><span><font color="#000066"> 
                   /**
                    * Get the name of the color for this shape
                    * @returns A color string for this shape
                    */</font></span>
                   function Shape_getColor(){
                     return this.color;
                   }
                   </font><font face="Courier New"><span><font color="#000066"> 
                   /**
                    * Circle is a subclass of Shape
                    */</font></span>
                   function Circle(radius){
                     this.radius = radius;
                   }
                   </font><font face="Courier New"><span><font color="#000066"> 
                   /**
                    * A very rough value for pi
                    */</font></span>
                   Circle.PI = 3.14;
                   </font><span>
<font face="Courier New" color="#000066">                   /**
                    * Get the radius of this circle 
                    * @returns The radius of this circle
                    */</font></span>
                   function Circle_getRadius(){
                     return this.radius;
                   }
                  
                   // Circle is a subclass of Shape
                   Circle.prototype = new Shape(null);
               </pre>
<p></p>
<p>One important difference between javadoc and JSDoc is that JSDoc deals with a much more dynamic language that javadoc. For example, in JavaScript there are many different ways to make one class a subclass of another. The JSDoc parser is able to catch some of these methods, but for particularly dynamic scripts the parser will not be able to do it all on its own. For that reason, JSDoc is customizable with a file called .jsdoc_config that resides in the JSDoc install directory. In this configuration file, JSDoc's behaviour can be customized for any kind of '@'-prefixed attribute. Although this configuration file actually contains Perl code, simple customizations can be done by someone with minimal experience with Perl. </p>JSDoc also uses a several non-javadoc '@'-attributes: <code>@constructor</code> and <code>@private</code> are two of the most important ones. As noted above, JavaScript has the capability to be a much more dynamic language than Java. The JSDoc parser can usually find class constructors on it's own, but there are some situations when it needs some additional assistance. For this reason, it is a good practice to always include the <code>@constructor</code> tag in the documentation for a class constructor, as shown below: <pre>                  <span>
<font face="Courier New"><font color="#000066">                  /**
                   * Nothing is a class that represents nothing
                   * </font><span><font color="#ff0000">@constructor</font></span>
<font color="#000066">                   */</font></font></span>
                  function Nothing(){
                     // ... initialization ...
                  }
               </pre>The <code>@private</code> attribute simply displays the marked method as being private. 
<p></p>
<p>To get more information on the use of the jsdoc.pl executable itself, run it with the <code>--help</code> commandline option. </p>
<div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table>
<table unselectable="on">
<tbody>
<tr>
<td>
<h3><a><font color="#000000">Tag Reference</font></a></h3></td></tr>
<tr>
<td>The following is a summary of the supported tags ('@'-attributes) that are supported by JSDoc. For actual examples of the usage of these tags, please see the test.js JavaScript file that is included in the JSDoc distribution. 
<table unselectable="on">
<tbody>
<tr>
<td><code>@param</code></td>
<td>Provide information about a function parameter. A datatype indicator can be added between curly braces with this tag, as follows: <pre>        /**
         * @param {String} paramName This is a string parameter
         */
                        </pre></td></tr>
<tr>
<td><code>@argument</code></td>
<td>Synonym for <code>@param</code> </td></tr>
<tr>
<td><code>@return</code></td>
<td>Provide information about the return value of a function. </td></tr>
<tr>
<td><code>@returns</code></td>
<td>Synonym for <code>@return</code> </td></tr>
<tr>
<td><code>@author</code></td>
<td>Provide information about the author of a JavaScript file or a function. </td></tr>
<tr>
<td><code>@deprecated</code></td>
<td>Signify that a function or class is deprecated, and should not be used if possible. </td></tr>
<tr>
<td><code>@see</code></td>
<td>Link to another class or function that is of importance to the current class or function. This tag can take several forms. 
<p>To link to another method within the same class: <pre>        @see #methodName
                        </pre>
<p>To link to another class: <pre>        @see ClassName
                        </pre>
<p>To link to a specific method of another class: <pre>        @see ClassName#methodName
                        </pre></td></tr>
<tr>
<td><code>@version</code></td>
<td>Show the version number of the current file or class </td></tr>
<tr>
<td><code>@requires</code></td>
<td>Define a dependency upon another class. The syntax for this tag is as follows: <pre>        @requires OtherClassName This is text to be shown
                        </pre></td></tr>
<tr>
<td><code>@throws</code></td>
<td>Show that a method can throw a certain type of exception. The syntax for this tag is: <pre>        @throws ExceptionType This is the label text
                        </pre></td></tr>
<tr>
<td><code>@exception</code></td>
<td>Synonym for <code>@throws</code> </td></tr>
<tr>
<td><code>@link</code></td>
<td>This is a powerful tag that can be used to link to a large number of other pages. It is also the only tag that can be used in the description text of a documentation string before the '@'-tag section. The usage is very similar to that of the <code>@see</code> tag, but the entire tag is wrapped in curly braces. For example: <pre>        /**
         * This utility method is also a member of the {@link String} class, 
         * in the form of the {@link String#utility} method. 
         */
                        </pre></td></tr>
<tr>
<td><code>@fileoverview</code></td>
<td>This is a special-use tag. If the first block of documentation in a file starts with a <code>@fileoverview</code> tag, the rest of the documentation block will be used to provide a file overview in the documentation. </td></tr>
<tr>
<td><code>@class</code></td>
<td>This tag is used in a constructor's documentation block to provide information about the actual class. The included documentation will then not be included in the constructor's documentation. </td></tr>
<tr>
<td><code>@constructor</code></td>
<td>Signify that a function is the constructor for a class. </td></tr>
<tr>
<td><code>@type</code></td>
<td>Show the return type of a function. For example: <pre>        /**
         * This function returns a String.
         * @return The name of the current user
         * @type String
         */
                        </pre></td></tr>
<tr>
<td><code>@extends</code></td>
<td>Used to show that a class is a subclass of another class. JSDoc is often quite good at picking this up on its own, but in some situations this tag is required. </td></tr>
<tr>
<td><code>@private</code></td>
<td>Signify that a function or class is private. Private classes and functions will not be available in the documentation unless JSDoc is run with the <code>--private</code> commandline option. </td></tr>
<tr>
<td><code>@final</code></td>
<td>Flag a value as being a final (constant) value. </td></tr>
<tr>
<td><code>@member</code></td>
<td>Show that a function is a member of a given class: <pre>        /**
         * @member MyClass
         */
 	function SomeFunc(){
	}
                        </pre></td></tr>
<tr>
<td><code>@ignore</code></td>
<td>Tell JSDoc to totally ignore this method. </td></tr>
<tr>
<td><code>@base</code></td>
<td>Force JSDoc to view the current class constructor as a subclass of the class given as the value to this tag: <pre>       /**
        * This is a subclass of Shape
        * @constructor
        * @base Shape
        */
       function Circle(){
           // ...
       }
			</pre></td></tr>
<tr>
<td><code>@exec</code></td>
<td><b><i>Experimental!</i></b><br>Force JSDoc to "execute" this method as part of its preprocessing step, in the same way that class contructors are executed. This can allow attributes to be added to a class from within a function. </td></tr></tbody></table>
<div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table>
<table unselectable="on">
<tbody>
<tr>
<td>
<h3><a><font color="#000000">Frequently Asked Questions</font></a></h3></td></tr>
<tr>
<td>
<ul>
<li><b>I get an error message that says <i>Can't locate HTML/Template.pm in @INC ......</i>. What's going on?</b> 
<p>This means that you don't have the HTML::Template perl module installed. Luckily, it's very easy to remedy this problem; see the Installation section of this page. </p>
<li><b>I've found a bug in JSDoc. What should I do?</b> 
<p>Go to the <a href="http://sourceforge.net/projects/jsdoc"><u><font color="#800080">JSDoc Project Page</font></u></a> and register a bug report. You can also send information about the bug to the <a href="http://sourceforge.net/mail/?group_id=30801"><u><font color="#0000ff">JSDoc-user mailing list</font></u></a>. But just before you do that, please make sure that it's actually a bug that we're talking about, and not just JSDoc acting differently that what you were expecting. </p>
<li><b>JSDoc segfaults! What should I do?</b> 
<p>This is a tough one to answer. JSDoc uses a lot of recursive regular expressions, and sometimes a certain combination of a certain build of perl and a certain JavaScript file will cause perl to segfault while running JSDoc. This problem mostly occurs with binary installations of perl; downloading the most recent source distribution of perl and building it on your own machine seems to solve this problem. </p>
<li><b>I want JSDoc to do <i>X</i>, but it doesn't!</b> 
<p>Well, that's actually not a question, it's more of a statement. However, it is stated quite frequently, so it's not totally out of place here. If you're interested in having a new feature added to JSDoc, you can register a Feature Request at the <a href="http://sourceforge.net/projects/jsdoc"><u><font color="#800080">JSDoc Project Page</font></u></a>. You may also want to consider sending information about your request to the <a href="http://sourceforge.net/mail/?group_id=30801"><u><font color="#0000ff">JSDoc-user mailing list</font></u></a>. </p>
<li><b>Is there a mailing list for JSDoc?</b> 
<p>Okay, I admit that this isn't actually a Frequently Asked Question; it's actually just an attempt to promote the <a href="http://sourceforge.net/mail/?group_id=30801"><u><font color="#0000ff">JSDoc-user mailing list</font></u></a>. </p>
<li><b>I want to help out with JSDoc. Where should I start?</b> 
<p>First of all, help is very welcome! The most welcome kinds of help are context diffs that fix a bug in JSDoc, but pretty much anything that's an attempt at helping out is appreciated. Use the <a href="http://sourceforge.net/mail/?group_id=30801"><u><font color="#0000ff">JSDoc-user mailing list</font></u></a>. </p></li></ul>
<div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table>
<table unselectable="on">
<tbody>
<tr>
<td>
<h3><a><font color="#000000">More Information</font></a></h3></td></tr>
<tr>
<td>
<p>A very complete and informative article (written by Rainer Eschen) on the use of JSDoc can be found at <a href="http://www.webetiser.de/jsdoc"><u><font color="#0000ff">Webetiser</font></u></a>. The article is based on JSDoc 1.5, but is still very relevant. I've been told that the article will be updated in the near future. 
<p>As noted above, the definitive reference for writing Java docstrings can be found at the <a href="http://java.sun.com/j2se/javadoc/writingdoccomments/"><u><font color="#0000ff">javadoc reference page</font></u></a>. Please send comments, bugs, complaints, requests for additional information, and whatever else to the <a href="http://sourceforge.net/mail/?group_id=30801"><u><font color="#0000ff">JSDoc mailing list</font></u></a>. </p>
<div><a href="http://spaces.msn.com/mmm2006-03-03_18.09/#top"><u><font color="#0000ff">Top</font></u></a></div></td></tr></tbody></table><a href="http://sourceforge.net/"><u><font color="#0000ff"><img height="62" alt="SourceForge.net Logo" src="http://sourceforge.net/sflogo.php?group_id=30801&amp;type=7" width="210" border="0"></font></u></a> </div><img src ="http://www.blogjava.net/beansoft/aggbug/147338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-09-22 11:23 <a href="http://www.blogjava.net/beansoft/archive/2007/09/22/147338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX 入门介绍 - (3) 整合 XML 和 DOM</title><link>http://www.blogjava.net/beansoft/archive/2007/05/23/119461.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 23 May 2007 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/05/23/119461.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/119461.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/05/23/119461.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/119461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/119461.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/beansoft/archive/2007/05/23/119461.html'>阅读全文</a><img src ="http://www.blogjava.net/beansoft/aggbug/119461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-05-23 18:02 <a href="http://www.blogjava.net/beansoft/archive/2007/05/23/119461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX入门介绍 - (2) GET 和 POST 配合表单</title><link>http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 23 May 2007 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/119444.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/119444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/119444.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html'>阅读全文</a><img src ="http://www.blogjava.net/beansoft/aggbug/119444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-05-23 17:11 <a href="http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX 入门培训 PPT 1.2 版本</title><link>http://www.blogjava.net/beansoft/archive/2007/05/16/117790.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 16 May 2007 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/05/16/117790.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/117790.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/05/16/117790.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/117790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/117790.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/beansoft/archive/2007/05/16/117790.html'>阅读全文</a><img src ="http://www.blogjava.net/beansoft/aggbug/117790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-05-16 11:27 <a href="http://www.blogjava.net/beansoft/archive/2007/05/16/117790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐一些AJAX视频和文章</title><link>http://www.blogjava.net/beansoft/archive/2007/05/14/117350.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 14 May 2007 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2007/05/14/117350.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/117350.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2007/05/14/117350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/117350.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/117350.html</trackback:ping><description><![CDATA[<p>&#160;</p>
<h4>多看看别人的观点和思路...</h4>
<p>&nbsp;</p>
<h4>推荐书籍: AJAX 快车道(Google搜索可得)</h4>
<h4><a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/07/AJAX_Lesson_01.html">AJAX培训第一讲：AJAX基础</a></h4>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 经过了5个小时的准备，10多个小时的录制和剪辑，我终于将第一次AJAX培训的内容做完了。录一次讲座真的是一件费神费时的事情，我也深切感受到了天轰穿兄录了数十次讲座有多么不容易。这是我第一次录制讲座，所以经验有些不足，而且对着屏幕一个人傻傻地说话总是不如对着观众说话，在语气上也略显单调。虽然我已经极力yy正在为数十人作讲座的情形，但是似乎效果不甚理想。另外不知道是什么原因，录下来的声音总是不像我的原声，听上去也有些沉闷，请大家多多包涵了。如果大家对于讲座的方式上有什么意见或者建议的话，请回复在这里，您的支持能够让我们的工作越做越好。如果大家对于讲座的内容有任何疑问，请在Q &amp; A专用文章里进行提问，当然如果您有其它任何疑问的话，也能在那里提出，我会尽快为您解答。&nbsp;&nbsp;<a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/07/AJAX_Lesson_01.html">阅读全文</a>
<p>&nbsp;
<h4><a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/27/AJAX_Lesson_02_2.html">AJAX培训第二讲：使用AJAX框架（下）</a></h4>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &#8220;AJAX培训第二讲：使用AJAX框架&#8221;现在拆成了两部分，现在发布是第一部分，探讨了AJAX框架相关内容，并给出了一些最简单的例子。&nbsp;&nbsp;<a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/27/AJAX_Lesson_02_2.html">阅读全文</a>
<p>posted @ <a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/27/AJAX_Lesson_02_2.html">2006-11-27 02:51</a> Jeffrey Zhao 阅读(3305) | <a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/27/AJAX_Lesson_02_2.html#FeedBack">评论 (35)</a> <a href="http://www.cnblogs.com/JeffreyZhao/admin/EditPosts.aspx?postid=573430">编辑</a> | <a></a>
<h4><a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/25/AJAX_Lesson_02_1.html">AJAX培训第二讲：使用AJAX框架（上）</a></h4>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &#8220;AJAX培训第二讲：使用AJAX框架&#8221;现在拆成了两部分，现在发布是第一部分，探讨了ASP.NET 2.0中的AJAX能力。而第二部分我还在重新修补和录制，大概会在周一发布。&nbsp;&nbsp;<a href="http://www.cnblogs.com/JeffreyZhao/archive/2006/11/25/AJAX_Lesson_02_1.html">阅读全文</a></p>
<img src ="http://www.blogjava.net/beansoft/aggbug/117350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2007-05-14 15:27 <a href="http://www.blogjava.net/beansoft/archive/2007/05/14/117350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>QQ 群关于 AJAX 基础的一些讨论</title><link>http://www.blogjava.net/beansoft/archive/20