﻿<?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-花-随笔分类-WEB Design</title><link>http://www.blogjava.net/hua/category/10656.html</link><description>即使世界明天毁灭，我也要在今天种下我的葡萄树。 </description><language>zh-cn</language><lastBuildDate>Sat, 28 Apr 2007 01:39:11 GMT</lastBuildDate><pubDate>Sat, 28 Apr 2007 01:39:11 GMT</pubDate><ttl>60</ttl><item><title>window.showModalDialog 简介</title><link>http://www.blogjava.net/hua/archive/2007/04/28/114250.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Sat, 28 Apr 2007 01:29:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2007/04/28/114250.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/114250.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2007/04/28/114250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/114250.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/114250.html</trackback:ping><description><![CDATA[基本介绍：<br>showModalDialog() (IE 4+ 支持)<br>showModelessDialog() (IE 5+ 支持)<br>window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。<br>window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。<br><br>使用方法：
<div class=code>vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])<br>vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])</div>
<br>参数说明：<br>sURL--<br>必选参数，类型：字符串。用来指定对话框要显示的文档的URL。<br>vArguments--<br>可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。<br>sFeatures--<br>可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号&#8220;;&#8221;隔开。<br>1.dialogHeight :对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。<br>2.dialogWidth: 对话框宽度。<br>3.dialogLeft: 离屏幕左的距离。<br>4.dialogTop: 离屏幕上的距离。<br>5.center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。<br>6.help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。<br>7.resizable: {yes | no | 1 | 0 } ［ＩＥ５＋］：是否可被改变大小。默认no。<br>8.status: {yes | no | 1 | 0 } ［IE5+］：是否显示状态栏。默认为yes[ Modeless]或no[Modal]。<br>9.scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。<br>下面几个属性是用在HTA中的，在一般的网页中一般不使用。<br>10.dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。<br>11.edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。<br>12.unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。<br><br>参数传递：<br>1.要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如：<br>-------------------------------<br>parent.htm
<div class=code>&lt;script&gt;<br>var obj = new Object();<br>obj.name="pin7";<br>window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");<br>&lt;/script&gt;<br>modal.htm<br>&lt;script&gt;<br>var obj = window.dialogArguments<br>alert("您传递的参数为：" + obj.name)<br>&lt;/script&gt;</div>
-------------------------------<br>2.可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。例如：<br>------------------------------<br>parent.htm
<div class=code>&lt;script&gt;<br>str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");<br>alert(str);<br>&lt;/script&gt;<br>modal.htm<br>&lt;script&gt;<br>window.returnValue="<a href="http://www.pin7.cn/">http://www.pin7.cn</a>";<br>&lt;/script&gt;</div>
<img src ="http://www.blogjava.net/hua/aggbug/114250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2007-04-28 09:29 <a href="http://www.blogjava.net/hua/archive/2007/04/28/114250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Meta标签详解 [转]</title><link>http://www.blogjava.net/hua/archive/2007/04/28/114242.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Sat, 28 Apr 2007 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2007/04/28/114242.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/114242.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2007/04/28/114242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/114242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/114242.html</trackback:ping><description><![CDATA[Meta标签详解&nbsp;[转]<br><br>Meta标签详解<br>　　引言&nbsp;<br>　　您的个人网站即使做得再精彩，在&#8220;浩瀚如海&#8221;的网络空间中，也如一叶扁舟不易为人发现，如何推广<br>个人网站，人们首先想到的方法无外乎以下几种：　　<br>　　●　在搜索引擎中登录自己的个人网站　　<br>　　●　在知名网站加入你个人网站的链接&nbsp;<br>　　●　在论坛中发帖子宣传你的个人网站&nbsp;<br>　　很多人却忽视了HTML标签META的强大功效，一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性，有兴趣吗，谁我来重新认识一下META标签吧！&nbsp;　　META标签是HTML语言HEAD区的一个辅助性标签，它位于HTML文档头部的&lt;HEAD&gt;标记和&lt;TITLE&gt;标记之间，它提供用户不可见的信息。meta标签通常用来为搜索引擎robots定义页面主题，或者是定义用户浏览器上的cookie；它可以用于鉴别作者，设定页面格式，标注内容提要和关键字；还可以设置页面使其可以根据你定义的时间间隔刷新自己,以及设置RASC内容等级，等等。&nbsp;<br><br>　　详细介绍&nbsp;<br>　　下面介绍一些有关&nbsp;标记的例子及解释。&nbsp;<br>　　META标签分两大部分：HTTP标题信息(HTTP-EQUIV)和页面描述信息(NAME)。&nbsp;<br><br>　　★HTTP-EQUIV&nbsp;<br>　　HTTP-EQUIV类似于HTTP的头部协议，它回应给浏览器一些有用的信息，以帮助正确和精确地显示网页内容。常用的HTTP-EQUIV类型有：&nbsp;<br><br>　　1、Content-Type和Content-Language&nbsp;(显示字符集的设定)&nbsp;<br>　　说明：设定页面使用的字符集，用以说明主页制作所使用的文字已经语言，浏览器会根据此来调用相应的字符集显示page内容。&nbsp;<br>　　用法：&lt;Meta&nbsp;http-equiv="Content-Type"&nbsp;Content="text/html;&nbsp;Charset=gb2312"&gt;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Content-Language"&nbsp;Content="zh-CN"&gt;&nbsp;<br>　　注意：　该META标签定义了HTML页面所使用的字符集为GB2132，就是国标汉字码。如果将其中的&#8220;charset=GB2312&#8221;替换成&#8220;BIG5&#8221;，则该页面所用的字符集就是繁体中文Big5码。当你浏览一些国外的站点时，IE浏览器会提示你要正确显示该页面需要下载xx语支持。这个功能就是通过读取HTML页面META标签的Content-Type属性而得知需要使用哪种字符集显示该页面的。如果系统里没有装相应的字符集，则IE就提示下载。其他的语言也对应不同的charset，比如日文的字符集是&#8220;iso-2022-jp&nbsp;&#8221;，韩文的是&#8220;ks_c_5601&#8221;。<br>　　　　　　<br>　　Content-Type的Content还可以是：text/xml等文档类型；<br>　　Charset选项：ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii,&nbsp;x-mac-roman,&nbsp;iso-8859-2,&nbsp;x-mac-ce,&nbsp;iso-2022-jp,&nbsp;x-sjis,&nbsp;x-euc-jp,euc-kr,&nbsp;iso-2022-kr,&nbsp;gb2312,&nbsp;gb_2312-80,&nbsp;x-euc-tw,&nbsp;x-cns11643-1,x-cns11643-2等字符集；Content-Language的Content还可以是：EN、FR等语言代码。&nbsp;<br>　　2、Refresh&nbsp;(刷新)&nbsp;<br>　　　说明：让网页多长时间（秒）刷新自己，或在多长时间后让网页自动链接到其它网页。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Refresh"&nbsp;Content="30"&gt;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Refresh"&nbsp;Content="5;&nbsp;Url=<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href='http://www.xia8.net">/' target=_blank><u><font color=#0000ff>http://www.xia8.net"&gt;</font></u></a> <br>　　　注意：其中的5是指停留5秒钟后自动刷新到URL网址。&nbsp;<br>　　3、Expires&nbsp;(期限)&nbsp;<br>　　　说明：指定网页在缓存中的过期时间，一旦网页过期，必须到服务器上重新调阅。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Expires"&nbsp;Content="0"&gt;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Expires"&nbsp;Content="Wed,&nbsp;26&nbsp;Feb&nbsp;1997&nbsp;08:21:57&nbsp;GMT"&gt;<br>　　　注意：必须使用GMT的时间格式，或直接设为0(数字表示多少时间后过期)。&nbsp;<br>　　4、Pragma&nbsp;(cach模式)&nbsp;<br>　　　说明：禁止浏览器从本地机的缓存中调阅页面内容。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Pragma"&nbsp;Content="No-cach"&gt;<br>　　　注意：网页不保存在缓存中，每次访问都刷新页面。这样设定，访问者将无法脱机浏览。&nbsp;<br>　　5、Set-Cookie&nbsp;(cookie设定)&nbsp;<br>　　说明：浏览器访问某个页面时会将它存在缓存中，下次再次访问时就可从缓存中读取，以提高速度。当你希望访问者每次都刷新你广告的图标，或每次都刷新你的计数器，就要禁用缓存了。通常HTML文件没有必要禁用缓存，对于ASP等页面，就可以使用禁用缓存，因为每次看到的页面都是在服务器动态生成的，缓存就失去意义。如果网页过期，那么存盘的cookie将被删除。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Set-Cookie"&nbsp;Content="cookievalue=xxx;&nbsp;expires=Wednesday,<br>　　　　　　&nbsp;21-Oct-98&nbsp;16:14:21&nbsp;GMT;&nbsp;path=/"&gt;<br>　　　注意：必须使用GMT的时间格式。&nbsp;<br>　　6、Window-target&nbsp;(显示窗口的设定)&nbsp;<br>　　　说明：强制页面在当前窗口以独立页面显示。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Widow-target"&nbsp;Content="_top"&gt;<br>　　　注意：这个属性是用来防止别人在框架里调用你的页面。Content选项：_blank、_top、_self、_parent。&nbsp;<br>　　7、Pics-label&nbsp;(网页RSAC等级评定)<br>　　　说明：在IE的Internet选项中有一项内容设置，可以防止浏览一些受限制的网站，而网站的限制级<br>　　　　　　别就是通过该参数来设置的。<br>　　　用法：&lt;META&nbsp;http-equiv="Pics-label"&nbsp;Contect=<br>　　　　　　　　　　　　　　　"(PICS－1.1'<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://www.rsac.org/ratingsv01.html" target=_blank ?><u><font color=#0000ff>http://www.rsac.org/ratingsv01.html'</font></u></a> <br>　　　　　　&nbsp;I&nbsp;gen&nbsp;comment&nbsp;'RSACi&nbsp;North&nbsp;America&nbsp;Sever'&nbsp;by&nbsp;'inet@microsoft.com'&nbsp;<br>　　　　　　　for&nbsp;'<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://www.microsoft.com/" target=_blank ?><u><font color=#0000ff>http://www.microsoft.com'</font></u></a> &nbsp;on&nbsp;'1997.06.30T14:21－0500'&nbsp;r(n0&nbsp;s0&nbsp;v0&nbsp;l0))"&gt;&nbsp;<br>　　　注意：不要将级别设置的太高。RSAC的评估系统提供了一种用来评价Web站点内容的标准。用户可以设置Microsoft&nbsp;Internet&nbsp;Explorer（IE3.0以上）来排除包含有色情和暴力内容的站点。上面这个例子中的HTML取自Microsoft的主页。代码中的（n&nbsp;0&nbsp;s&nbsp;0&nbsp;v&nbsp;0&nbsp;l&nbsp;0）表示该站点不包含不健康内容。级别的评定是由RSAC，即美国娱乐委员会的评级机构评定的，如果你想进一步了解RSAC评估系统的等级内容，或者你需要评价自己的网站，可以访问RSAC的站点：<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://www.rsac.org/。" target=_blank><u><font color=#0000ff>http://www.rsac.org/。</font></u></a> &nbsp;<br>　　8、Page-Enter、Page-Exit&nbsp;(进入与退出)&nbsp;<br>　　　说明：这个是页面被载入和调出时的一些特效。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Page-Enter"&nbsp;Content="blendTrans(Duration=0.5)"&gt;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Page-Exit"&nbsp;Content="blendTrans(Duration=0.5)"&gt;<br>　　　注意：blendTrans是动态滤镜的一种，产生渐隐效果。另一种动态滤镜RevealTrans也可以用于页面进入与退出效果:&nbsp;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Page-Enter"&nbsp;Content="revealTrans(duration=x,&nbsp;transition=y)"&gt;<br>　　　　　　&lt;Meta&nbsp;http-equiv="Page-Exit"&nbsp;Content="revealTrans(duration=x,&nbsp;transition=y)"&gt;&nbsp;<br>　　　　　　　Duration　　表示滤镜特效的持续时间(单位：秒)<br>　　　　　　　Transition　滤镜类型。表示使用哪种特效，取值为0-23。&nbsp;<br>　　　　　　　0&nbsp;矩形缩小<br>　　　　　　　1&nbsp;矩形扩大<br>　　　　　　　2&nbsp;圆形缩小<br>　　　　　　　3&nbsp;圆形扩大<br>　　　　　　　4&nbsp;下到上刷新<br>　　　　　　　5&nbsp;上到下刷新<br>　　　　　　　6&nbsp;左到右刷新<br>　　　　　　　7&nbsp;右到左刷新<br>　　　　　　　8&nbsp;竖百叶窗<br>　　　　　　　9&nbsp;横百叶窗<br>　　　　　　&nbsp;10&nbsp;错位横百叶窗<br>　　　　　　&nbsp;11&nbsp;错位竖百叶窗<br>　　　　　　&nbsp;12&nbsp;点扩散<br>　　　　　　&nbsp;13&nbsp;左右到中间刷新<br>　　　　　　&nbsp;14&nbsp;中间到左右刷新<br>　　　　　　&nbsp;15&nbsp;中间到上下<br>　　　　　　&nbsp;16&nbsp;上下到中间<br>　　　　　　&nbsp;17&nbsp;右下到左上<br>　　　　　　&nbsp;18&nbsp;右上到左下<br>　　　　　　&nbsp;19&nbsp;左上到右下<br>　　　　　　&nbsp;20&nbsp;左下到右上<br>　　　　　　&nbsp;21&nbsp;横条<br>　　　　　　&nbsp;22&nbsp;竖条<br>　　　　　　&nbsp;23&nbsp;以上22种随机选择一种&nbsp;<br>　　9、MSThemeCompatible&nbsp;(XP主题)<br>　　　说明：是否在IE中关闭&nbsp;xp&nbsp;的主题<br>　　　用法：&lt;Meta&nbsp;http-equiv="MSThemeCompatible"&nbsp;Content="Yes"&gt;<br>　　　注意：关闭&nbsp;xp&nbsp;的蓝色立体按钮系统显示样式，从而和win2k&nbsp;很象。&nbsp;<br>　　10、IE6&nbsp;(页面生成器)<br>　　　说明：页面生成器generator，是ie6<br>　　　用法：&lt;Meta&nbsp;http-equiv="IE6"&nbsp;Content="Generator"&gt;<br>　　　注意：用什么东西做的，类似商品出厂厂商。&nbsp;<br>　　11、Content-Script-Type&nbsp;(脚本相关)<br>　　　说明：这是近来W3C的规范，指明页面中脚本的类型。<br>　　　用法：&lt;Meta&nbsp;http-equiv="Content-Script-Type"&nbsp;Content="text/javascript"&gt;<br>　　　注意：&nbsp;<br>　　★NAME变量&nbsp;<br>　　name是描述网页的，对应于Content（网页内容），以便于搜索引擎机器人查找、分类（目前几乎所有的搜索引擎都使用网上机器人自动查找meta值来给网页分类）。<br>　　name的value值（name=""）指定所提供信息的类型。有些值是已经定义好的。例如description(说明)、keyword(关键字)、refresh(刷新)等。还可以指定其他任意值，如：creationdate(创建日期)&nbsp;、<br>document&nbsp;ID(文档编号)和level(等级)等。<br>　　name的content指定实际内容。如：如果指定level(等级)为value(值)，则Content可能是beginner(初级)、intermediate(中级)、advanced(高级)。&nbsp;<br><br>　　1、Keywords&nbsp;(关键字)<br>　　　说明：为搜索引擎提供的关键字列表<br>　　　用法：&lt;Meta&nbsp;name="Keywords"&nbsp;Content="关键词1,关键词2，关键词3,关键词4,&#8230;&#8230;"&gt;<br>　　　注意：各关键词间用英文逗号&#8220;,&#8221;隔开。META的通常用处是指定搜索引擎用来提高搜索质量的关键词。当数个META元素提供文档语言从属信息时，搜索引擎会使用lang特性来过滤并通过用户的语言优先参照来显示搜索结果。例如：<br>　　　　　　&lt;Meta&nbsp;name="Kyewords"&nbsp;Lang="EN"&nbsp;Content="vacation,greece,sunshine"&gt;<br>　　　　　　&lt;Meta&nbsp;name="Kyewords"&nbsp;Lang="FR"&nbsp;Content="vacances,gr&#232;:ce,soleil"&gt;&nbsp;<br>　　2、Description&nbsp;(简介)<br>　　　说明：Description用来告诉搜索引擎你的网站主要内容。<br>　　　用法：&lt;Meta&nbsp;name="Description"&nbsp;Content="你网页的简述"&gt;<br>　　　注意：&nbsp;<br>　　3、Robots&nbsp;(机器人向导)<br>　　　说明：Robots用来告诉搜索机器人哪些页面需要索引，哪些页面不需要索引。Content的参数有all、none、index、noindex、follow、nofollow。默认是all。<br>　　　用法：&lt;Meta&nbsp;name="Robots"&nbsp;Content="All|None|Index|Noindex|Follow|Nofollow"&gt;<br>　　　注意：许多搜索引擎都通过放出robot/spider搜索来登录网站，这些robot/spider就要用到meta元素的一些特性来决定怎样登录。&nbsp;<br>　　　&nbsp;all：文件将被检索，且页面上的链接可以被查询；<br>　　　&nbsp;none：文件将不被检索，且页面上的链接不可以被查询；(和&nbsp;"noindex,&nbsp;no&nbsp;follow"&nbsp;起相同作用)<br>　　　&nbsp;index：文件将被检索；（让robot/spider登录）<br>　　　&nbsp;follow：页面上的链接可以被查询；<br>　　　&nbsp;noindex：文件将不被检索，但页面上的链接可以被查询；(不让robot/spider登录)<br>　　　nofollow：文件将不被检索，页面上的链接可以被查询。(不让robot/spider顺着此页的连接往下探找)&nbsp;<br>　　4、Author&nbsp;(作者)<br>　　　说明：标注网页的作者或制作组<br>　　　用法：&lt;Meta&nbsp;name="Author"&nbsp;Content="张三，abc@sina.com"&gt;<br>　　　注意：Content可以是：你或你的制作组的名字,或Email&nbsp;<br>　　5、Copyright&nbsp;(版权)<br>　　　说明：标注版权<br>　　　用法：&lt;Meta&nbsp;name="Copyright"&nbsp;Content="本页版权归Zerospace所有。All&nbsp;Rights&nbsp;Reserved"&gt;<br>　　　注意：&nbsp;<br>　　6、Generator&nbsp;(编辑器)<br>　　　说明：编辑器的说明<br>　　　用法：&lt;Meta&nbsp;name="Generator"&nbsp;Content="PCDATA|FrontPage|"&gt;<br>　　　注意：Content="你所用编辑器"&nbsp;<br>　　7、revisit-after&nbsp;(重访)<br>　　　说明：<br>　　　用法：&lt;META&nbsp;name="revisit-after"&nbsp;CONTENT="7&nbsp;days"&nbsp;&gt;<br>　　　注意：&nbsp;<br>　　★Head中的其它一些用法&nbsp;<br><br>　　1、scheme&nbsp;(方案)<br>　　　说明：scheme&nbsp;can&nbsp;be&nbsp;used&nbsp;when&nbsp;name&nbsp;is&nbsp;used&nbsp;to&nbsp;specify&nbsp;how&nbsp;the&nbsp;value&nbsp;of&nbsp;content&nbsp;should<br>　　　　　　be&nbsp;interpreted.<br>　　　用法：&lt;meta&nbsp;scheme="ISBN"&nbsp;name="identifier"&nbsp;content="0-14-043205-1"&nbsp;/&gt;<br>　　　注意：&nbsp;<br>　　2、Link&nbsp;(链接)<br>　　　说明：链接到文件<br>　　　用法：&lt;Link&nbsp;href="soim.ico"&nbsp;rel="Shortcut&nbsp;Icon"&gt;<br>　　　注意：很多网站如果你把她保存在收件夹中后，会发现它连带着一个小图标，如果再次点击进入之后还会发现地址栏中也有个小图标。现在只要在你的页头加上这段话，就能轻松实现这一功能。&lt;LINK&gt;&nbsp;用来将目前文件与其它&nbsp;URL&nbsp;作连结，但不会有连结按钮，用於&nbsp;&lt;HEAD&gt;&nbsp;标记间，&nbsp;格式如下：&nbsp;<br>　　　　　　　&lt;link&nbsp;href="URL"&nbsp;rel="relationship"&gt;&nbsp;<br>　　　　　　　&lt;link&nbsp;href="URL"&nbsp;rev="relationship"&gt;&nbsp;<br>　　3、Base&nbsp;(基链接)<br>　　　说明：插入网页基链接属性<br>　　　用法：&lt;Base&nbsp;href="<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href='http://www.xia8.net/"' target=_blank><u><font color=#0000ff>http://www.xia8.net/"</font></u></a> &nbsp;target="_blank"&gt;<br>　　　注意：你网页上的所有相对路径在链接时都将在前面加上&#8220;<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href='http://www.cn8cn.com/&#8221;。其中target="_blank"是链接文件在新的窗口中打开，你可以做其他设置。将&#8220;_blank&#8221;改为&#8220;_parent&#8221;是链接文件将在当前窗口的父级窗口中打开；改为&#8220;_self&#8221;链接文件在当前窗口（帧）中打开；改为&#8220;_top&#8221;链接文件全屏显示。' target=_blank><u><font color=#0000ff>http://www.cn8cn.com/&#8221;。其中target="_blank"是链接文件在新的窗口中打开，你可以做其他设置。将&#8220;_blank&#8221;改为&#8220;_parent&#8221;是链接文件将在当前窗口的父级窗口中打开；改为&#8220;_self&#8221;链接文件在当前窗口（帧）中打开；改为&#8220;_top&#8221;链接文件全屏显示。</font></u></a> &nbsp;<br><br>　　以上是META标签的一些基本用法，其中最重要的就是：Keywords和Description的设定。为什么呢？道理很简单，这两个语句可以让搜索引擎能准确的发现你，吸引更多的人访问你的站点!根据现在流行搜索引擎(Google，Lycos，AltaVista等)的工作原理，搜索引擎先派机器人自动在WWW上搜索，当发现新的网站时，便于检索页面中的Keywords和Description，并将其加入到自己的数据库，然后再根据关键词的密度将网站排序。&nbsp;<br>　　由此看来，我们必须记住添加Keywords和Description的META标签，并尽可能写好关键字和简介。否则，<br>后果就会是：<br>　　<br>　　●　如果你的页面中根本没有Keywords和Description的META标签，那么机器人是无法将你的站点加入数<br>　　　　据库，网友也就不可能搜索到你的站点。&nbsp;<br>　　●　如果你的关键字选的不好，关键字的密度不高，被排列在几十甚至几百万个站点的后面被点击的可<br>　　　　能性也是非常小的。&nbsp;<br>　　写好Keywords(关键字)要注意以下几点：&nbsp;<br><br>　　●　不要用常见词汇。例如www、homepage、net、web等。&nbsp;<br>　　●　不要用形容词，副词。例如最好的，最大的等。&nbsp;<br>　　●　不要用笼统的词汇，要尽量精确。例如&#8220;爱立信手机&#8221;，改用&#8220;T28SC&#8221;会更好。&nbsp;<br><br>　　&#8220;三人之行，必有我师&#8221;，寻找合适关键词的技巧是：到Google、Lycos、Alta等著名搜索引擎，搜索与<br>你的网站内容相仿的网站，查看排名前十位的网站的META关键字，将它们用在你的网站上，效果可想而知了。&nbsp;<br>　　★小窍门&nbsp;<br>　　为了提高搜索点击率，这里还有一些&#8220;捷径&#8221;可以帮得到你：&nbsp;<br>　　●　为了增加关键词的密度，将关键字隐藏在页面里(将文字颜色定义成与背景颜色一样)。&nbsp;<br>　　●　在图像的ALT注释语句中加入关键字。如：&lt;IMG&nbsp;SRC="xxx.gif"&nbsp;Alt="Keywords"&gt;&nbsp;<br>　　●　利用HTML的注释语句，在页面代码里加入大量关键字。用法：&nbsp;&lt;!--&nbsp;这里插入关键字&nbsp;--&gt;&nbsp;<br><br><br>　　&lt;title&gt;文件头，显示在浏览器标题区&lt;/title&gt;<br>　　&lt;meta&nbsp;http-equiv="Content-Language"&nbsp;content="zh-cn"&gt;<br>　　&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;<br>　　&lt;meta&nbsp;name="GENERATOR"&nbsp;content="Microsoft&nbsp;FrontPage&nbsp;4.0"&gt;<br>　　&lt;meta&nbsp;name="ProgId"&nbsp;content="FrontPage.Editor.Document"&gt;<br>　　&lt;meta&nbsp;name="制作人"&nbsp;content="唐蓉生"&gt;<br>　　&lt;meta&nbsp;name="主题词"&nbsp;content="HTML&nbsp;网页制作&nbsp;课件"&gt;<br><br><br>
<img src ="http://www.blogjava.net/hua/aggbug/114242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2007-04-28 09:14 <a href="http://www.blogjava.net/hua/archive/2007/04/28/114242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用的js脚本</title><link>http://www.blogjava.net/hua/archive/2007/04/28/114241.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Sat, 28 Apr 2007 01:13:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2007/04/28/114241.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/114241.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2007/04/28/114241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/114241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/114241.html</trackback:ping><description><![CDATA[常用的js脚本<br><br>BS开发中常用的Javascript技术&nbsp;<br>一、验证类&nbsp;<br>1、数字验证内&nbsp;<br>&nbsp;&nbsp;1.1&nbsp;整数&nbsp;<br>&nbsp;&nbsp;1.2&nbsp;大于0的整数&nbsp;（用于传来的ID的验证)&nbsp;<br>&nbsp;&nbsp;1.3&nbsp;负整数的验证&nbsp;<br>&nbsp;&nbsp;1.4&nbsp;整数不能大于iMax&nbsp;<br>&nbsp;&nbsp;1.5&nbsp;整数不能小于iMin&nbsp;<br>2、时间类&nbsp;<br>&nbsp;&nbsp;2.1&nbsp;短时间，形如&nbsp;(13:04:06)&nbsp;<br>&nbsp;&nbsp;2.2&nbsp;短日期，形如&nbsp;(2003-12-05)&nbsp;<br>&nbsp;&nbsp;2.3&nbsp;长时间，形如&nbsp;(2003-12-05&nbsp;13:04:06)&nbsp;<br>&nbsp;&nbsp;2.4&nbsp;只有年和月。形如(2003-05,或者2003-5)&nbsp;<br>&nbsp;&nbsp;2.5&nbsp;只有小时和分钟,形如(12:03)&nbsp;<br>3、表单类&nbsp;<br>&nbsp;&nbsp;3.1&nbsp;所有的表单的值都不能为空&nbsp;<br>&nbsp;&nbsp;3.2&nbsp;多行文本框的值不能为空。&nbsp;<br>&nbsp;&nbsp;3.3&nbsp;多行文本框的值不能超过sMaxStrleng&nbsp;<br>&nbsp;&nbsp;3.4&nbsp;多行文本框的值不能少于sMixStrleng&nbsp;<br>&nbsp;&nbsp;3.5&nbsp;判断单选框是否选择。&nbsp;<br>&nbsp;&nbsp;3.6&nbsp;判断复选框是否选择.&nbsp;<br>&nbsp;&nbsp;3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<br>&nbsp;&nbsp;3.8&nbsp;文件上传过程中判断文件类型&nbsp;<br>4、字符类&nbsp;<br>&nbsp;&nbsp;4.1&nbsp;判断字符全部由a-Z或者是A-Z的字字母组成&nbsp;<br>&nbsp;&nbsp;4.2&nbsp;判断字符由字母和数字组成。&nbsp;<br>&nbsp;&nbsp;4.3&nbsp;判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母&nbsp;<br>&nbsp;&nbsp;4.4&nbsp;字符串替换函数.Replace();&nbsp;<br>5、浏览器类&nbsp;<br>&nbsp;&nbsp;5.1&nbsp;判断浏览器的类型&nbsp;<br>&nbsp;&nbsp;5.2&nbsp;判断ie的版本&nbsp;<br>&nbsp;&nbsp;5.3&nbsp;判断客户端的分辨率&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>6、结合类&nbsp;<br>&nbsp;&nbsp;6.1&nbsp;email的判断。&nbsp;<br>&nbsp;&nbsp;6.2&nbsp;手机号码的验证&nbsp;<br>&nbsp;&nbsp;6.3&nbsp;身份证的验证&nbsp;<br>&nbsp;&nbsp;&nbsp;<br><br>二、功能类&nbsp;<br><br>1、时间与相关控件类&nbsp;<br>&nbsp;&nbsp;1.1&nbsp;日历&nbsp;<br>&nbsp;&nbsp;1.2&nbsp;时间控件&nbsp;<br>&nbsp;&nbsp;1.3&nbsp;万年历&nbsp;<br>&nbsp;&nbsp;1.4&nbsp;显示动态显示时钟效果（文本，如OA中时间）&nbsp;<br>&nbsp;&nbsp;1.5&nbsp;显示动态显示时钟效果&nbsp;(图像，像手表)&nbsp;&nbsp;<br>2、表单类&nbsp;<br>&nbsp;&nbsp;2.1&nbsp;自动生成表单&nbsp;<br>&nbsp;&nbsp;2.2&nbsp;动态添加，修改，删除下拉框中的元素&nbsp;<br>&nbsp;&nbsp;2.3&nbsp;可以输入内容的下拉框&nbsp;<br>&nbsp;&nbsp;2.4&nbsp;多行文本框中只能输入iMax文字。如果多输入了，自动减少到iMax个文字（多用于短信发送)&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>3、打印类&nbsp;<br>&nbsp;&nbsp;3.1&nbsp;打印控件&nbsp;<br>4、事件类&nbsp;<br>&nbsp;&nbsp;4.1&nbsp;屏蔽右键&nbsp;<br>&nbsp;&nbsp;4.2&nbsp;屏蔽所有功能键&nbsp;<br>&nbsp;&nbsp;4.3&nbsp;--&gt;&nbsp;和&lt;--&nbsp;F5&nbsp;F11,F9,F1&nbsp;<br>&nbsp;&nbsp;4.4&nbsp;屏蔽组合键ctrl+N&nbsp;<br>5、网页设计类&nbsp;<br>&nbsp;&nbsp;5.1&nbsp;连续滚动的文字，图片（注意是连续的，两段文字和图片中没有空白出现）&nbsp;<br>&nbsp;&nbsp;5.2&nbsp;html编辑控件类&nbsp;<br>&nbsp;&nbsp;5.3&nbsp;颜色选取框控件&nbsp;<br>&nbsp;&nbsp;5.4&nbsp;下拉菜单&nbsp;<br>&nbsp;&nbsp;5.5&nbsp;两层或多层次的下拉菜单&nbsp;<br>&nbsp;&nbsp;5.6&nbsp;仿IE菜单的按钮。（效果如rongshuxa.com的导航栏目)&nbsp;<br>&nbsp;&nbsp;5.7&nbsp;状态栏，title栏的动态效果（例子很多，可以研究一下）&nbsp;<br>&nbsp;&nbsp;5.8&nbsp;双击后，网页自动滚屏&nbsp;<br>6、树型结构。&nbsp;<br>&nbsp;&nbsp;6.1&nbsp;asp+SQL版&nbsp;<br>&nbsp;&nbsp;6.2&nbsp;asp+xml+sql版&nbsp;<br>&nbsp;&nbsp;6.3&nbsp;java+sql或者java+sql+xml&nbsp;<br>7、无边框效果的制作&nbsp;<br>8、连动下拉框技术&nbsp;<br>9、文本排序&nbsp;<br>10，画图类，含饼、柱、矢量贝滋曲线&nbsp;<br>11，操纵客户端注册表类&nbsp;<br>12，DIV层相关（拖拽、显示、隐藏、移动、增加）&nbsp;<br>13，TABLAE相关(客户端动态增加行列，模拟进度条，滚动列表等)&nbsp;<br>14，各种&lt;object&nbsp;classid=&gt;相关类，如播放器，flash与脚本互动等&nbsp;<br>16,&nbsp;刷新/模拟无刷新&nbsp;异步调用类（XMLHttp或iframe,frame）&nbsp;<br><br>&nbsp;<br><br>&nbsp;<br><br>&lt;script&nbsp;language="JavaScript"&gt;&nbsp;<br>&lt;!--&nbsp;<br>function&nbsp;check(text){&nbsp;<br>var&nbsp;checkstr,iMax=5,iMin=3&nbsp;<br>checkstr="isInt:"+(parseInt(text)==text)+"\n"&nbsp;<br>checkstr+="isID:"+((parseInt(text)==text)&amp;&amp;(text&gt;=0))+"\n"&nbsp;<br>checkstr+="小于"+iMax+":"+((parseInt(text)==text)&amp;&amp;(text&lt;iMax))+"\n"&nbsp;<br>checkstr+="大于"+iMin+":"+((parseInt(text)==text)&amp;&amp;(text&gt;iMin))+"\n"&nbsp;<br>alert(checkstr)&nbsp;<br>}&nbsp;<br>//--&gt;&nbsp;<br>&nbsp;<br>&lt;form&nbsp;method=post&nbsp;action=""&gt;&nbsp;<br>&lt;input&nbsp;type="text"&nbsp;id="text1"&nbsp;onchange="check(this.value)"&gt;&nbsp;<br>&lt;/form&gt;&nbsp;<br><br>&nbsp;<br><br>4、事件类&nbsp;<br>&nbsp;&nbsp;4.1&nbsp;屏蔽右键&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在body标签里加上oncontextmenu=self.event.returnValue=false&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;4.2&nbsp;屏蔽所有功能键&nbsp;<br><br>&nbsp;&nbsp;4.3&nbsp;--&gt;&nbsp;和&lt;--&nbsp;F5&nbsp;F11,F9,F1&nbsp;<br><br>&nbsp;&nbsp;4.4&nbsp;屏蔽组合键ctrl+N&nbsp;<br><br>&lt;script&nbsp;language=javascript&gt;&nbsp;<br>function&nbsp;KeyDown(){&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((window.event.keyCode==37)||&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;&#8592;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(window.event.keyCode==39))){&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;&#8594;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("不准你使用ALT+方向键前进或后退网页！"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.keyCode==8)||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽退格删除键&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(event.keyCode==116)){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.ctrlKey)&amp;&amp;(event.keyCode==78)){&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Ctrl+n&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.shiftKey)&amp;&amp;(event.keyCode==121)){&nbsp;//屏蔽&nbsp;shift+F10&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;if&nbsp;(event.keyCode==122){&nbsp;//屏蔽&nbsp;F11&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>只要知道keyCode即可屏蔽所有功能键&nbsp;<br><br><br>一、验证类&nbsp;<br>1、数字验证内&nbsp;<br>&nbsp;&nbsp;1.1&nbsp;整数&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^(-|\+)?\d+＄/.test(str)&nbsp;<br>&nbsp;&nbsp;1.2&nbsp;大于0的整数&nbsp;（用于传来的ID的验证)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^\d+＄/.test(str)&nbsp;<br>&nbsp;&nbsp;1.3&nbsp;负整数的验证&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^-\d+＄/.test(str)&nbsp;<br>2、时间类&nbsp;<br>&nbsp;&nbsp;2.1&nbsp;短时间，形如&nbsp;(13:04:06)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;isTime(str)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;str.match(/^(\d{1,2})(<img onclick="window.open('/images/smile.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/smile.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>?(\d{1,2})\2(\d{1,2})＄/);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a&nbsp;==&nbsp;null)&nbsp;{alert('输入的参数不是时间格式');&nbsp;return&nbsp;false;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a[1]&gt;24&nbsp;||&nbsp;a[3]&gt;60&nbsp;||&nbsp;a[4]&gt;60)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("时间格式不对"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;2.2&nbsp;短日期，形如&nbsp;(2003-12-05)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;strDateTime(str)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;r&nbsp;=&nbsp;str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})＄/);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(r==null)return&nbsp;false;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=&nbsp;new&nbsp;Date(r[1],&nbsp;r[3]-1,&nbsp;r[4]);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;2.3&nbsp;长时间，形如&nbsp;(2003-12-05&nbsp;13:04:06)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;strDateTime(str)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;reg&nbsp;=&nbsp;/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})&nbsp;(\d{1,2})<img onclick="window.open('/images/frown.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/frown.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>\d{1,2})<img onclick="window.open('/images/frown.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/frown.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>\d{1,2})＄/;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;r&nbsp;=&nbsp;str.match(reg);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(r==null)return&nbsp;false;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;d=&nbsp;new&nbsp;Date(r[1],&nbsp;r[3]-1,r[4],r[5],r[6],r[7]);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;<br><br>(d.getFullYear()==r[1]&amp;&amp;(d.getMonth()+1)==r[3]&amp;&amp;d.getDate()==r[4]&amp;&amp;<br>d.getHours()==r[5]&amp;&amp;d.getMinutes()==r[6]&amp;&amp;d.getSeconds()==&nbsp;<br><br>r[7]);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;2.4&nbsp;只有年和月。形如(2003-05,或者2003-5)&nbsp;<br>&nbsp;&nbsp;2.5&nbsp;只有小时和分钟,形如(12:03)&nbsp;<br>3、表单类&nbsp;<br>&nbsp;&nbsp;3.1&nbsp;所有的表单的值都不能为空&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(this.value.replace(/^\s+|\s+＄/g,')==')alert('不能为空!')"&gt;&nbsp;<br>&nbsp;&nbsp;3.2&nbsp;多行文本框的值不能为空。&nbsp;<br>&nbsp;&nbsp;3.3&nbsp;多行文本框的值不能超过sMaxStrleng&nbsp;<br>&nbsp;&nbsp;3.4&nbsp;多行文本框的值不能少于sMixStrleng&nbsp;<br>&nbsp;&nbsp;3.5&nbsp;判断单选框是否选择。&nbsp;<br>&nbsp;&nbsp;3.6&nbsp;判断复选框是否选择.&nbsp;<br>&nbsp;&nbsp;3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<br>&nbsp;&nbsp;3.8&nbsp;文件上传过程中判断文件类型&nbsp;<br>4、字符类&nbsp;<br>&nbsp;&nbsp;4.1&nbsp;判断字符全部由a-Z或者是A-Z的字字母组成&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"&gt;&nbsp;<br>&nbsp;&nbsp;4.2&nbsp;判断字符由字母和数字组成。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input&nbsp;onblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"&gt;&nbsp;<br>&nbsp;&nbsp;4.3&nbsp;判断字符由字母和数字，下划线,点号组成.且开头的只能是下划线和字母&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/^([a-zA-z_]{1})([\w]*)＄/g.test(str)&nbsp;<br>&nbsp;&nbsp;4.4&nbsp;字符串替换函数.Replace();&nbsp;<br>5、浏览器类&nbsp;<br>&nbsp;&nbsp;5.1&nbsp;判断浏览器的类型&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.navigator.appName&nbsp;<br>&nbsp;&nbsp;5.2&nbsp;判断ie的版本&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.navigator.appVersion&nbsp;<br>&nbsp;&nbsp;5.3&nbsp;判断客户端的分辨率&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.screen.height;&nbsp;&nbsp;window.screen.width;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>6、结合类&nbsp;<br>&nbsp;&nbsp;6.1&nbsp;email的判断。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;ismail(mail)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(new&nbsp;RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)<br>[A-Za-z0-9]+)*\.[A-Za-z0-9]+＄/).test(mail));&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;6.2&nbsp;手机号码的验证&nbsp;<br>&nbsp;&nbsp;6.3&nbsp;身份证的验证&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;isIdCardNo(num)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(isNaN(num))&nbsp;{alert("输入的不是数字！"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;len&nbsp;=&nbsp;num.length,&nbsp;re;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len&nbsp;==&nbsp;15)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})＄/);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(len&nbsp;==&nbsp;18)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re&nbsp;=&nbsp;new&nbsp;RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)＄/);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{alert("输入的数字位数不对！"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;num.match(re);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(a&nbsp;!=&nbsp;null)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(len==15)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;D&nbsp;=&nbsp;new&nbsp;Date("19"+a[3]+"/"+a[4]+"/"+a[5]);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;B&nbsp;=&nbsp;D.getYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<br>D.getDate()==a[5];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;D&nbsp;=&nbsp;new&nbsp;Date(a[3]+"/"+a[4]+"/"+a[5]);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;B&nbsp;=&nbsp;D.getFullYear()==a[3]&amp;&amp;(D.getMonth()+1)==a[4]&amp;&amp;<br>D.getDate()==a[5];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!B)&nbsp;{alert("输入的身份证号&nbsp;"+&nbsp;a[0]&nbsp;+"&nbsp;里出生日期不对！"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;return&nbsp;false;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br><br><br>3.7&nbsp;复选框的全选，多选，全不选，反选&nbsp;<br>&lt;form&nbsp;name=hrong&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=All&nbsp;onclick="checkAll('mm')"&gt;全选&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm&nbsp;onclick="checkItem('All')"&gt;&lt;br/&gt;&lt;br/&gt;&nbsp;<br><br><br>&lt;input&nbsp;type=checkbox&nbsp;name=All2&nbsp;onclick="checkAll('mm2')"&gt;全选&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<br>&lt;input&nbsp;type=checkbox&nbsp;name=mm2&nbsp;onclick="checkItem('All2')"&gt;&lt;br/&gt;&nbsp;<br><br>&lt;/form&gt;&nbsp;<br><br>&lt;SCRIPT&nbsp;LANGUAGE="JavaScript"&gt;&nbsp;<br>function&nbsp;checkAll(str)&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;document.getElementsByName(str);&nbsp;<br>&nbsp;&nbsp;var&nbsp;n&nbsp;=&nbsp;a.length;&nbsp;<br>&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;n;&nbsp;i++)&nbsp;<br>&nbsp;&nbsp;a[i].checked&nbsp;=&nbsp;window.event.srcElement.checked;&nbsp;<br>}&nbsp;<br>function&nbsp;checkItem(str)&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;var&nbsp;e&nbsp;=&nbsp;window.event.srcElement;&nbsp;<br>&nbsp;&nbsp;var&nbsp;all&nbsp;=&nbsp;eval("document.hrong."+&nbsp;str);&nbsp;<br>&nbsp;&nbsp;if&nbsp;(e.checked)&nbsp;<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;document.getElementsByName(e.name);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;all.checked&nbsp;=&nbsp;true;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(var&nbsp;i=0;&nbsp;i&lt;a.length;&nbsp;i++)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!a[i].checked){&nbsp;all.checked&nbsp;=&nbsp;false;&nbsp;break;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;else&nbsp;all.checked&nbsp;=&nbsp;false;&nbsp;<br>}&nbsp;<br>&lt;/SCRIPT&gt;&nbsp;<br><br>3.8&nbsp;文件上传过程中判断文件类型&nbsp;<br>&lt;input&nbsp;type=file&nbsp;onchange="alert(this.value.match(/^(.*)(\.)(.{1,8})＄/)[3])"&gt;&nbsp;<br><br>&nbsp;<br><br>不断地清空剪贴板:&nbsp;<br>&lt;body&nbsp;onload="setInterval('clipboardData.setData(\'Text\',\'\')',100)"&gt;&nbsp;<br><br><br>&lt;script&nbsp;language="JavaScript"&nbsp;type="text/JavaScript"&gt;&nbsp;<br>//先复制一样东西，或者文本或者图片&nbsp;<br>if(clipboardData.getData("Text"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>||clipboardData.getData("HTML"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>||<br>clipboardData.getData("URL"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>)&nbsp;<br>{&nbsp;<br>alert("有效行为"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<br>}&nbsp;<br>&nbsp;<br><br><br>全屏技术：&nbsp;<br>真正的全屏页面解决之道！（全代码）&nbsp;&nbsp;<br>真正全屏解决之道：&nbsp;&nbsp;<br>1.htm&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<br>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br>&lt;body&nbsp;onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br><br>fullscreen.htm&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<br>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<br>&lt;script&nbsp;language="JavaScript1.2"&gt;&nbsp;&nbsp;&nbsp;<br>&lt;!--&nbsp;&nbsp;&nbsp;<br>function&nbsp;opensmallwin(myurl){&nbsp;&nbsp;&nbsp;<br>var&nbsp;w2=300;//想弹出窗口的宽度&nbsp;&nbsp;&nbsp;<br>var&nbsp;h2=100;//想弹出窗口的高度&nbsp;&nbsp;&nbsp;<br>var&nbsp;w3=window.screen.width/2-w2/2;&nbsp;&nbsp;&nbsp;<br>var&nbsp;h3=window.screen.height/2-h2/2;&nbsp;&nbsp;&nbsp;<br>window.open(myurl,'small','toolbar=no,location=no,directories=no,status=no,menubar=no,<br>scrollbars=no,resizable=0,width='+&nbsp;w2&nbsp;+',height='+&nbsp;h2&nbsp;+',left='+&nbsp;w3&nbsp;+',top='+&nbsp;h3&nbsp;+');&nbsp;&nbsp;&nbsp;<br>}&nbsp;&nbsp;&nbsp;<br>//--&gt;&nbsp;&nbsp;&nbsp;<br><br>&lt;!--&nbsp;&nbsp;<br>function&nbsp;modelesswin(url,mwidth,mheight){&nbsp;&nbsp;<br>&nbsp;&nbsp;if&nbsp;(document.all&amp;&amp;window.print)&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;eval('window.external.m2_blocked(url,"","help:0;resizable:0;status:0;center:1;<br>scroll:0;dialogWidth:'+mwidth+'px;dialogHeight:'+mheight+'px"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>')&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;else&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;eval('window.open(url,"","width='+mwidth+'px,height='+mheight+'px,resizable=1,<br>scrollbars=1"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>')&nbsp;&nbsp;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>//--&gt;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br>&lt;body&nbsp;&nbsp;scroll="no"&gt;&nbsp;&nbsp;<br>&lt;div&nbsp;align="right"&gt;&lt;a&nbsp;href="javascript:"&nbsp;onclick="window.close()"&gt;关闭<br>&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<br>&lt;p&gt;&lt;/P&gt;&nbsp;&nbsp;<br>&lt;div&nbsp;align="right"&gt;&lt;a&nbsp;href="javascript:"&nbsp;onclick="opensmallwin('login.htm')"&gt;登录<br>&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<br><br>&lt;p&gt;&lt;/P&gt;&nbsp;&nbsp;<br>&lt;div&nbsp;align="center"&gt;&lt;a&nbsp;href="javascript:"&nbsp;<br>onclick="modelesswin('login.htm',300,160)"&gt;用模态登录窗口&lt;/a&gt;&nbsp;&lt;/div&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br><br>login.htm&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&lt;title&gt;用户登录&lt;/title&gt;&nbsp;&nbsp;<br>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<br><br>&lt;style&nbsp;type="text/css"&gt;&nbsp;&nbsp;<br>&lt;!--&nbsp;&nbsp;<br>body&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;background-color:&nbsp;#EAEAEA;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;font-family:&nbsp;Arial,&nbsp;Helvetica,&nbsp;sans-serif;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;font-size:&nbsp;12px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;line-height:&nbsp;24px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;color:&nbsp;#336699;&nbsp;&nbsp;<br>}&nbsp;&nbsp;<br>input.boxline&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;width:&nbsp;100px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;font-family:&nbsp;"Times&nbsp;New&nbsp;Roman",&nbsp;"Times",&nbsp;"serif";&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;font-size:&nbsp;9pt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;border:&nbsp;1px&nbsp;solid&nbsp;#669999;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;height:&nbsp;18px;&nbsp;&nbsp;<br><br>}&nbsp;&nbsp;<br><br>input.whiteline&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;font-size:&nbsp;12px;&nbsp;border:&nbsp;1px&nbsp;#999999&nbsp;solid&nbsp;&nbsp;<br>}&nbsp;&nbsp;<br>--&gt;&nbsp;&nbsp;<br>&lt;/style&gt;&nbsp;&nbsp;<br>&lt;body&nbsp;leftmargin="0"&nbsp;topmargin="0"&nbsp;marginwidth="0"&nbsp;marginheight="0"&gt;&nbsp;&nbsp;<br>&lt;table&nbsp;width="100%"&nbsp;height="100%"&nbsp;border="0"&nbsp;cellpadding="0"<br>&nbsp;cellspacing="14"&nbsp;bgcolor="#CCCCCC"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width="10%"&nbsp;nowrap&nbsp;&nbsp;align="right"&gt;&lt;b&gt;用户名：&lt;/b&gt;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;width="90%"&gt;&lt;input&nbsp;name="textfield1"&nbsp;type="text"&nbsp;size="25"<br>&nbsp;class="whiteline"&gt;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&nbsp;nowrap&nbsp;align="right"&gt;&lt;b&gt;密　码：&lt;/b&gt;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input&nbsp;name="textfield12"&nbsp;type="password"&nbsp;size="25"&nbsp;<br>class="whiteline"&gt;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;tr&nbsp;valign="top"&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&nbsp;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;&lt;input&nbsp;type="submit"&nbsp;name="Submit"&nbsp;value="登　　录"&nbsp;<br>class="boxline"&gt;&lt;/td&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;&lt;/tr&gt;&nbsp;&nbsp;<br>&lt;/table&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br><br>自动关掉原窗口：&nbsp;&nbsp;<br><br><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&lt;title&gt;无标题文档&lt;/title&gt;&nbsp;&nbsp;<br>&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=gb2312"&gt;&nbsp;&nbsp;<br>&lt;style&nbsp;type="text/css"&gt;&nbsp;&nbsp;<br>&lt;!--&nbsp;&nbsp;<br>body&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;margin-left:&nbsp;0px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;margin-top:&nbsp;0px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;margin-right:&nbsp;0px;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;margin-bottom:&nbsp;0px;&nbsp;&nbsp;<br>}&nbsp;&nbsp;<br>--&gt;&nbsp;&nbsp;<br>&lt;/style&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br>&lt;body&nbsp;onload="window.open('fullscreen.htm',','fullscreen=1,scroll=no');<br>window.opener=null;window.close()"&gt;&nbsp;&nbsp;<br>&lt;input&nbsp;type=button&nbsp;value=关闭&nbsp;onclick="window.opener=null;window.close()"&gt;&nbsp;&nbsp;&nbsp;<br>&lt;!--&nbsp;IE5.5+&nbsp;不会有弹出提示&nbsp;--&gt;&nbsp;&nbsp;&nbsp;<br><br>&lt;OBJECT&nbsp;id=WebBrowser&nbsp;classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&nbsp;<br>height=0&nbsp;width=0&gt;&lt;/OBJECT&gt;&nbsp;&nbsp;&nbsp;<br>&lt;input&nbsp;type=button&nbsp;value=关闭窗口&nbsp;onclick=document.all.WebBrowser.ExecWB(45,1)&gt;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br>关键是在onload事件中加入：&nbsp;&nbsp;<br>window.opener=null;window.close()&nbsp;&nbsp;<br><br><br>预读图片：&nbsp;<br>&lt;SCRIPT&nbsp;LANGUAGE="JavaScript"&gt;&nbsp;<br><br>&lt;!--&nbsp;This&nbsp;script&nbsp;and&nbsp;many&nbsp;more&nbsp;are&nbsp;available&nbsp;free&nbsp;online&nbsp;at&nbsp;--&gt;&nbsp;<br>&lt;!--&nbsp;The&nbsp;JavaScript&nbsp;Source!!&nbsp;&lt;a&nbsp;href=<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://javascript.internet.com/" target=_blank><u><font color=#0000ff>http://javascript.internet.com</font></u></a> &nbsp;<br>target=_blank&gt;<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://javascript.internet.com/" target=_blank><u><font color=#0000ff>http://javascript.internet.com</font></u></a> &nbsp;--&gt;&nbsp;<br><br>&lt;!--&nbsp;Begin&nbsp;<br><br>image1&nbsp;=&nbsp;new&nbsp;Image();&nbsp;<br>image1.src&nbsp;=&nbsp;"image1.gif";&nbsp;<br><br>image2&nbsp;=&nbsp;new&nbsp;Image();&nbsp;<br>image2.src&nbsp;=&nbsp;"image2.gif";&nbsp;<br><br>//&nbsp;End&nbsp;--&gt;&nbsp;<br>&nbsp;<br><br>&nbsp;<br><br>关于两个网页刷新交互的问题&nbsp;&nbsp;<br>JS处理方法：&nbsp;&nbsp;<br><br>a.htm&nbsp;&nbsp;<br><br>&lt;a&nbsp;href="b.htm"&nbsp;target=blank&gt;发表留言&lt;/a&gt;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>alert("wwwwwwwwwwwwwwwwwwwwwwwwww"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<br>&nbsp;&nbsp;<br><br>b.htm&nbsp;&nbsp;<br><br>&lt;script&nbsp;language="javascript"&gt;&nbsp;&nbsp;<br>//window.opener.location.reload();刷新父窗口&nbsp;&nbsp;<br>//window.opener.location="2.htm"//重定向父窗口到2.htm页&nbsp;&nbsp;<br>function&nbsp;closewindow()&nbsp;&nbsp;<br>{&nbsp;&nbsp;<br>window.opener.location.reload();&nbsp;&nbsp;<br>self.close();&nbsp;&nbsp;<br>window.opener.document.write("sssssssssssssssssss"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<br>}&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&lt;a&nbsp;href="b.htm"&nbsp;target=blank&nbsp;onclick="closewindow();"&gt;关闭&lt;/a&gt;&nbsp;&nbsp;<br><br>&nbsp;<br><br>后台处理方法：&nbsp;&nbsp;<br><br>private&nbsp;btnForSubmit(Object&nbsp;sender,EventArgs&nbsp;e)&nbsp;&nbsp;<br>{&nbsp;&nbsp;<br>&nbsp;.............&nbsp;&nbsp;<br>&nbsp;Response.Write("window.opener.document.execCommand('refresh');<br>window.opener=';window.close();"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;&nbsp;<br>//string&nbsp;str="window.opener.document.execCommand('refresh');<br>window.opener=';window.close();";&nbsp;&nbsp;<br>//this.RegisterStartupScript("mycode",str);&nbsp;&nbsp;<br>external.m2_blocked()、external.m2_blocked()方法使用详解&nbsp;<br><br>&nbsp;Javascript有许多内建的方法来产生对话框，如：window.alert(),&nbsp;<br>window.confirm(),window.prompt().等。&nbsp;然而IE提供更多的方法支持对话框。如：&nbsp;<br><br>　　external.m2_blocked()&nbsp;(IE&nbsp;4+&nbsp;支持)&nbsp;<br>　　external.m2_blocked()&nbsp;(IE&nbsp;5+&nbsp;支持)&nbsp;<br><br><br>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的模态对话框，<br>由于是对话框，因此它并没有一般用window.open()打开的窗口的所有属性。&nbsp;<br>&nbsp;window.external.m2_blocked()方法用来创建一个显示HTML内容的非模态对话框。&nbsp;<br><br>&nbsp;当我们用external.m2_blocked()打开窗口时，不必用window.close()去关闭它，<br>当以非模态方式[IE5]打开时，&nbsp;打开对话框的窗口仍可以进行其他的操作，即对话框<br>不总是最上面的焦点，当打开它的窗口ＵＲＬ改变时，它自动关闭。而模态[ＩＥ４]<br>方式的对话框始终有焦点（焦点不可移走，直到它关闭）。模态对话框和打开它的窗<br>口相联系，因此我们打开另外的窗口时，他们的链接关系依然保存，并且隐藏在活动<br>窗口的下面。&nbsp;<br><br>使用方法如下：&nbsp;<br>&nbsp;vReturnValue=window.external.m2_blocked(sURL&nbsp;[,vArguments]&nbsp;[,sFeatures])&nbsp;<br>&nbsp;vReturnValue=window.external.m2_blocked(sURL&nbsp;[,vArguments]&nbsp;[,sFeatures])&nbsp;<br>参数说明：&nbsp;<br>&nbsp;sURL&nbsp;<br>&nbsp;必选参数，类型：字符串。用来指定对话框要显示的文档的URL。&nbsp;<br>&nbsp;vArguments&nbsp;<br>&nbsp;可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。<br>对话框通过window.dialogArguments来取得传递进来的参数。&nbsp;<br>&nbsp;sFeatures&nbsp;<br>&nbsp;可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，<br>用分号&#8220;;&#8221;隔开。&nbsp;<br>&nbsp;&nbsp;dialogHeight&nbsp;对话框高度，不小于１００px，ＩＥ４中dialogHeight&nbsp;和&nbsp;dialogWidth<br>&nbsp;默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px<br>做单位。&nbsp;<br>&nbsp;　　dialogWidth:&nbsp;对话框宽度。&nbsp;<br>&nbsp;　　dialogLeft:&nbsp;距离桌面左的距离。&nbsp;<br>&nbsp;　　dialogTop:&nbsp;离桌面上的距离。&nbsp;<br>&nbsp;　　center:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}：窗口是否居中，默认yes，但仍可以指定高度和宽度。&nbsp;<br>&nbsp;　　help:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}：是否显示帮助按钮，默认yes。&nbsp;<br>&nbsp;　　resizable:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}&nbsp;[ＩＥ５＋]：是否可被改变大小。默认no。&nbsp;<br>&nbsp;　　status:&nbsp;{yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;}&nbsp;[IE5+]：是否显示状态栏。默认为yes[&nbsp;Modeless]<br>或no[Modal]。&nbsp;<br>&nbsp;&nbsp;scroll:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：指明对话框是否显示滚动条。默认为yes。&nbsp;<br><br>&nbsp;&nbsp;还有几个属性是用在HTA中的，在一般的网页中一般不使用。&nbsp;<br>&nbsp;&nbsp;dialogHide:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：在打印或者打印预览时对话框是否隐藏。<br>默认为no。&nbsp;<br>&nbsp;&nbsp;edge:{&nbsp;sunken&nbsp;|&nbsp;raised&nbsp;}：指明对话框的边框样式。默认为raised。&nbsp;<br>&nbsp;&nbsp;unadorned:{&nbsp;yes&nbsp;|&nbsp;no&nbsp;|&nbsp;1&nbsp;|&nbsp;0&nbsp;|&nbsp;on&nbsp;|&nbsp;off&nbsp;}：默认为no。&nbsp;<br><br>&nbsp;传入参数：&nbsp;<br>&nbsp;要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，<br>最大为4096个字符。也可以传递对象，例如：&nbsp;<br><br>&nbsp;test1.htm&nbsp;<br>&nbsp;====================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;var&nbsp;mxh1&nbsp;=&nbsp;new&nbsp;Array("mxh","net_lover","孟子E章"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<br>&nbsp;&nbsp;var&nbsp;mxh2&nbsp;=&nbsp;window.open("about:blank","window_mxh"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<br>&nbsp;&nbsp;//&nbsp;向对话框传递数组&nbsp;<br>&nbsp;&nbsp;window.external.m2_blocked("test2.htm",mxh1)&nbsp;<br>&nbsp;&nbsp;//&nbsp;向对话框传递window对象&nbsp;<br>&nbsp;&nbsp;window.external.m2_blocked("test3.htm",mxh2)&nbsp;<br>&nbsp;&nbsp;<br><br>&nbsp;test2.htm&nbsp;<br>&nbsp;====================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.dialogArguments&nbsp;<br>&nbsp;&nbsp;alert("您传递的参数为："&nbsp;+&nbsp;a)&nbsp;<br>&nbsp;&nbsp;<br><br>&nbsp;test3.htm&nbsp;<br>&nbsp;====================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.dialogArguments&nbsp;<br>&nbsp;&nbsp;alert("您传递的参数为window对象，名称："&nbsp;+&nbsp;a.name)&nbsp;<br>&nbsp;&nbsp;<br><br>&nbsp;可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。<br>例如：&nbsp;<br><br>&nbsp;test4.htm&nbsp;<br>&nbsp;===================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;var&nbsp;a&nbsp;=&nbsp;window.external.m2_blocked("test5.htm"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<br>&nbsp;&nbsp;for(i=0;i&lt;a.length;i++)&nbsp;alert(a[i])&nbsp;<br>&nbsp;&nbsp;<br><br>&nbsp;test5.htm&nbsp;<br>&nbsp;===================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;function&nbsp;sendTo()&nbsp;<br>&nbsp;{&nbsp;<br>&nbsp;&nbsp;var&nbsp;a=new&nbsp;Array("a","b"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<br>&nbsp;&nbsp;window.returnValue&nbsp;=&nbsp;a&nbsp;<br>&nbsp;&nbsp;window.close()&nbsp;<br>&nbsp;}&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&lt;form&gt;&nbsp;<br>&nbsp;&nbsp;&lt;input&nbsp;value="返回"&nbsp;type=button&nbsp;onclick="sendTo()"&gt;&nbsp;<br>&nbsp;&lt;/form&gt;&nbsp;<br><br>&nbsp;常见问题：&nbsp;<br>&nbsp;1，如何在模态对话框中进行提交而不新开窗口？&nbsp;<br>&nbsp;如果你&nbsp;的&nbsp;浏览器是IE5.5+,可以在对话框中使用带name属性的iframe，提交时可以<br>制定target为该iframe的name。对于IE4+，你可以用高度为0的frame来作：例子，&nbsp;<br><br>&nbsp;test6.htm&nbsp;<br>&nbsp;===================&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;window.external.m2_blocked("test7.htm"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>&nbsp;<br>&nbsp;&nbsp;<br><br>&nbsp;test7.htm&nbsp;<br>&nbsp;===================&nbsp;<br>&nbsp;if(window.location.search)&nbsp;alert(window.location.search)&nbsp;<br>&nbsp;&lt;frameset&nbsp;rows="0,*"&gt;&nbsp;<br>&nbsp;&nbsp;&lt;frame&nbsp;src="about:blank"&gt;&nbsp;<br>&nbsp;&nbsp;&lt;frame&nbsp;src="test8.htm"&gt;&nbsp;<br>&nbsp;&lt;/frameset&gt;&nbsp;<br><br>&nbsp;test8.htm&nbsp;<br>&nbsp;===================&nbsp;<br>&nbsp;&lt;form&nbsp;target="_self"&nbsp;method="get"&gt;&nbsp;<br>&nbsp;&lt;input&nbsp;name=txt&nbsp;value="test"&gt;&nbsp;<br>&nbsp;&lt;input&nbsp;type=submit&gt;&nbsp;<br>&nbsp;&lt;/form&gt;&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;if(window.location.search)&nbsp;alert(window.location.search)&nbsp;<br>&nbsp;&nbsp;<br>&nbsp;2,可以通过<img alt=::URL:: hspace=2 src="http://www.blogcn.com/images/aurl.gif" align=absBottom border=0><a href="http://servername/virtualdirname/test.htm?name=mxh方式直接向" target=_blank><u><font color=#0000ff>http://servername/virtualdirname/test.htm?name=mxh方式直接向</font></u></a> <br>对话框传递参数吗？&nbsp;<br>&nbsp;答案是不能。但在frame里是可以的。&nbsp;<br>//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<br><br><br>function&nbsp;document.onkeydown()&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;k&nbsp;=&nbsp;window.event.keyCode;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(k&nbsp;==&nbsp;116)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;F5&nbsp;刷新键&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.keyCode&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnValue=&nbsp;false;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>}&nbsp;<br><br><br>&lt;script&nbsp;language="Javascript"&gt;&nbsp;<br>&nbsp;//屏蔽鼠标右键、Ctrl+N、Shift+F10、F5刷新、退格键&nbsp;<br>&nbsp;//屏蔽F1帮助&nbsp;<br>function&nbsp;window.onhelp()&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;&nbsp;return&nbsp;false&nbsp;<br>}&nbsp;<br>function&nbsp;KeyDown()&nbsp;<br>{&nbsp;<br>&nbsp;&nbsp;//alert(event.keyCode);&nbsp;<br>&nbsp;&nbsp;&nbsp;//屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;&#8592;&nbsp;屏蔽&nbsp;Alt+&nbsp;方向键&nbsp;&#8594;&nbsp;<br>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;((window.event.keyCode==37)||<br>(window.event.keyCode==39)))&nbsp;<br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//alert("不准你使用ALT+方向键前进或后退网页！"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;//屏蔽退格删除键,屏蔽&nbsp;F5&nbsp;刷新键,Ctrl&nbsp;+&nbsp;R&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.keyCode==116)||(event.ctrlKey&nbsp;&amp;&amp;&nbsp;event.keyCode==82))&nbsp;<br>&nbsp;&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.keyCode=0;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;//屏蔽&nbsp;Ctrl+n&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.ctrlKey)&amp;&amp;(event.keyCode==78))&nbsp;<br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;//屏蔽&nbsp;shift+F10&nbsp;<br>&nbsp;&nbsp;if&nbsp;((event.shiftKey)&amp;&amp;(event.keyCode==121))&nbsp;<br>&nbsp;&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.returnValue=false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;//屏蔽&nbsp;shift&nbsp;加鼠标左键新开一网页&nbsp;<br>&nbsp;&nbsp;if&nbsp;(window.event.srcElement.tagName&nbsp;==&nbsp;"A"&nbsp;&amp;&amp;&nbsp;window.event.shiftKey)&nbsp;&nbsp;<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;window.event.returnValue&nbsp;=&nbsp;false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;//屏蔽Alt+F4&nbsp;<br>&nbsp;&nbsp;if&nbsp;((window.event.altKey)&amp;&amp;(window.event.keyCode==115))&nbsp;<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.external.m2_blocked("about:blank","","dialogWidth:1px;dialogheight:1px"<img onclick="window.open('/images/wink.gif','_blank');" hspace=2 src="http://www.blogcn.com/images/wink.gif" onload="javascript:if(this.width>screen.width/2)this.width=screen.width/2" vspace=2 border=0>;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;//屏蔽Ctrl+A&nbsp;<br>&nbsp;&nbsp;if((event.ctrlKey)&amp;&amp;(event.keyCode==65))&nbsp;<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;return&nbsp;false;&nbsp;<br>&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>}&nbsp;<br>&nbsp;<br>&nbsp;<br>&lt;/HTML&gt;&nbsp;&nbsp;<br><br>
<img src ="http://www.blogjava.net/hua/aggbug/114241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2007-04-28 09:13 <a href="http://www.blogjava.net/hua/archive/2007/04/28/114241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML特殊字符显示</title><link>http://www.blogjava.net/hua/archive/2007/01/16/94228.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 16 Jan 2007 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2007/01/16/94228.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/94228.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2007/01/16/94228.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/94228.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/94228.html</trackback:ping><description><![CDATA[
		<h2>HTML字符实体(Character Entities)</h2>
		<p>有些字符在HTML里有特别的含义，比如小于号&lt;就表示HTML Tag的开始，这个小于号是不显示在我们最终看到的网页里的。那如果我们希望在网页中显示一个小于号，该怎么办呢？</p>
		<p>这就要说到HTML字符实体(HTML Character Entities)了。</p>
		<p>一个字符实体(Character Entity)分成三部分：第一部分是一个&amp;符号，英文叫ampersand；第二部分是实体(Entity)名字或者是#加上实体(Entity)编号；第三部分是一个分号。</p>
		<p>比如，要显示小于号，就可以写&amp;lt;或者&amp;#60;。</p>
		<p>用实体(Entity)名字的好处是比较好理解，一看lt，大概就猜出是less than的意思，但是其劣势在于并不是所有的浏览器都支持最新的Entity名字。而实体(Entity)编号，各种浏览器都能处理。</p>
		<p>注意：Entity是区分大小写的。</p>
		<p> </p>
		<h2>如何显示空格</h2>
		<p>通常情况下，HTML会自动截去多余的空格。不管你加多少空格，都被看做一个空格。比如你在两个字之间加了10个空格，HTML会截去9个空格，只保留一个。为了在网页中增加空格，你可以使用&amp;nbsp;表示空格。</p>
		<p> </p>
		<h2>最常用的字符实体(Character Entities)</h2>
		<p>
		</p>
		<table>
				<tbody>
						<tr class="header">
								<td>显示结果</td>
								<td>说明</td>
								<td>Entity Name</td>
								<td>Entity Number</td>
						</tr>
						<tr>
								<td> </td>
								<td>显示一个空格</td>
								<td>&amp;nbsp;</td>
								<td>&amp;#160;</td>
						</tr>
						<tr>
								<td>&lt;</td>
								<td>小于</td>
								<td>&amp;lt;</td>
								<td>&amp;#60;</td>
						</tr>
						<tr>
								<td>&gt;</td>
								<td>大于</td>
								<td>&amp;gt;</td>
								<td>&amp;#62;</td>
						</tr>
						<tr>
								<td>&amp;</td>
								<td>&amp;符号</td>
								<td>&amp;amp;</td>
								<td>&amp;#38;</td>
						</tr>
						<tr>
								<td>"</td>
								<td>双引号</td>
								<td>&amp;quot;</td>
								<td>&amp;#34;</td>
						</tr>
				</tbody>
		</table>
		<h2>其他常用的字符实体(Character Entities)</h2>
		<table>
				<tbody>
						<tr class="header">
								<td>显示结果</td>
								<td>说明</td>
								<td>Entity Name</td>
								<td>Entity Number</td>
						</tr>
						<tr>
								<td>©</td>
								<td>版权</td>
								<td>&amp;copy;</td>
								<td>&amp;#169;</td>
						</tr>
						<tr>
								<td>®</td>
								<td>注册商标</td>
								<td>&amp;reg;</td>
								<td>&amp;#174;</td>
						</tr>
						<tr>
								<td>×</td>
								<td>乘号</td>
								<td>&amp;times;</td>
								<td>&amp;#215;</td>
						</tr>
						<tr>
								<td>÷</td>
								<td>除号</td>
								<td>&amp;divide;</td>
								<td>&amp;#247;</td>
						</tr>
				</tbody>
		</table>
		<h2>更多字符实体(Character Entities)</h2>
		<p>
		</p>
		<table>
				<tbody>
						<tr class="header">
								<td>字符</td>
								<td>十进制字符编号</td>
								<td>实体名字</td>
								<td>说明</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#00;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#01;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#02;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#03;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#04;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#05;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#06;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#07;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#08;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#09;</td>
								<td>---</td>
								<td>制表符Horizontal tab</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#10;</td>
								<td>---</td>
								<td>换行Line feed</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#11;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#12;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#13;</td>
								<td>---</td>
								<td>回车Carriage Return</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#14;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#15;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#16;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#17;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#18;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#19;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#20;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#21;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#22;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#23;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#24;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#25;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#26;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#27;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#28;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#29;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#30;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#31;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td> </td>
								<td>&amp;#32;</td>
								<td>---</td>
								<td>Space</td>
						</tr>
						<tr>
								<td>!</td>
								<td>&amp;#33;</td>
								<td>---</td>
								<td>惊叹号Exclamation mark</td>
						</tr>
						<tr>
								<td>"</td>
								<td>&amp;#34;</td>
								<td>&amp;quot;</td>
								<td>双引号Quotation mark</td>
						</tr>
						<tr>
								<td>#</td>
								<td>&amp;#35;</td>
								<td>---</td>
								<td>数字标志Number sign</td>
						</tr>
						<tr>
								<td>$</td>
								<td>&amp;#36;</td>
								<td>---</td>
								<td>美元标志Dollar sign</td>
						</tr>
						<tr>
								<td>%</td>
								<td>&amp;#37;</td>
								<td>---</td>
								<td>百分号Percent sign</td>
						</tr>
						<tr>
								<td>&amp;</td>
								<td>&amp;#38;</td>
								<td>&amp;amp;</td>
								<td>Ampersand</td>
						</tr>
						<tr>
								<td>'</td>
								<td>&amp;#39;</td>
								<td>---</td>
								<td>单引号Apostrophe</td>
						</tr>
						<tr>
								<td>(</td>
								<td>&amp;#40;</td>
								<td>---</td>
								<td>小括号左边部分Left parenthesis</td>
						</tr>
						<tr>
								<td>)</td>
								<td>&amp;#41;</td>
								<td>---</td>
								<td>小括号右边部分Right parenthesis</td>
						</tr>
						<tr>
								<td>*</td>
								<td>&amp;#42;</td>
								<td>---</td>
								<td>星号Asterisk</td>
						</tr>
						<tr>
								<td>+</td>
								<td>&amp;#43;</td>
								<td>---</td>
								<td>加号Plus sign</td>
						</tr>
						<tr>
								<td>,</td>
								<td>&amp;#44;</td>
								<td>---</td>
								<td>逗号Comma</td>
						</tr>
						<tr>
								<td>-</td>
								<td>&amp;#45;</td>
								<td>---</td>
								<td>连字号Hyphen</td>
						</tr>
						<tr>
								<td>.</td>
								<td>&amp;#46;</td>
								<td>---</td>
								<td>句号Period (fullstop)</td>
						</tr>
						<tr>
								<td>/</td>
								<td>&amp;#47;</td>
								<td>---</td>
								<td>斜杠Solidus (slash)</td>
						</tr>
						<tr>
								<td>0</td>
								<td>&amp;#48;</td>
								<td>---</td>
								<td>数字0 Digit 0</td>
						</tr>
						<tr>
								<td>1</td>
								<td>&amp;#49;</td>
								<td>---</td>
								<td>数字1 Digit 1</td>
						</tr>
						<tr>
								<td>2</td>
								<td>&amp;#50;</td>
								<td>---</td>
								<td>数字2 Digit 2</td>
						</tr>
						<tr>
								<td>3</td>
								<td>&amp;#51;</td>
								<td>---</td>
								<td>数字3 Digit 3</td>
						</tr>
						<tr>
								<td>4</td>
								<td>&amp;#52;</td>
								<td>---</td>
								<td>数字4 Digit 4</td>
						</tr>
						<tr>
								<td>5</td>
								<td>&amp;#53;</td>
								<td>---</td>
								<td>数字5 Digit 5</td>
						</tr>
						<tr>
								<td>6</td>
								<td>&amp;#54;</td>
								<td>---</td>
								<td>数字6 Digit 6</td>
						</tr>
						<tr>
								<td>7</td>
								<td>&amp;#55;</td>
								<td>---</td>
								<td>数字7 Digit 7</td>
						</tr>
						<tr>
								<td>8</td>
								<td>&amp;#56;</td>
								<td>---</td>
								<td>数字8 Digit 8</td>
						</tr>
						<tr>
								<td>9</td>
								<td>&amp;#57;</td>
								<td>---</td>
								<td>数字9 Digit 9</td>
						</tr>
						<tr>
								<td>:</td>
								<td>&amp;#58;</td>
								<td>---</td>
								<td>冒号Colon</td>
						</tr>
						<tr>
								<td>;</td>
								<td>&amp;#59;</td>
								<td>---</td>
								<td>分号Semicolon</td>
						</tr>
						<tr>
								<td>&lt;</td>
								<td>&amp;#60;</td>
								<td>&amp;lt;</td>
								<td>小于号Less than</td>
						</tr>
						<tr>
								<td>=</td>
								<td>&amp;#61;</td>
								<td>---</td>
								<td>等于符号Equals sign</td>
						</tr>
						<tr>
								<td>&gt;</td>
								<td>&amp;#62;</td>
								<td>&amp;gt;</td>
								<td>大于号Greater than</td>
						</tr>
						<tr>
								<td>?</td>
								<td>&amp;#63;</td>
								<td>---</td>
								<td>问号Question mark</td>
						</tr>
						<tr>
								<td>@</td>
								<td>&amp;#64;</td>
								<td>---</td>
								<td>Commercial at</td>
						</tr>
						<tr>
								<td>A</td>
								<td>&amp;#65;</td>
								<td>---</td>
								<td>大写A Capital A</td>
						</tr>
						<tr>
								<td>B</td>
								<td>&amp;#66;</td>
								<td>---</td>
								<td>大写B Capital B</td>
						</tr>
						<tr>
								<td>C</td>
								<td>&amp;#67;</td>
								<td>---</td>
								<td>大写C Capital C</td>
						</tr>
						<tr>
								<td>D</td>
								<td>&amp;#68;</td>
								<td>---</td>
								<td>大写D Capital D</td>
						</tr>
						<tr>
								<td>E</td>
								<td>&amp;#69;</td>
								<td>---</td>
								<td>大写E Capital E</td>
						</tr>
						<tr>
								<td>F</td>
								<td>&amp;#70;</td>
								<td>---</td>
								<td>大写F Capital F</td>
						</tr>
						<tr>
								<td>G</td>
								<td>&amp;#71;</td>
								<td>---</td>
								<td>大写G Capital G</td>
						</tr>
						<tr>
								<td>H</td>
								<td>&amp;#72;</td>
								<td>---</td>
								<td>大写H Capital H</td>
						</tr>
						<tr>
								<td>I</td>
								<td>&amp;#73;</td>
								<td>---</td>
								<td>大写J Capital I</td>
						</tr>
						<tr>
								<td>J</td>
								<td>&amp;#74;</td>
								<td>---</td>
								<td>大写K Capital J</td>
						</tr>
						<tr>
								<td>K</td>
								<td>&amp;#75;</td>
								<td>---</td>
								<td>大写L Capital K</td>
						</tr>
						<tr>
								<td>L</td>
								<td>&amp;#76;</td>
								<td>---</td>
								<td>大写K Capital L</td>
						</tr>
						<tr>
								<td>M</td>
								<td>&amp;#77;</td>
								<td>---</td>
								<td>大写M Capital M</td>
						</tr>
						<tr>
								<td>N</td>
								<td>&amp;#78;</td>
								<td>---</td>
								<td>大写N Capital N</td>
						</tr>
						<tr>
								<td>O</td>
								<td>&amp;#79;</td>
								<td>---</td>
								<td>大写O Capital O</td>
						</tr>
						<tr>
								<td>P</td>
								<td>&amp;#80;</td>
								<td>---</td>
								<td>大写P Capital P</td>
						</tr>
						<tr>
								<td>Q</td>
								<td>&amp;#81;</td>
								<td>---</td>
								<td>大写Q Capital Q</td>
						</tr>
						<tr>
								<td>R</td>
								<td>&amp;#82;</td>
								<td>---</td>
								<td>大写R Capital R</td>
						</tr>
						<tr>
								<td>S</td>
								<td>&amp;#83;</td>
								<td>---</td>
								<td>大写S Capital S</td>
						</tr>
						<tr>
								<td>T</td>
								<td>&amp;#84;</td>
								<td>---</td>
								<td>大写T Capital T</td>
						</tr>
						<tr>
								<td>U</td>
								<td>&amp;#85;</td>
								<td>---</td>
								<td>大写U Capital U</td>
						</tr>
						<tr>
								<td>V</td>
								<td>&amp;#86;</td>
								<td>---</td>
								<td>大写V Capital V</td>
						</tr>
						<tr>
								<td>W</td>
								<td>&amp;#87;</td>
								<td>---</td>
								<td>大写W Capital W</td>
						</tr>
						<tr>
								<td>X</td>
								<td>&amp;#88;</td>
								<td>---</td>
								<td>大写X Capital X</td>
						</tr>
						<tr>
								<td>Y</td>
								<td>&amp;#89;</td>
								<td>---</td>
								<td>大写Y Capital Y</td>
						</tr>
						<tr>
								<td>Z</td>
								<td>&amp;#90;</td>
								<td>---</td>
								<td>大写Z Capital Z</td>
						</tr>
						<tr>
								<td>[</td>
								<td>&amp;#91;</td>
								<td>---</td>
								<td>中括号左边部分Left square bracket</td>
						</tr>
						<tr>
								<td>\</td>
								<td>&amp;#92;</td>
								<td>---</td>
								<td>反斜杠Reverse solidus (backslash)</td>
						</tr>
						<tr>
								<td>]</td>
								<td>&amp;#93;</td>
								<td>---</td>
								<td>中括号右边部分Right square bracket</td>
						</tr>
						<tr>
								<td>^</td>
								<td>&amp;#94;</td>
								<td>---</td>
								<td>Caret</td>
						</tr>
						<tr>
								<td>_</td>
								<td>&amp;#95;</td>
								<td>---</td>
								<td>下划线Horizontal bar (underscore)</td>
						</tr>
						<tr>
								<td>`</td>
								<td>&amp;#96;</td>
								<td>---</td>
								<td>尖重音符Acute accent</td>
						</tr>
						<tr>
								<td>a</td>
								<td>&amp;#97;</td>
								<td>---</td>
								<td>小写a Small a</td>
						</tr>
						<tr>
								<td>b</td>
								<td>&amp;#98;</td>
								<td>---</td>
								<td>小写b Small b</td>
						</tr>
						<tr>
								<td>c</td>
								<td>&amp;#99;</td>
								<td>---</td>
								<td>小写c Small c</td>
						</tr>
						<tr>
								<td>d</td>
								<td>&amp;#100;</td>
								<td>---</td>
								<td>小写d Small d</td>
						</tr>
						<tr>
								<td>e</td>
								<td>&amp;#101;</td>
								<td>---</td>
								<td>小写e Small e</td>
						</tr>
						<tr>
								<td>f</td>
								<td>&amp;#102;</td>
								<td>---</td>
								<td>小写f Small f</td>
						</tr>
						<tr>
								<td>g</td>
								<td>&amp;#103;</td>
								<td>---</td>
								<td>小写g Small g</td>
						</tr>
						<tr>
								<td>h</td>
								<td>&amp;#104;</td>
								<td>---</td>
								<td>小写h Small h</td>
						</tr>
						<tr>
								<td>i</td>
								<td>&amp;#105;</td>
								<td>---</td>
								<td>小写i Small i</td>
						</tr>
						<tr>
								<td>j</td>
								<td>&amp;#106;</td>
								<td>---</td>
								<td>小写j Small j</td>
						</tr>
						<tr>
								<td>k</td>
								<td>&amp;#107;</td>
								<td>---</td>
								<td>小写k Small k</td>
						</tr>
						<tr>
								<td>l</td>
								<td>&amp;#108;</td>
								<td>---</td>
								<td>小写l Small l</td>
						</tr>
						<tr>
								<td>m</td>
								<td>&amp;#109;</td>
								<td>---</td>
								<td>小写m Small m</td>
						</tr>
						<tr>
								<td>n</td>
								<td>&amp;#110;</td>
								<td>---</td>
								<td>小写n Small n</td>
						</tr>
						<tr>
								<td>o</td>
								<td>&amp;#111;</td>
								<td>---</td>
								<td>小写o Small o</td>
						</tr>
						<tr>
								<td>p</td>
								<td>&amp;#112;</td>
								<td>---</td>
								<td>小写p Small p</td>
						</tr>
						<tr>
								<td>q</td>
								<td>&amp;#113;</td>
								<td>---</td>
								<td>小写q Small q</td>
						</tr>
						<tr>
								<td>r</td>
								<td>&amp;#114;</td>
								<td>---</td>
								<td>小写r Small r</td>
						</tr>
						<tr>
								<td>s</td>
								<td>&amp;#115;</td>
								<td>---</td>
								<td>小写s Small s</td>
						</tr>
						<tr>
								<td>t</td>
								<td>&amp;#116;</td>
								<td>---</td>
								<td>小写t Small t</td>
						</tr>
						<tr>
								<td>u</td>
								<td>&amp;#117;</td>
								<td>---</td>
								<td>小写u Small u</td>
						</tr>
						<tr>
								<td>v</td>
								<td>&amp;#118;</td>
								<td>---</td>
								<td>小写v Small v</td>
						</tr>
						<tr>
								<td>w</td>
								<td>&amp;#119;</td>
								<td>---</td>
								<td>小写w Small w</td>
						</tr>
						<tr>
								<td>x</td>
								<td>&amp;#120;</td>
								<td>---</td>
								<td>小写x Small x</td>
						</tr>
						<tr>
								<td>y</td>
								<td>&amp;#121;</td>
								<td>---</td>
								<td>小写y Small y</td>
						</tr>
						<tr>
								<td>z</td>
								<td>&amp;#122;</td>
								<td>---</td>
								<td>小写z Small z</td>
						</tr>
						<tr>
								<td>{</td>
								<td>&amp;#123;</td>
								<td>---</td>
								<td>大括号左边部分Left curly brace</td>
						</tr>
						<tr>
								<td>|</td>
								<td>&amp;#124;</td>
								<td>---</td>
								<td>竖线Vertical bar</td>
						</tr>
						<tr>
								<td>}</td>
								<td>&amp;#125;</td>
								<td>---</td>
								<td>大括号右边部分Right curly brace</td>
						</tr>
						<tr>
								<td>~</td>
								<td>&amp;#126;</td>
								<td>---</td>
								<td>Tilde</td>
						</tr>
						<tr>
								<td>---</td>
								<td>&amp;#127;</td>
								<td>---</td>
								<td>未使用Unused</td>
						</tr>
						<tr>
								<td> </td>
								<td>&amp;#160;</td>
								<td>&amp;nbsp;</td>
								<td>空格Nonbreaking space</td>
						</tr>
						<tr>
								<td>¡</td>
								<td>&amp;#161;</td>
								<td>&amp;iexcl;</td>
								<td>Inverted exclamation</td>
						</tr>
						<tr>
								<td>¢</td>
								<td>&amp;#162;</td>
								<td>&amp;cent;</td>
								<td>货币分标志Cent sign</td>
						</tr>
						<tr>
								<td>£</td>
								<td>&amp;#163;</td>
								<td>&amp;pound;</td>
								<td>英镑标志Pound sterling</td>
						</tr>
						<tr>
								<td>¤</td>
								<td>&amp;#164;</td>
								<td>&amp;curren;</td>
								<td>通用货币标志General currency sign</td>
						</tr>
						<tr>
								<td>¥</td>
								<td>&amp;#165;</td>
								<td>&amp;yen;</td>
								<td>日元标志Yen sign</td>
						</tr>
						<tr>
								<td>¦</td>
								<td>&amp;#166;</td>
								<td>&amp;brvbar; or &amp;brkbar;</td>
								<td>断竖线Broken vertical bar</td>
						</tr>
						<tr>
								<td>§</td>
								<td>&amp;#167;</td>
								<td>&amp;sect;</td>
								<td>分节号Section sign</td>
						</tr>
						<tr>
								<td>¨</td>
								<td>&amp;#168;</td>
								<td>&amp;uml; or &amp;die;</td>
								<td>变音符号Umlaut</td>
						</tr>
						<tr>
								<td>©</td>
								<td>&amp;#169;</td>
								<td>&amp;copy;</td>
								<td>版权标志Copyright</td>
						</tr>
						<tr>
								<td>ª</td>
								<td>&amp;#170;</td>
								<td>&amp;ordf;</td>
								<td>Feminine ordinal</td>
						</tr>
						<tr>
								<td>«</td>
								<td>&amp;#171;</td>
								<td>&amp;laquo;</td>
								<td>Left angle quote, guillemet left</td>
						</tr>
						<tr>
								<td>¬</td>
								<td>&amp;#172;</td>
								<td>&amp;not</td>
								<td>Not sign</td>
						</tr>
						<tr>
								<td>­</td>
								<td>&amp;#173;</td>
								<td>&amp;shy;</td>
								<td>Soft hyphen</td>
						</tr>
						<tr>
								<td>®</td>
								<td>&amp;#174;</td>
								<td>&amp;reg;</td>
								<td>注册商标标志Registered trademark</td>
						</tr>
						<tr>
								<td>¯</td>
								<td>&amp;#175;</td>
								<td>&amp;macr; or &amp;hibar;</td>
								<td>长音符号Macron accent</td>
						</tr>
						<tr>
								<td>°</td>
								<td>&amp;#176;</td>
								<td>&amp;deg;</td>
								<td>度数标志Degree sign</td>
						</tr>
						<tr>
								<td>±</td>
								<td>&amp;#177;</td>
								<td>&amp;plusmn;</td>
								<td>加或减Plus or minus</td>
						</tr>
						<tr>
								<td>²</td>
								<td>&amp;#178;</td>
								<td>&amp;sup2;</td>
								<td>上标2 Superscript two</td>
						</tr>
						<tr>
								<td>³</td>
								<td>&amp;#179;</td>
								<td>&amp;sup3;</td>
								<td>上标3 Superscript three</td>
						</tr>
						<tr>
								<td>´</td>
								<td>&amp;#180;</td>
								<td>&amp;acute;</td>
								<td>尖重音符Acute accent</td>
						</tr>
						<tr>
								<td>µ</td>
								<td>&amp;#181;</td>
								<td>&amp;micro;</td>
								<td>Micro sign</td>
						</tr>
						<tr>
								<td>¶</td>
								<td>&amp;#182;</td>
								<td>&amp;para;</td>
								<td>Paragraph sign</td>
						</tr>
						<tr>
								<td>·</td>
								<td>&amp;#183;</td>
								<td>&amp;middot;</td>
								<td>Middle dot</td>
						</tr>
						<tr>
								<td>¸</td>
								<td>&amp;#184;</td>
								<td>&amp;cedil;</td>
								<td>Cedilla</td>
						</tr>
						<tr>
								<td>¹</td>
								<td>&amp;#185;</td>
								<td>&amp;sup1;</td>
								<td>上标1 Superscript one</td>
						</tr>
						<tr>
								<td>º</td>
								<td>&amp;#186;</td>
								<td>&amp;ordm;</td>
								<td>Masculine ordinal</td>
						</tr>
						<tr>
								<td>»</td>
								<td>&amp;#187;</td>
								<td>&amp;raquo;</td>
								<td>Right angle quote, guillemet right</td>
						</tr>
						<tr>
								<td>¼</td>
								<td>&amp;#188;</td>
								<td>&amp;frac14;</td>
								<td>四分之一Fraction one-fourth</td>
						</tr>
						<tr>
								<td>½</td>
								<td>&amp;#189;</td>
								<td>&amp;frac12;</td>
								<td>二分之一Fraction one-half</td>
						</tr>
						<tr>
								<td>¾</td>
								<td>&amp;#190;</td>
								<td>&amp;frac34;</td>
								<td>四分之三Fraction three-fourths</td>
						</tr>
						<tr>
								<td>¿</td>
								<td>&amp;#191;</td>
								<td>&amp;iquest;</td>
								<td>Inverted question mark</td>
						</tr>
						<tr>
								<td>À</td>
								<td>&amp;#192;</td>
								<td>&amp;Agrave;</td>
								<td>Capital A, grave accent</td>
						</tr>
						<tr>
								<td>Á</td>
								<td>&amp;#193;</td>
								<td>&amp;Aacute;</td>
								<td>Capital A, acute accent</td>
						</tr>
						<tr>
								<td>Â</td>
								<td>&amp;#194;</td>
								<td>&amp;Acirc;</td>
								<td>Capital A, circumflex</td>
						</tr>
						<tr>
								<td>Ã</td>
								<td>&amp;#195;</td>
								<td>&amp;Atilde;</td>
								<td>Capital A, tilde</td>
						</tr>
						<tr>
								<td>Ä</td>
								<td>&amp;#196;</td>
								<td>&amp;Auml;</td>
								<td>Capital A, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>Å</td>
								<td>&amp;#197;</td>
								<td>&amp;Aring;</td>
								<td>Capital A, ring</td>
						</tr>
						<tr>
								<td>Æ</td>
								<td>&amp;#198;</td>
								<td>&amp;AElig;</td>
								<td>Capital AE ligature</td>
						</tr>
						<tr>
								<td>Ç</td>
								<td>&amp;#199;</td>
								<td>&amp;Ccedil;</td>
								<td>Capital C, cedilla</td>
						</tr>
						<tr>
								<td>È</td>
								<td>&amp;#200;</td>
								<td>&amp;Egrave;</td>
								<td>Capital E, grave accent</td>
						</tr>
						<tr>
								<td>É</td>
								<td>&amp;#201;</td>
								<td>&amp;Eacute;</td>
								<td>Capital E, acute accent</td>
						</tr>
						<tr>
								<td>Ê</td>
								<td>&amp;#202;</td>
								<td>&amp;Ecirc;</td>
								<td>Capital E, circumflex</td>
						</tr>
						<tr>
								<td>Ë</td>
								<td>&amp;#203;</td>
								<td>&amp;Euml;</td>
								<td>Capital E, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>Ì</td>
								<td>&amp;#204;</td>
								<td>&amp;Igrave;</td>
								<td>Capital I, grave accent</td>
						</tr>
						<tr>
								<td>Í</td>
								<td>&amp;#205;</td>
								<td>&amp;Iacute;</td>
								<td>Capital I, acute accent</td>
						</tr>
						<tr>
								<td>Î</td>
								<td>&amp;#206;</td>
								<td>&amp;Icirc;</td>
								<td>Capital I, circumflex</td>
						</tr>
						<tr>
								<td>Ï</td>
								<td>&amp;#207;</td>
								<td>&amp;Iuml;</td>
								<td>Capital I, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>Ð</td>
								<td>&amp;#208;</td>
								<td>&amp;ETH;</td>
								<td>Capital Eth, Icelandic</td>
						</tr>
						<tr>
								<td>Ñ</td>
								<td>&amp;#209;</td>
								<td>&amp;Ntilde;</td>
								<td>Capital N, tilde</td>
						</tr>
						<tr>
								<td>Ò</td>
								<td>&amp;#210;</td>
								<td>&amp;Ograve;</td>
								<td>Capital O, grave accent</td>
						</tr>
						<tr>
								<td>Ó</td>
								<td>&amp;#211;</td>
								<td>&amp;Oacute;</td>
								<td>Capital O, acute accent</td>
						</tr>
						<tr>
								<td>Ô</td>
								<td>&amp;#212;</td>
								<td>&amp;Ocirc;</td>
								<td>Capital O, circumflex</td>
						</tr>
						<tr>
								<td>Õ</td>
								<td>&amp;#213;</td>
								<td>&amp;Otilde;</td>
								<td>Capital O, tilde</td>
						</tr>
						<tr>
								<td>Ö</td>
								<td>&amp;#214;</td>
								<td>&amp;Ouml;</td>
								<td>Capital O, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>×</td>
								<td>&amp;#215;</td>
								<td>&amp;times;</td>
								<td>乘号Multiply sign</td>
						</tr>
						<tr>
								<td>Ø</td>
								<td>&amp;#216;</td>
								<td>&amp;Oslash;</td>
								<td>Capital O, slash</td>
						</tr>
						<tr>
								<td>Ù</td>
								<td>&amp;#217;</td>
								<td>&amp;Ugrave;</td>
								<td>Capital U, grave accent</td>
						</tr>
						<tr>
								<td>Ú</td>
								<td>&amp;#218;</td>
								<td>&amp;Uacute;</td>
								<td>Capital U, acute accent</td>
						</tr>
						<tr>
								<td>Û</td>
								<td>&amp;#219;</td>
								<td>&amp;Ucirc;</td>
								<td>Capital U, circumflex</td>
						</tr>
						<tr>
								<td>Ü</td>
								<td>&amp;#220;</td>
								<td>&amp;Uuml;</td>
								<td>Capital U, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>Ý</td>
								<td>&amp;#221;</td>
								<td>&amp;Yacute;</td>
								<td>Capital Y, acute accent</td>
						</tr>
						<tr>
								<td>Þ</td>
								<td>&amp;#222;</td>
								<td>&amp;THORN;</td>
								<td>Capital Thorn, Icelandic</td>
						</tr>
						<tr>
								<td>ß</td>
								<td>&amp;#223;</td>
								<td>&amp;szlig;</td>
								<td>Small sharp s, German sz</td>
						</tr>
						<tr>
								<td>à</td>
								<td>&amp;#224;</td>
								<td>&amp;agrave;</td>
								<td>Small a, grave accent</td>
						</tr>
						<tr>
								<td>á</td>
								<td>&amp;#225;</td>
								<td>&amp;aacute;</td>
								<td>Small a, acute accent</td>
						</tr>
						<tr>
								<td>â</td>
								<td>&amp;#226;</td>
								<td>&amp;acirc;</td>
								<td>Small a, circumflex</td>
						</tr>
						<tr>
								<td>ã</td>
								<td>&amp;#227;</td>
								<td>&amp;atilde;</td>
								<td>Small a, tilde</td>
						</tr>
						<tr>
								<td>ä</td>
								<td>&amp;#228;</td>
								<td>&amp;auml;</td>
								<td>Small a, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>å</td>
								<td>&amp;#229;</td>
								<td>&amp;aring;</td>
								<td>Small a, ring</td>
						</tr>
						<tr>
								<td>æ</td>
								<td>&amp;#230;</td>
								<td>&amp;aelig;</td>
								<td>Small ae ligature</td>
						</tr>
						<tr>
								<td>ç</td>
								<td>&amp;#231;</td>
								<td>&amp;ccedil;</td>
								<td>Small c, cedilla</td>
						</tr>
						<tr>
								<td>è</td>
								<td>&amp;#232;</td>
								<td>&amp;egrave;</td>
								<td>Small e, grave accent</td>
						</tr>
						<tr>
								<td>é</td>
								<td>&amp;#233;</td>
								<td>&amp;eacute;</td>
								<td>Small e, acute accent</td>
						</tr>
						<tr>
								<td>ê</td>
								<td>&amp;#234;</td>
								<td>&amp;ecirc;</td>
								<td>Small e, circumflex</td>
						</tr>
						<tr>
								<td>ë</td>
								<td>&amp;#235;</td>
								<td>&amp;euml;</td>
								<td>Small e, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>ì</td>
								<td>&amp;#236;</td>
								<td>&amp;igrave;</td>
								<td>Small i, grave accent</td>
						</tr>
						<tr>
								<td>í</td>
								<td>&amp;#237;</td>
								<td>&amp;iacute;</td>
								<td>Small i, acute accent</td>
						</tr>
						<tr>
								<td>î</td>
								<td>&amp;#238;</td>
								<td>&amp;icirc;</td>
								<td>Small i, circumflex</td>
						</tr>
						<tr>
								<td>ï</td>
								<td>&amp;#239;</td>
								<td>&amp;iuml;</td>
								<td>Small i, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>ð</td>
								<td>&amp;#240;</td>
								<td>&amp;eth;</td>
								<td>Small eth, Icelandic</td>
						</tr>
						<tr>
								<td>ñ</td>
								<td>&amp;#241;</td>
								<td>&amp;ntilde;</td>
								<td>Small n, tilde</td>
						</tr>
						<tr>
								<td>ò</td>
								<td>&amp;#242;</td>
								<td>&amp;ograve;</td>
								<td>Small o, grave accent</td>
						</tr>
						<tr>
								<td>ó</td>
								<td>&amp;#243;</td>
								<td>&amp;oacute;</td>
								<td>Small o, acute accent</td>
						</tr>
						<tr>
								<td>ô</td>
								<td>&amp;#244;</td>
								<td>&amp;ocirc;</td>
								<td>Small o, circumflex</td>
						</tr>
						<tr>
								<td>õ</td>
								<td>&amp;#245;</td>
								<td>&amp;otilde;</td>
								<td>Small o, tilde</td>
						</tr>
						<tr>
								<td>ö</td>
								<td>&amp;#246;</td>
								<td>&amp;ouml;</td>
								<td>Small o, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>÷</td>
								<td>&amp;#247;</td>
								<td>&amp;divide;</td>
								<td>除号Division sign</td>
						</tr>
						<tr>
								<td>ø</td>
								<td>&amp;#248;</td>
								<td>&amp;oslash;</td>
								<td>Small o, slash</td>
						</tr>
						<tr>
								<td>ù</td>
								<td>&amp;#249;</td>
								<td>&amp;ugrave;</td>
								<td>Small u, grave accent</td>
						</tr>
						<tr>
								<td>ú</td>
								<td>&amp;#250;</td>
								<td>&amp;uacute;</td>
								<td>Small u, acute accent</td>
						</tr>
						<tr>
								<td>û</td>
								<td>&amp;#251;</td>
								<td>&amp;ucirc;</td>
								<td>Small u, circumflex</td>
						</tr>
						<tr>
								<td>ü</td>
								<td>&amp;#252;</td>
								<td>&amp;uuml;</td>
								<td>Small u, di?esis / umlaut</td>
						</tr>
						<tr>
								<td>ý</td>
								<td>&amp;#253;</td>
								<td>&amp;yacute;</td>
								<td>Small y, acute accent</td>
						</tr>
						<tr>
								<td>þ</td>
								<td>&amp;#254;</td>
								<td>&amp;thorn;</td>
								<td>Small thorn, Icelandic</td>
						</tr>
						<tr>
								<td>ÿ</td>
								<td>&amp;#255;</td>
								<td>&amp;yuml;</td>
								<td>Small y, umlaut</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/hua/aggbug/94228.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2007-01-16 16:20 <a href="http://www.blogjava.net/hua/archive/2007/01/16/94228.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iframe 父窗口和子窗口的调用方法 </title><link>http://www.blogjava.net/hua/archive/2007/01/04/91699.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Thu, 04 Jan 2007 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2007/01/04/91699.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/91699.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2007/01/04/91699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/91699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/91699.html</trackback:ping><description><![CDATA[父窗口调用子窗口 <br />iframe_ID.iframe_document_object.object_attribute = attribute_value <br />例子 <br />onClick="iframe_text.myH1.innerText='http://www.pint.com';" <br />子窗口调用父窗口 <br />parent.parent_document_object.object_attribute = attribute_value <br />例子 <br />onclick="parent.myH1.innerText='http://www.pint.com';" <br /><br />上面在IE下没有问题，但在firefox下不正常。在firefox下，应该是 <br />父窗口调用子窗口 <br />window.frames["iframe_ID"].document.getElementById("iframe_document_object"­).object_attribute = attribute_value <br />例子 <br />window.frames["iframe_text"].document.getElementById("myH1").innerHTML= "http://www.pint.com"; <br />子窗口调用父窗口 <br />parent.document.getElementById("parent_document_object").object_attribute = attribute_value <br />例子 <br />parent.document.getElementById("myH1").innerHTML = "http://www.adsf.com"; <br /><br /><br /> 子窗口调用父窗口的例子：<br />example.htm:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body </span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="alert(tt.myH1.innerHTML)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Iframe </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="tt"</span><span style="COLOR: #ff0000"> src</span><span style="COLOR: #0000ff">="frame1.htm"</span><span style="COLOR: #ff0000"> width</span><span style="COLOR: #0000ff">="250"</span><span style="COLOR: #ff0000"> height</span><span style="COLOR: #0000ff">="200"</span><span style="COLOR: #ff0000"> scrolling</span><span style="COLOR: #0000ff">="no"</span><span style="COLOR: #ff0000"> frameborder</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">h1 </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="myH2"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">hello,my wife</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> </span></div>frame1.htm<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body </span><span style="COLOR: #ff0000">onload</span><span style="COLOR: #0000ff">="parent.myH2.innerText='hello,my friend';"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span></div>父窗口调用子窗口的例子：<br />exmaple.htm<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body </span><span style="COLOR: #ff0000">onload</span><span style="COLOR: #0000ff">="test.myH1.innerText='hello,my dear';"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Iframe </span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="test.htm"</span><span style="COLOR: #ff0000"> id</span><span style="COLOR: #0000ff">="test"</span><span style="COLOR: #ff0000"> width</span><span style="COLOR: #0000ff">="250"</span><span style="COLOR: #ff0000"> height</span><span style="COLOR: #0000ff">="200"</span><span style="COLOR: #ff0000"> scrolling</span><span style="COLOR: #0000ff">="no"</span><span style="COLOR: #ff0000"> frameborder</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>test.htm<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">h1 </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="myH1"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">hello,my boy</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div><br />完整的例子 <br />test.htm<br /><div style="MARGIN: 5px 20px 20px"><div class="smallfont" style="MARGIN-BOTTOM: 2px">代码:</div><pre class="alt2" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 6px; BORDER-TOP: 1px inset; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 470px; PADDING-TOP: 6px; BORDER-BOTTOM: 1px inset; HEIGHT: 402px"><div dir="ltr" style="TEXT-ALIGN: left">&lt;HTML&gt; 
&lt;HEAD&gt; 
&lt;TITLE&gt; Test Page &lt;/TITLE&gt; 
&lt;script src="prototype-1.4.0.js"&gt;&lt;/script&gt; 
&lt;script language="javascript"&gt; 
function show(){ 
        window.frames["iframe_text"].document.getElementById("myH1").innerHTML 
= "http://www.pint.com"; 

} 
&lt;/script&gt; 
&lt;/HEAD&gt; 
&lt;BODY&gt; 
&lt;iframe height="350"  width="600" src="iframe_text.htm" 
name="iframe_text"&gt;&lt;/iframe&gt; 
&lt;form action="" method="post"&gt; 
&lt;input name="haha" id="haha" type="text" maxlength="30" value="haha" 
/&gt;&lt;br /&gt; 
&lt;textarea cols="50" rows="5" id="getAttributeMethod"&gt;&lt;/textarea&gt; 
&lt;input type="button" onClick="show();" value="提交"/&gt; 
&lt;/form&gt; 
&lt;h1 id="myH1"&gt;d&lt;/h1&gt; 
&lt;/BODY&gt; 
&lt;/HTML&gt; </div></pre></div><br />frame_test.htm <br /><div style="MARGIN: 5px 20px 20px"><div class="smallfont" style="MARGIN-BOTTOM: 2px">代码:</div><pre class="alt2" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 6px; BORDER-TOP: 1px inset; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 470px; PADDING-TOP: 6px; BORDER-BOTTOM: 1px inset; HEIGHT: 450px"><div dir="ltr" style="TEXT-ALIGN: left">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; 
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; 
&lt;head&gt; 
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; 
&lt;title&gt;无标题文档&lt;/title&gt; 
&lt;/head&gt; 
&lt;script language="javascript"&gt; 
function show(){ 
        parent.document.getElementById("myH1").innerHTML = 
"http://www.adsf.com"; 


} 


&lt;/script&gt; 
&lt;body&gt; 
&lt;h1 id="myH1"&gt;ha&lt;/h1&gt; 
&lt;form action="" method="post"&gt; 
&lt;input name="abc" id="abc" type="text" maxlength="30" value="abc" /&gt;&lt;br 
/&gt; 
&lt;textarea cols="50" rows="10" id="text"&gt;&lt;/textarea&gt; &lt;br /&gt; 
&lt;input type="button" value="提交" onclick="show();"/&gt; 
&lt;/form&gt; 
&lt;/body&gt; 
&lt;/html&gt; </div></pre></div><br /><img src ="http://www.blogjava.net/hua/aggbug/91699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2007-01-04 10:44 <a href="http://www.blogjava.net/hua/archive/2007/01/04/91699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>window.open()和window.showModalDialog()使用方法</title><link>http://www.blogjava.net/hua/archive/2006/09/11/68985.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 11 Sep 2006 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/09/11/68985.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/68985.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/09/11/68985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/68985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/68985.html</trackback:ping><description><![CDATA[
		<div id="txt">
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">一、window.open()支持环境： JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">二、基本语法：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.open(pageURL,name,parameters) </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">其中：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">pageURL 为子窗口路径 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">name 为子窗口句柄 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">parameters 为窗口参数(各参数用逗号分隔) </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">三、示例：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;SCRIPT&gt; </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;!-- </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.open ('page.html','newwindow','height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no') </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">//写成一行 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">--&gt; </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;/SCRIPT&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">脚本运行后，page.html将在新窗体newwindow中打开，宽为100，高为400，距屏顶0象素，屏左0象素，无工具条，无菜单条，无滚动条，不可调整大小，无地址栏，无状态栏。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">请对照。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">上例中涉及的为常用的几个参数，除此以外还有很多其他参数，请见四。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">四、各项参数</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">其中yes/no也可使用1/0；pixel value为具体的数值，单位象素。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">参数 | 取值范围 | 说明 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">| | </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">alwaysLowered | yes/no | 指定窗口隐藏在所有窗口之后 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">alwaysRaised | yes/no | 指定窗口悬浮在所有窗口之上 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">depended | yes/no | 是否和父窗口同时关闭 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">directories | yes/no | Nav2和3的目录栏是否可见 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">height | pixel value | 窗口高度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">hotkeys | yes/no | 在没菜单栏的窗口中设安全退出热键 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">innerHeight | pixel value | 窗口中文档的像素高度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">innerWidth | pixel value | 窗口中文档的像素宽度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">location | yes/no | 位置栏是否可见 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">menubar | yes/no | 菜单栏是否可见 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">outerHeight | pixel value | 设定窗口(包括装饰边框)的像素高度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">outerWidth | pixel value | 设定窗口(包括装饰边框)的像素宽度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">resizable | yes/no | 窗口大小是否可调整 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">screenX | pixel value | 窗口距屏幕左边界的像素长度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">screenY | pixel value | 窗口距屏幕上边界的像素长度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">scrollbars | yes/no | 窗口是否可有滚动栏 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">titlebar | yes/no | 窗口题目栏是否可见 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">toolbar | yes/no | 窗口工具栏是否可见 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">Width | pixel value | 窗口的像素宽度 </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">z-look | yes/no | 窗口被激活后是否浮在其它窗口之上</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.showModalDialog使用手册</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">
						<span style="mso-spacerun: yes">
						</span> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">基本介绍：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">showModalDialog() (IE 4+ 支持)</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">showModelessDialog() (IE 5+ 支持)</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">使用方法：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">参数说明：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">sURL--</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">必选参数，类型：字符串。用来指定对话框要显示的文档的URL。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">vArguments--</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">sFeatures--</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号“;”隔开。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; mso-outline-level: 1">
						<span lang="ZH-CN" style="FONT-FAMILY: SimSun">1.dialogHeight :对话框高度，不小于１００px，</span>
						<span lang="EN-US" style="FONT-FAMILY: Verdana">IE</span>
						<span lang="ZH-CN" style="FONT-FAMILY: SimSun">４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。</span>
				</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">2.dialogWidth: 对话框宽度。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">3.dialogLeft: 离屏幕左的距离。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">4.dialogTop: 离屏幕上的距离。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">5.center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">6.help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">7.resizable: {yes | no | 1 | 0 } ［ＩＥ５＋］：是否可被改变大小。默认no。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">8.status: {yes | no | 1 | 0 } ［IE5+］：是否显示状态栏。默认为yes[ Modeless]或no[Modal]。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">9.scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">下面几个属性是用在HTA中的，在一般的网页中一般不使用。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">10.dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">11.edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">12.unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1"> </p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">参数传递：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">1.要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">-------------------------------</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">parent.htm</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">var obj = new Object();</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">obj.name="51js";</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.showModalDialog("modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;/script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">modal.htm</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">var obj = window.dialogArguments</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">alert("您传递的参数为：" + obj.name)</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;/script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">-------------------------------</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">2.可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。例如：</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">------------------------------</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">parent.htm</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">alert(str);</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;/script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">modal.htm</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;script&gt;</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">window.returnValue="http://www.51js.com";</p>
				<p style="FONT-SIZE: 10pt; MARGIN: 0in; FONT-FAMILY: SimSun; mso-outline-level: 1">&lt;/script&gt;</p>
		</div>
<img src ="http://www.blogjava.net/hua/aggbug/68985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-09-11 16:46 <a href="http://www.blogjava.net/hua/archive/2006/09/11/68985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何利用正则表达式去掉文本中的HTML标签</title><link>http://www.blogjava.net/hua/archive/2006/08/30/66680.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Wed, 30 Aug 2006 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/08/30/66680.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/66680.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/08/30/66680.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/66680.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/66680.html</trackback:ping><description><![CDATA[
		<p> 有时候，我们在数据库中存储的是一段段的HTML文本，但是取出来的时候，有时又不需要那些HTML标签，而只是需要纯文本，就像我们在页面上看到的文字一样，所以，就需要去掉那些HTML标签，只保留文本的内容。利用正则表达式就可以很容易做到这一点：</p>
		<p>String noHtmlContent = content.replaceAll("&lt;[^&gt;]*&gt;","");</p>
		<p>一句代码搞定。</p>
<img src ="http://www.blogjava.net/hua/aggbug/66680.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-08-30 16:09 <a href="http://www.blogjava.net/hua/archive/2006/08/30/66680.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>html屏蔽各种快捷键 </title><link>http://www.blogjava.net/hua/archive/2006/08/29/66405.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 29 Aug 2006 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/08/29/66405.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/66405.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/08/29/66405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/66405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/66405.html</trackback:ping><description><![CDATA[
		<a class="posttitle" id="_2e426706641_HomePageDays_DaysList_ctl08_DayItem_DayList_ctl01_TitleUrl" href="/NeonWay/archive/2006/06/16/53269.html">
				<strong>
						<font color="#006bad">html屏蔽各种快捷键</font>
				</strong>
		</a>
		<br />
		<p>&lt;script&gt; <br />   function KeyDown(){ //屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 <br />    //alert("ASCII代码是："+event.keyCode); <br />    if ( (window.event.altKey)&amp;&amp; <br />    (  (window.event.keyCode==37)|| //屏蔽 Alt+ 方向键 ← <br />       (window.event.keyCode==39) )  ){ //屏蔽 Alt+ 方向键 → <br />        alert("不准你使用ALT+方向键前进或后退网页！"); <br />        event.returnValue=false; <br />    }</p>
		<p>   if ((event.keyCode==8) || //屏蔽退格删除键 <br />    (event.keyCode==116)|| //屏蔽 F5 刷新键 <br />    (event.keyCode==112)|| //屏蔽 F1 刷新键 <br />    (event.ctrlKey &amp;&amp; event.keyCode==82)){ //Ctrl + R <br />    event.keyCode=0; <br />    event.returnValue=false; <br />  alert("不准你使用快捷！"); <br />    } <br />   if ((event.ctrlKey)&amp;&amp;(event.keyCode==78)) //屏蔽 Ctrl+n <br />   {<br />     alert("ctrl + n");<br />  event.returnValue=false; <br />   }</p>
		<p>    if ((event.shiftKey)&amp;&amp;(event.keyCode==121)) //屏蔽 shift+F10 <br />      {<br />      alert(" shift+F10 ");<br />      event.returnValue=false; <br />   }</p>
		<p>    if (window.event.srcElement.tagName == "A" &amp;&amp; window.event.shiftKey) <br /> {<br />   window.event.returnValue = false; //屏蔽 shift 加鼠标左键新开一网页 <br /> }<br />    <br />    if ((window.event.altKey)&amp;&amp;(window.event.keyCode==115)){ //屏蔽Alt+F4 <br /> alert('Alt+F4');<br />    //window.showModelessDialog("about:blank","","dialogWidth:1px;dialogheight:1px"); <br />    return false;<br /> } <br />  }<br />document.onkeydown = KeyDown   <br />&lt;/script&gt;</p>
<img src ="http://www.blogjava.net/hua/aggbug/66405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-08-29 13:48 <a href="http://www.blogjava.net/hua/archive/2006/08/29/66405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript 经典自定义函数</title><link>http://www.blogjava.net/hua/archive/2006/08/25/65719.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Fri, 25 Aug 2006 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/08/25/65719.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/65719.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/08/25/65719.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/65719.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/65719.html</trackback:ping><description><![CDATA[
		<div id="msgcns!A598B5498EA4C845!253">
				<p>
						<font face="Courier New" size="2">//取得网络上的打印机<br />function getnetprinter()<br />{<br />  var obj=new ActiveXObject("WScript.Network");<br />  var netprinter=obj.EnumPrinterConnections();  <br />  for(i=0;i&lt;netprinter.Count();i+=2)<br />  {<br />    document.writeln(netprinter.Item(i)+"="+netprinter.Item(i+1));<br />  }<br />}<br />//取得磁盘信息 传入参数如：getdiskinfo('c')<br />function getdiskinfo(para)<br />{<br />  var fs=new ActiveXObject("scripting.filesystemobject");<br />  d=fs.GetDrive(para);<br />  s="卷标:" + d.VolumnName;<br />  s+="------" + "剩余空间:" + d.FreeSpace/1024/1024 + "M";<br />  s+="------" + "磁盘序列号:" + d.serialnumber;<br />  alert(s)<br />}<br />//取得系统目录<br />function getprocessnum()<br />{<br />    var pnsys=new ActiveXObject("WScript.shell");<br />    pn=pnsys.Environment("PROCESS");<br />    alert(pn("WINDIR"));<br />}<br />//启动计算器<br />function runcalc()<br />{<br />  var calc=new ActiveXObject("WScript.shell");<br />  calc.Run("calc");<br />}<br />//读取注册表中的值<br />function readreg()<br />{<br />  var myreadreg=new ActiveXObject("WScript.shell");<br />  try{<br />    alert(myreadreg.RegRead("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\NeroCheck"));<br />  }<br />  catch(e)<br />  {<br />    alert("读取的值不存在！");<br />  }<br />}<br />//写注册表<br />function writereg()<br />{<br />  var mywritereg=new ActiveXObject("WScript.shell");<br />  try{<br />    mywritereg.RegWrite("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest","c:\\mytest.exe");<br />    alert("写入成功！");<br />  }<br />  catch(e)<br />  {<br />    alert("写入路径不正确！");<br />  }<br />}<br />//删除注册表<br />function delreg()<br />{<br />  var mydelreg=new ActiveXObject("WScript.shell");<br />  if(confirm("是否真的删除？"))<br />  {<br />    try{<br />   mydelreg.RegDelete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\MyTest");<br />   alert("删除成功！");<br /> }<br /> catch(e)<br /> {<br />   alert("删除路径不正确");<br /> }<br />  }<br />}<br />//取得计算机名域名用户名<br />function netinfo()<br />{<br />  var mynetinfo=new ActiveXObject("WScript.network");<br />  alert("计算机名:"+mynetinfo.ComputerName+"域名:"+mynetinfo.UserDomain+"用户名:"+mynetinfo.UserName);<br />}<br />//返回系统中特殊目录的路径 (Fonts,AllUsersDesktop,Desktop,MyDocuments,Recent.....)<br />function getspecialfolder()<br />{<br />  var mygetfolder=new ActiveXObject("WScript.shell");<br />  if(mygetfolder.SpecialFolders("Fonts")!=null)<br />  {<br />    alert(mygetfolder.SpecialFolders("Fonts"));<br />  }<br />}<br />//取得文件信息  调用方式如：getfileinfo('E:\\MyPlace\\TEST\\myjs.htm')<br />function getfileinfo(para)<br />{<br />  var myfile=new ActiveXObject("scripting.filesystemobject");<br />  var fi=myfile.GetFile(para);<br />  alert("文件类型:"+fi.type+"文件大小:"+fi.size/1024/1024+"M"+"最后一次访问时间:"+fi.DateLastAccessed);<br />}<br />//取得客户端的信息<br />function clientInfo()<br />{<br />  strClientInfo="availHeight=   "+window.screen.availHeight+"\n"+<br />    "availWidth=   "+window.screen.availWidth+"\n"+<br />    "bufferDepth=   "+window.screen.bufferDepth+"\n"+<br />    "colorDepth=   "+window.screen.colorDepth+"\n"+<br />    "colorEnable=   "+window.navigator.cookieEnabled+"\n"+<br />    "cpuClass=   "+window.navigator.cpuClass+"\n"+<br />    "height=   "+window.screen.height+"\n"+<br />    "javaEnable=   "+window.navigator.javaEnabled()+"\n"+<br />    "platform=   "+window.navigator.platform+"\n"+<br />    "systemLanguage=   "+window.navigator.systemLanguage+"\n"+<br />    "userLanguage=   "+window.navigator.userLanguage+"\n"+<br />    "width=   "+window.screen.width;<br />  alert(strClientInfo);  <br />}<br />//Dilog Helper对象的使用<br />function changeColor()//Dilog Helper对象的使用之调用系统调色板<br />{<br />var sColor=dlgHelper.choosecolordlg();<br />sColor=sColor.toString(16);<br />if (sColor.length &lt; 6) {<br />  var sTempString = "000000".substring(0,6-sColor.length);<br />  sColor = sTempString.concat(sColor);<br />}<br />alert(sColor);<br />mybody.style.backgroundColor=sColor;<br />}<br />function getFonts()//Dilog Helper对象的使用之取得系统支持的字体<br />{<br />  var strFonts="";<br />  for(var i=1;i&lt;dlgHelper.fonts.count;i++)<br />  {<br />    strFonts=strFonts+dlgHelper.fonts(i)+"|";<br />  }<br />  alert(strFonts);<br />}<br />function getBlockFormat()//Dilog Helper对象的使用之取得系统中块的格式信息（如：标题1、标题2....）<br />{<br />  var strBlockFormat="";<br />  for(var i=1;i&lt;dlgHelper.BlockFormats.count;i++)<br />  {<br />    strBlockFormat=strBlockFormat+dlgHelper.BlockFormats(i)+"|";<br />  }<br />  alert(strBlockFormat);<br />}</font>
				</p>
				<p>
						<font face="Courier New" size="2">function createTxtLink()//给选中的文本创建链接<br />{<br />  var sText=document.selection.createRange();<br />  if(sText.text!="")<br />  {<br />    document.execCommand("CreateLink");<br />    if(sText.parentElement().tagName=="A")<br />    {<br />      sText.parentElement().innerText=sText.parentElement().href;<br />      document.execCommand("ForeColor",false,"#ffff00");<br />    }<br />  }<br />}<br />//以下为取得BlockFormats，填充Select（id为myselect）并根据选择不同的BlockFormat改变样式<br />//函数fillselect()和changeformat()<br />//对execCommand的一点说明：Executes a command over the given selection or text range<br />function fillselect()<br />{<br />  var item=document.createElement("OPTION")<br />  item.text="请选择";<br />  item.value="";<br />  myselect.add(item);<br />  for(var i=1;i&lt;dlgHelper.BlockFormats.count;i++)<br />  {<br />    item=document.createElement("OPTION");<br />    item.text=dlgHelper.BlockFormats(i);<br />    item.value=dlgHelper.BlockFormats(i);<br />    myselect.add(item);<br />  }<br />}<br />function changeformat()<br />{<br />  var sSelect=myselect.options[myselect.selectedIndex].value;<br />  document.execCommand("FormatBlock",false,sSelect);<br />}<br />//取得驱动器类型，调用如：ShowDriveType('c:')<br />function ShowDriveType(drvpath)<br />{<br />  fs=new ActiveXObject("scripting.filesystemobject");<br />  disk=fs.GetDrive(drvpath);<br />  var whichtype="";<br />  switch(disk.DriveType)<br />  { <br /> case 0:<br />   whichtype="Unknown"<br />   break<br /> case 1:<br />   whichtype="Removable"<br />   break<br /> case 2:<br />   whichtype="Fixed"<br />   break<br /> case 3:<br />   whichtype="Network"<br />   break<br /> case 4:<br />   whichtype="CD-ROM"<br />   break<br /> case 5:<br />   whichtype="RAM Disk"<br />  }<br />  alert(whichtype);<br />  //显示磁盘的SerialNumber<br />  try{<br /> alert(disk.SerialNumber);<br />  }<br />  catch(e){<br />    alert(e.message);<br />  }<br />  alert(disk.VolumeName);//取得卷标<br />}</font>
				</p>
				<p>
						<font face="Courier New" size="2">&lt;/script&gt;<br />－－－－－－－－－－－－－－－－－－－－－－－－－<br />&lt;OBJECT id=dlgHelper CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"&gt;&lt;/OBJECT&gt;</font>
				</p>
				<div>
				</div>
		</div>
<img src ="http://www.blogjava.net/hua/aggbug/65719.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-08-25 11:23 <a href="http://www.blogjava.net/hua/archive/2006/08/25/65719.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单表单验证收藏</title><link>http://www.blogjava.net/hua/archive/2006/08/25/65718.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Fri, 25 Aug 2006 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/08/25/65718.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/65718.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/08/25/65718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/65718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/65718.html</trackback:ping><description><![CDATA[
		<div id="msgcns!A598B5498EA4C845!252">
				<span>
						<font face="Courier New" size="2">
								<font color="#000000" size="2">简单表单验证收藏</font>
								<br />&lt;script language=javascript&gt;<br /><font color="blue">function</font> onlyEng()<br />{<br />  <font color="blue">if</font>(!(event.keyCode&gt;=65&amp;&amp;event.keyCode&lt;=90))<br />    event.returnValue=<font color="blue">false</font>;<br />}<br /><font color="blue">function</font> onlyNum()<br />{<br />  <font color="blue">if</font>(!((event.keyCode&gt;=48&amp;&amp;event.keyCode&lt;=57)||(event.keyCode&gt;=96&amp;&amp;event.keyCode&lt;=105)))<br />//考虑小键盘上的数字键<br />    event.returnValue=<font color="blue">false</font>;<br />}<br /><font color="blue">function</font> isEmail(strEmail) {<br /> <font color="blue">if</font> (strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)<br />  return <font color="blue">true</font>;<br /> <font color="blue">else</font><br />  alert(<font color="#ff33ff">"wrong"</font>);<br />}<br />&lt;/script&gt;<br />只能是汉字:&lt;input onkeyup=<font color="#ff33ff">"value=value.<font color="red">replace</font>(/[^\u4E00-\u9FA5]/g,'')"</font>&gt;&lt;br&gt;<br />只能是英语字符:&lt;input onkeydown=<font color="#ff33ff">"onlyEng();"</font>&gt;&lt;br&gt;<br />只能是数字:&lt;input onkeydown=<font color="#ff33ff">"onlyNum();"</font>&gt;&lt;br&gt;<br />只能是英文字母和数字:&lt;input onkeyup=<font color="#ff33ff">"value=value.<font color="red">replace</font>(/[\W]/g,'') "</font> onbeforepaste=<font color="#ff33ff">"clipboardData.setData('text',clipboardData.getData('text').<font color="red">replace</font>(/[^\d]/g,''))"</font>&gt;&lt;br&gt;<br />验证email格式:&lt;input type=text onblur=isEmail(this.value)&gt;&lt;br&gt;<br />不能输入汉字&lt;INPUT onpaste=<font color="#ff33ff">"return <font color="blue">false</font>;"</font> style=<font color="#ff33ff">"IME-MODE: disabled; WIDTH: 400px"</font> value=<font color="#ff33ff">"I only accept English input! Thanks <font color="blue">for</font> corporation!"</font> name=textfield&gt;&lt;br&gt;</font>
				</span>
				<div>
				</div>
		</div>
		<p> </p>
<img src ="http://www.blogjava.net/hua/aggbug/65718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-08-25 11:21 <a href="http://www.blogjava.net/hua/archive/2006/08/25/65718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网站设计的标准时代</title><link>http://www.blogjava.net/hua/archive/2006/07/27/60307.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Thu, 27 Jul 2006 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/07/27/60307.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/60307.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/07/27/60307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/60307.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/60307.html</trackback:ping><description><![CDATA[
		<p>本文观点：遵循国际网站标准（Web Standards）进行网站设计和改善。<br />阅读对象：网站设计人员、web应用开发人员<br />关键字：Web Standards、XML、XHML、CSS、DOM、DOCTYPE、Accessibility</p>
		<p>
				<strong>前言</strong>
		</p>
		<p>网络上的变革每天都在发生，当我们觉得网站设计技术已经非常简单和熟悉的时候。国外网站设计标准化的概念早已悄悄的形成和迅速“蔓延”，自2000年起，大部分新发行的浏览器版本都开始支持网站标准。主流的网页编辑工具也开始全面支持网站标准，甚至一些软件几乎完全由XML文件组成，例如Dreamweaver MX。一些著名的大型商业网站开始采用网站标准来重新构建（例如体育资讯<a href="http://www.espn.com/">www.espn.com</a>），另外一些则拒绝非标准浏览器浏览它们的网站（例如连线杂志<a href="http://www.wired.com/">www.wired.com</a>）。众多的设计网站(例如：<a href="http://www.k10k.net/">www.k10k.net</a>) 和个人网站更是标准推广的先行者，纷纷转向采用XHTML+CSS来建立。2004年2月4日XML1.1推荐标准正式发布，标志着网站设计的标准时代已经到来。</p>
		<p>国外网站标准的声势汹涌，但国内业界显得有些后知后觉或者毫无兴趣，让我们来看看国内三大门户网站首页对网站标准的遵循情况：</p>
		<table class="black12px" cellspacing="1" cellpadding="10" bgcolor="#000000">
				<tbody>
						<tr bgcolor="#ffffff">
								<td valign="top" width="199">
										<p align="center">
												<strong>校验项目</strong>
										</p>
								</td>
								<td valign="top" width="132">
										<p align="center">
												<strong>校验目标网站</strong>
										</p>
								</td>
								<td valign="top" width="237">
										<p align="center">
												<strong>校验结果</strong>
										</p>
								</td>
						</tr>
						<tr bgcolor="#ffffff">
								<td valign="center" width="199" rowspan="3">
										<p>代码校验(XHTML)<br />(校验地址：<a href="http://validator.w3.org/">http://validator.w3.org/</a>、<br />(<a href="http://www.htmlhelp.com/tools/validator/">http://www.htmlhelp.com/tools/validator/</a> )</p>
								</td>
								<td valign="center" width="132">
										<p align="center">www.sina.com.cn</p>
								</td>
								<td valign="top" width="237">
										<p>失败，混杂的HTML，未达到XHTML1。黄色警报：字符集错误。(定义了GB2312，但页内使用了非GB2312字符)。非标准代码43处。</p>
								</td>
						</tr>
						<tr>
								<td valign="center" width="132" bgcolor="#ffffff">
										<p align="center">www.163.com</p>
								</td>
								<td valign="top" width="237" bgcolor="#ffffff">
										<p>失败，混杂的HTML，未达到XHTML1。红色警报：未定义DOCTYPE。非标准代码41处。</p>
								</td>
						</tr>
						<tr>
								<td valign="center" width="132" bgcolor="#ffffff">
										<p align="center">www.sohu.com</p>
								</td>
								<td valign="top" width="237" bgcolor="#ffffff">
										<p>失败，混杂的HTML，未达到XHTML1。黄色警报：字符集错误。非标准代码38处。</p>
								</td>
						</tr>
						<tr bgcolor="#ffffff">
								<td valign="top" width="199" rowspan="3">
										<p>CSS2校验<br />(校验地址：<a href="http://jigsaw.w3.org/css-validator/validator-uri.html">http://jigsaw.w3.org/css-validator/validator-uri.html</a> )</p>
								</td>
								<td valign="center" width="132">
										<p align="center">www.sina.com.cn</p>
								</td>
								<td valign="top" width="237">
										<p>25处错误。</p>
								</td>
						</tr>
						<tr>
								<td valign="center" width="132" bgcolor="#ffffff">
										<p align="center">www.163.com</p>
								</td>
								<td valign="top" width="237" bgcolor="#ffffff">
										<p>1处警告，10处错误。</p>
								</td>
						</tr>
						<tr>
								<td valign="center" width="132" bgcolor="#ffffff">
										<p align="center">www.sohu.com</p>
								</td>
								<td valign="top" width="237" bgcolor="#ffffff">
										<p>1处警告，15处错误。</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>校验结果显示所有门户网站都没有符合网站标准，甚至连HTML4.0标准都没有遵循。举例来说：&lt;FONT&gt;标签，早在1998年4月HTML4.0标准中就已经被W3C列为“不建议使用(deprecated)”标签。但我们的三大门户网站首页上都有不少类似&lt;font color=red&gt;的代码。这里的简单列表，目的不是批评这些网站做得不好（事实上大部分的大型商业站点都通不过W3C严格的正确性校验），有很多的原因造成这种状况，例如采用老的信息发布系统，网页设计人员的技术和意识不够等等。我们只是想说明一点：连比较规范的上市公司的网站都没有意识到遵循标准，其他规模教小的商业网站就更不用说，国内对网站标准没有足够的重视。</p>
		<p>让我们赶紧跟上新时代的步伐，一起来了解一下网站标准吧。</p>
		<p>
				<strong>一．为什么要建立网站标准</strong>
		</p>
		<p>我们大部分人都有深刻体验，每当主流浏览器版本的升级，我们刚建立的网站就可能变得过时，我们就需要升级或者重新建造一遍网站。例如1996-1999年典型的“浏览器大战”，为了兼容Netscape和IE，网站不得不为这两种浏览器写不同的代码。同样的，每当新的网络技术和交互设备的出现，我们也需要制作一个新版本来支持这种新技术或新设备，例如支持手机上网的WAP技术。类似的问题举不胜举：网站代码臃肿、繁杂浪费了我们大量的带宽；针对某种浏览器的DHTML特效，屏蔽了部分潜在的客户；不易用的代码，残障人士无法浏览网站等等。这是一种恶性循环，是一种巨大的浪费。</p>
		<p>如何解决这些问题呢？有识之士早已开始思考，需要建立一种普遍认同的标准来结束这种无序和混乱。商业公司(Netscape、Microsoft等)也终于认识到统一标准的好处，因此在W3C（W3C.org）的组织下，网站标准开始被建立（1998年2月10日发布XML1.0为标志），并在网站标准组织（webstandards.org）的督促下推广执行。</p>
		<p>简单说，网站标准的目的就是：</p>
		<ul>
				<li>提供最多利益给最多的网站用户 
</li>
				<li>确保任何网站文挡都能够长期有效 
</li>
				<li>简化代码、降低建设成本 
</li>
				<li>让网站更容易使用，能适应更多不同用户和更多网路设备 
</li>
				<li>当浏览器版本更新，或者出现新的网络交互设备时，确保所有应用能够继续正确执行。 </li>
		</ul>
		<p>对于网站设计和开发人员来说，遵循网站标准就是使用标准；对于你的网站用户来说，网站标准就是最佳体验。</p>
		<p>访问量排名世界第4，中国第1的新浪网站，也遭遇非标准DHTML的问题。在最新发布的Netscape7和Mozila1.6浏览器中，新浪首页的漂浮广告全部失效，层叠挤在页面左下角。也许那些广告主认为损失这些潜在的用户无所谓。（截图日期2004年4月12日）</p>
		<div align="center">
				<img alt="" src="http://eway.agog.cn/article/image/image002.jpg" />
		</div>
		<p>
				<strong>二．什么是网站标准</strong>
		</p>
		<p>网站标准不是某一个标准，而是一系列标准的集合。网页主要由三部分组成：结构（Structure）、表现（Presentation）和行为（Behavior）。对应的标准也分三方面：结构化标准语言主要包括XHTML和XML，表现标准语言主要包括CSS，行为标准主要包括对象模型（如W3C DOM）、ECMAScript等。这些标准大部分由W3C起草和发布，也有一些是其他标准组织制订的标准，比如ECMA（European Computer Manufacturers Association）的ECMAScript标准。我们来简单了解一下这些标准：</p>
		<p>
				<strong>1．结构标准语言</strong>
		</p>
		<p>（1）XML </p>
		<p>XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C于2000年10月6日发布的XML1.0，参考<a href="http://www.w3.org/TR/2000/REC-xml-20001006">（www.w3.org/TR/2000/REC-XML-20001006</a>）。和HTML一样，XML同样来源于SGML，但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足，以强大的扩展性满足网络信息发布的需要，后来逐渐用于网络数据的转换和描述。关于XML的好处和技术规范细节这里就不多说了，网上有很多资料，也有很多书籍可以参考。</p>
		<p>（2）XHTML </p>
		<p>XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。目前推荐遵循的是W3C于2000年1月26日推荐XML1.0（参考<a href="http://www.w3.org/TR/xhtml1">http://www.w3.org/TR/xhtml1</a>）。XML虽然数据转换能力强大，完全可以替代HTML，但面对成千上万已有的站点，直接采用XML还为时过早。因此，我们在HTML4.0的基础上，用XML的规则对其进行扩展，得到了XHTML。简单的说，建立XHTML的目的就是实现HTML向XML的过渡。</p>
		<p>
				<strong>2. 表现标准语言</strong>
		</p>
		<p>CSS是Cascading Style Sheets层叠样式表的缩写。目前推荐遵循的是W3C于1998年5月12日推荐CSS2（参考<a href="http://www.w3.org/TR/CSS2/">http://www.w3.org/TR/CSS2/</a>）。W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他表现的语言。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构，使站点的访问及维护更加容易。</p>
		<p>
				<strong>3.行为标准</strong>
		</p>
		<p>（1）DOM</p>
		<p>DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范（<a href="http://www.w3.org/DOM/default.htm">http://www.w3.org/DOM/</a>），DOM是一种与浏览器，平台，语言的接口，使得你可以访问页面其他的标准组件。简单理解，DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突，给予web设计师和开发者一个标准的方法，让他们来访问他们站点中的数据、脚本和表现层对像。</p>
		<p>(2) ECMAScript</p>
		<p>ECMAScript是ECMA(European Computer Manufacturers Association)制定的标准脚本语言（JAVAScript）。目前推荐遵循的是ECMAScript 262<a href="http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM">（http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM</a>）。</p>
		<p>
				<strong>三．遵循标准的网站与传统网站的区别</strong>
		</p>
		<p>传统网站只是印刷媒体的延伸，设计目标是保证在4-6个主流浏览器版本中看起来一致。通常的特征是：</p>
		<ul>
				<li>以表格为基础的布局。 
</li>
				<li>内容与表现方式混杂在一起。典型的例子是&lt;font&gt;标签。 
</li>
				<li>垃圾代码（非标准代码）。 
</li>
				<li>不易用的代码。 
</li>
				<li>语义不正确的代码。比如&lt;b&gt;不解释的话，你根本不明白这是字体加粗的意思。 </li>
		</ul>
		<p>而采用网站标准建立的网站是一个能够接受各种用户和各种设备的广泛的交流沟通工具。一般特征是：</p>
		<ul>
				<li>语义正确的标识。即使用能够表达含义的标签。保证代码可以在文本浏览器、PDAs、搜索引擎中被正确理解。 
</li>
				<li>正确有效的代码。通过W3C代码校验（<a href="http://validator.w3.org/">http://validator.w3.org/</a>）的就是正确代码。 
</li>
				<li>对人、机都易用的代码。能够接受广泛的用户和设备的访问， 
</li>
				<li>用CSS分离表现层和内容。使代码更简洁、下载速度更快，批量修改和定制表现形式更容易。 </li>
		</ul>
		<p>
				<strong>四．采用网站标准的好处和缺点</strong>
		</p>
		<p>1．好处</p>
		<p>对网站浏览者的好处：</p>
		<ul>
				<li>文件下载与页面显示速度更快； 
</li>
				<li>内容能被更多的用户所访问（包括失明、视弱、色盲等残障人士）； 
</li>
				<li>内容能被更广泛的设备所访问（包括屏幕阅读机、手持设备、搜索机器人、打印机、电冰箱等等） 
</li>
				<li>用户能够通过样式选择定制自己的表现界面 
</li>
				<li>所有页面都能提供适于打印的版本 </li>
		</ul>
		<p>对网站所有者的好处：</p>
		<ul>
				<li>更少的代码和组件，容易维护 
</li>
				<li>带宽要求降低（代码更简洁），成本降低。举个例子：当 ESPN.com 使用 CSS改版后，每天节约超过两兆字节（terabytes）的带宽。 
</li>
				<li>更容易被搜寻引擎搜索到 
</li>
				<li>改版方便，不需要变动页面内容 
</li>
				<li>提供打印版本而不需要复制内容 
</li>
				<li>提高网站易用性。在美国，有严格的法律条款（Section 508）来约束政府网站必须达到一定的易用性，其他国家也有类似的要求。 </li>
		</ul>
		<p>2．缺点</p>
		<ul>
				<li>需要花费更多时间来学习标准 
</li>
				<li>依然需要注意浏览器的兼容问题 
</li>
				<li>用 CSS 来实现某些表现反而比表格更为麻烦 </li>
		</ul>
		<p>
				<strong>五．怎么改善现有网站</strong>
		</p>
		<p>我们大部分的设计师依旧在采用传统的表格布局、表现与结构混杂在一起的方式来建立网站。学习使用XHTML+CSS的方法需要一个过程，使现有网站符合网站标准也不可能一步到位。最好的方法是循序渐进，分阶段来逐步达到完全符合网站标准的目标。如果你是新手，或者对代码不是很熟悉，也可以采用遵循标准的编辑工具，例如Dreamweaver MX 2004，它是目前支持CSS标准最完善的工具。</p>
		<p>1．初级改善</p>
		<ul>
				<li>为页面添加正确的DOCTYPE </li>
		</ul>
		<p>很多设计师和开发者都不知道什么是DOCTYPE，DOCTYPE有什么用。DOCTYPE</p>
		<p>是document type的简写。主要用来说明你用的XHTML或者HTML是什么版本。浏览器根据你DOCTYPE定义的DTD(文档类型定义)来解释页面代码。所以，如果你不注意设置了错误的DOCTYPE，结果会让你大吃一惊。XHTML1.0提供了三种DOCTYPE可选择：</p>
		<p>过渡型（Transitional ）</p>
		<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"</p>
		<p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</p>
		<p>严格型（Strict ）</p>
		<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"</p>
		<p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</p>
		<p>框架型（Frameset ）</p>
		<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" </p>
		<p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;</p>
		<p>对于我们初级改善来说，只要选用过渡型的声明就可以了。它依然可以兼容你的表格布局、表现标识等，不至于让你觉得变化太大，难以掌握。</p>
		<p>Tip:你懒得输入上面过渡型代码的话，可以访问<a href="http://www.macromedia.com/">http://www.macromedia.com/</a>网站的首页，然后查看源代码，把head区同样的代码拷贝粘贴就可以了。</p>
		<ul>
				<li>设定一个名字空间（Namespace） </li>
		</ul>
		<p>直接在DOCTYPE声明后面添加如下代码：</p>
		<p>&lt;html XMLns="http://www.w3.org/1999/xhtml" &gt;</p>
		<p>一个namespace是收集元素类型和属性名字的一个详细的DTD，namespace声明允许你通过一个在线地址指向来识别你的namespace。只要照样输入代码就可以。</p>
		<ul>
				<li>声明你的编码语言 </li>
		</ul>
		<p>为了被浏览器正确解释和通过标识校验，所有的XHTML文档都必须声明它们所使用的编码语言。代码如下：</p>
		<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=GB2312" /&gt;</p>
		<p>这里声明的编码语言是简体中文GB2312，你如果需要制作繁体内容，可以定义为BIG5。</p>
		<ul>
				<li>用小写字母书写所有的标签 </li>
		</ul>
		<p>XML对大小写是敏感的，所以，XHTML也是大小写有区别的。所有的XHTML元素和属性的名字都必须使用小写。否则你的文档将被W3C校验认为是无效的。例如下面的代码是不正确的：</p>
		<p>&lt;TITLE&gt;公司简介&lt;/TITLE&gt;</p>
		<p>正确的写法是：</p>
		<p>&lt;title&gt;公司简介&lt;/title&gt;</p>
		<p>同样的，&lt;P&gt;改成&lt;p&gt;，&lt;B&gt;改成&lt;b&gt;等等。这步转换很简单。</p>
		<ul>
				<li>为图片添加 alt 属性 </li>
		</ul>
		<p>为所有图片添加alt属性。Alt属性指定了当图片不能显示的时候就显示供替换文本，这样做对正常用户可有可无，但对纯文本浏览器和使用屏幕阅读机的用户来说是至关重要的。只有添加了alt属性，代码才会被W3C正确性校验通过。注意的是我们要添加有意义的alt属性，象下面这样的写法毫无意义：</p>
		<p>&lt;img src=”logo_unc_120x30.gif” alt=” logo_unc_120x30.gif”&gt;</p>
		<p>正确的写法：</p>
		<p>&lt;img src=”logo_unc_120x30.gif” alt=”UNC公司标志，点击返回首页”&gt;</p>
		<ul>
				<li>给所有属性值加引号 </li>
		</ul>
		<p>在HTML中，你可以不需要给属性值加引号，但是在XHTML中，它们必须被加引号。</p>
		<p>例：height=”100”，而不能是height=100。</p>
		<ul>
				<li>关闭所有的标签 </li>
		</ul>
		<p>在XHTML中，每一个打开的标签都必须关闭。就象这样：</p>
		<p>&lt;p&gt;每一个打开的标签都必须关闭。&lt;/p&gt;</p>
		<p>&lt;b&gt;HTML可以接受不关闭的标，XHTML就不可以。&lt;/b&gt;</p>
		<p>这个规则可以避免HTML的混乱和麻烦。举例来说：如果你不关闭图像标签，在一些浏览器中就可能出现CSS显示问题。用这种方法能确保页面和你设计的一样显示。需要说明的是：空标签也要关闭，在标签尾部使用一个正斜杠“/”来关闭它们自己。例如：</p>
		<p>&lt;br /&gt;</p>
		<p>&lt;img src="webstandards.gif" /&gt;</p>
		<p>经过上述七个规则处理后，页面就基本符合XHTML1.0的要求。但我们还需要校验一下是否真的符合标准了。我们可以利用W3C提供免费校验服务（<a href="http://validator.w3.org/">http://validator.w3.org/</a>）。发现错误后逐个修改。在后面的资源列表中我们也提供了其他校验服务和对校验进行指导的网址，可以作为W3C校验的补充。当最后通过了XHTML验证，恭喜你已经向网站标准迈出了一大步。不是想象中的那么难吧！</p>
		<div align="center">
				<img alt="" src="http://eway.agog.cn/article/image/image004.jpg" />
		</div>
		<p>2．中级改善</p>
		<p>接下来我们的改善主要在结构和表现相分离上，这一步不象第一步那么容易实现，我们需要观念上的转变，以及对CSS2技术的学习和运用。但学习任何新知识都需要花点时间的，不是吗？诀窍在于边做边学。假如你一直采用表格布局，根本没用过 CSS，也不必急于跟表格布局说再见，你可以先用样式表代替 font 标签。随着你学到的越多，你能做的就越多。好，一起来看看我们需要做哪些事：</p>
		<ul>
				<li>用CSS定义元素外观 </li>
		</ul>
		<p>我们在写标识时已经养成习惯，当希望字体大点就用&lt;h1&gt;，希望在前面加个点符号就用&lt;li&gt;。我们总是想&lt;h1&gt;的意思是大的，&lt;li&gt;的意思是圆点，&lt;b&gt;的意思是“加粗文本”。而实际上， &lt;h1&gt;能变成你想要的任何样子，通过CSS，&lt;h1&gt;能变成小的字体，&lt;p&gt;文本能够变成巨大的、粗体的，&lt;li&gt;能够变成一张图片等等。我们不能强迫用结构元素实现表现效果，我们应该使用CSS来确定那些元素的外观。例如，我们可以使原来默认的6级标题可以看起来大小一样：</p>
		<p>h1, h2, h3, h4, h5, h6{</p>
		<p>font-family: 宋体, serif;</p>
		<p>font-size: 12px;</p>
		<p>}</p>
		<ul>
				<li>用结构化元素代替无意义的垃圾 </li>
		</ul>
		<p>许多人可能从来都不知道HTML和XHTML元素设计本意是用来表达结构的。我们很多人已经习惯用元素来控制表现，而不是结构。例如，一段列表内容可能会使用下面这样的标识：</p>
		<p>句子一&lt;br /&gt;</p>
		<p>句子二&lt;br /&gt;</p>
		<p>句子三&lt;br /&gt;</p>
		<p>如果我们采用一个无序列表代替会更好：</p>
		<p>&lt;ul&gt;</p>
		<p>&lt;li&gt;句子一&lt;/li&gt;</p>
		<p>&lt;li&gt;句子二&lt;/li&gt;</p>
		<p>&lt;li&gt;句子三&lt;/li&gt;</p>
		<p>&lt;/ul&gt;</p>
		<p>你或许会说“但是&lt;li&gt;显示的是一个圆点，我不想用圆点”。事实上，CSS没有设定元素看起来是什么样子，你完全可以用CSS关掉圆点。</p>
		<ul>
				<li>给每个表格和表单加上id </li>
		</ul>
		<p>给表格或表单赋予一个唯一的、结构的标记，例如</p>
		<p>&lt;table id="menu"&gt;</p>
		<p>接下来，在书写样式表的时候，你就可以创建一个“menu”的选择器，并且关联一个CSS规则，用来告诉表格单元、文本标签和所有其他元素怎么去显示。这样，不需要对每个&lt;td&gt;标签附带一些多余的、占用带宽的表现层的高、宽、对齐和背景颜色等等属性。只需要一个附着的标记（标记“menu”的id标记），你就可以在一个分离的样式表内为干净的、紧凑的代码标记进行特别的表现层处理。</p>
		<p>中级改善我们这里先列主要的三点，但其中包含的内容和知识点非常多，需要我们逐步学习和掌握，直到最后实现完全采用CSS而不才用任何表格实现布局。限于本文是引导推广之意，不展开详述。</p>
		<p>最后我们特别需要补充介绍的是网站的易用性(Accessibility)和交互设计改善，易用性与网站标准有着标准联系紧密，和网站标准一样，都是为了使我们的网站接受更多的用户访问。1990年W3C建立了Web Accessibility Initiative（WAI），给网站建造者提供实现可访问性的方法和策略（<a href="http://www.w3.org/WAI/GL/">http://www.w3.org/WAI/GL/</a>）。提高易用性和研究交互设计（推荐VB之父Alan Cooper的About Face2.0一书）的策略能提高你的开发技术，开阔视野。提高你作为专业网页设计师的价值，使你更具竞争力。这正是每个网站所有者和每个设计师或开发者要努力达到的目标。</p>
		<p>
				<strong>六．网站标准的资源</strong>
		</p>
		<p>1．网站标准</p>
		<p>
				<a href="http://www.zeldman.com/">http://www.zeldman.com</a>/ </p>
		<p>
				<a href="http://webstandards.org/">http://webstandards.org</a>/ </p>
		<p>
				<a href="http://webstandardsgroup.org/">http://webstandardsgroup.org</a>/ </p>
		<p>
				<a href="http://www.nypl.org/styleguide/">http://www.nypl.org/styleguide/</a>
		</p>
		<p>2．有语义代码</p>
		<p>
				<a href="http://brainstormsandraves.com/articles/semantics/structure/">http://brainstormsandraves.com/articles/semantics/structure/</a>
		</p>
		<p>3．校验（Validation ）</p>
		<p>
				<a href="http://validator.w3.org/">http://validator.w3.org</a>/ </p>
		<p>
				<a href="http://www.htmlhelp.com/tools/validator/">http://www.htmlhelp.com/tools/validator/</a>
		</p>
		<p>
				<a href="http://webboy.net/presentation/validation.cfm">http://webboy.net/presentation/validation.cfm</a>
		</p>
		<p>4．易用性（Accessibility ）</p>
		<p>
				<a href="http://www.joeclark.org/">http://www.joeclark.org/</a>
		</p>
		<p>
				<a href="http://www.accessify.com/">http://www.accessify.com/</a>
		</p>
		<p>
				<a href="http://www.juicystudio.com/">http://www.juicystudio.com/</a>
		</p>
		<p>5．样式表CSS </p>
		<p>
				<a href="http://webboy.net/presentation/ict2004/01.htm">http://webboy.net/presentation/ict2004/01.htm</a>
		</p>
		<p>
				<a href="http://webboy.net/presentation/ict2004/02.htm">http://webboy.net/presentation/ict2004/02.htm</a>
		</p>
		<p>
				<a href="http://webboy.net/presentation/ict2004/03.htm">http://webboy.net/presentation/ict2004/03.htm</a>
		</p>
		<p>
				<a href="http://westciv.com/style_master/academy/css_tutorial/">http://westciv.com/style_master/academy/css_tutorial/</a>
		</p>
		<p>
				<a href="http://css.maxdesign.com.au/">http://css.maxdesign.com.au</a>
		</p>
		<p>
				<a href="http://www.thenoodleincident.com/tutorials/css/">http://www.thenoodleincident.com/tutorials/css/</a>
		</p>
		<p>6．实例站点(XHTML+CSS)</p>
		<p>
				<a href="http://www.macromedia.com/">http://www.macromedia.com/</a>
		</p>
		<p>
				<a href="http://www.k10k.net/">http://www.k10k.net</a>
		</p>
		<p>
				<a href="http://www.fyrebase.com/">http://www.fyrebase.com/</a>
		</p>
		<p>
				<a href="http://www.onetruefit.com/">http://www.onetruefit.com/</a>
		</p>
		<p>
				<a href="http://pixeltable.com/">http://pixeltable.com/</a>
		</p>
		<p>
				<a href="http://www.fishmarketing.net/">http://www.fishmarketing.net/</a>
		</p>
		<p>附．参考文章及网站</p>
		<ul>
				<li>Jeffrey Zeldman（<a href="http://www.zeldman.com/">www.zeldman.com</a>）著作《Design with Web Standards》，该书已经由电子工业出版社引进，即将发行中文版。 
</li>
				<li>Max Design的文章：《The benefits of Web Standards to your visitors, your clients and you!》<a href="http://www.maxdesign.com.au/presentation/benefits/index.htm">http://www.maxdesign.com.au/presentation/benefits/index.htm</a></li>
				<li>Mark Pilgrim 《Dive Into Accessibility》<a href="http://diveintoaccessibility.org/">http://diveintoaccessibility.org</a></li>
				<li>网站标准组织<a href="http://www.webstandards.org/">www.webstandards.org</a></li>
				<li>网站标准团体<a href="http://www.webstandardsgroup.org/">www.webstandardsgroup.org</a></li>
		</ul>
<img src ="http://www.blogjava.net/hua/aggbug/60307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-07-27 12:26 <a href="http://www.blogjava.net/hua/archive/2006/07/27/60307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>强制弹出广告页面+自动最小化代码</title><link>http://www.blogjava.net/hua/archive/2006/07/24/59789.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 24 Jul 2006 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/07/24/59789.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/59789.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/07/24/59789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/59789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/59789.html</trackback:ping><description><![CDATA[
		<div class="entry-body">
				<div>
						<font face="Courier New">非常恶心的弹出窗口。。似乎没有什么可以拦截。。。</font>
				</div>
				<div>
						<font face="Courier New">
						</font> </div>
				<div>
						<font face="Courier New">这里涉及三个页面：<br />   弹窗页：1.htm  放置弹窗代码的页面<br />   中间页：2.htm  中间过度页面<br />   弹出页：3.htm  被弹出的页面<br /><br /></font>
				</div>
		</div>
		<div class="entry-more" id="more">
				<div>
						<font face="Courier New">在1.htm放入代码如下：主要是通过对话框强制弹出2.htm，大小为0,0</font>
				</div>
				<div>
						<font face="Courier New">
						</font> </div>
				<div>
						<font face="Courier New">   CODE:  <br /></font>
						<blockquote>
								<font face="Courier New">&lt;script language="javascript"&gt;<br />focusid=setTimeout("focus();window.showModelessDialog('2.htm','','scroll:1;status:1;help:1;toolbar=1;resizable:1;dialogWidth:0px;dialogHeight:0px')",3000)<br />&lt;/script&gt; </font>
						</blockquote>
						<br />
						<font face="Courier New"> <br />  在2.htm里放置代码如下：自动关闭对话框页面2.htm，同时弹窗3.htm</font>
				</div>
				<div>
						<font face="Courier New">
						</font> </div>
				<div>
						<font face="Courier New">  CODE:   <br /></font>
						<blockquote>
								<font face="Courier New">&lt;script language="javascript"&gt;<br />&lt;!--<br />function openWindow2(URL,Name,features) { //v2.0<br />window.open(URL,Name,features);}<br />openWindow2('3.htm','pop','resizable,height=600,width=1024,toolbar,menubar,scrollbars,location,left=0,top=0');<br />//--&gt;<br />setTimeout('window.close();', 0);<br />&lt;/script&gt; </font>
						</blockquote>
						<br />
						<font face="Courier New"> <br />  在3.htm里放置代码：弹出后自动最小化</font>
				</div>
				<div>
						<font face="Courier New">
						</font> </div>
				<div>
						<font face="Courier New">  CODE:   <br />在body标签里加入：&lt;body onload="min.Click()"&gt;<br />以下代码加入&lt;body&gt;&lt;/body&gt;区域<br /></font>
						<blockquote>
								<font face="Courier New">&lt;object id="min" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;<br />&lt;param name="Command" value="Minimize"&gt;<br />&lt;/object&gt; &lt;object id="max" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;<br />&lt;param name="Command" value="Maximize"&gt;<br />&lt;/object&gt;</font>
						</blockquote>
				</div>
		</div>
<img src ="http://www.blogjava.net/hua/aggbug/59789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-07-24 13:46 <a href="http://www.blogjava.net/hua/archive/2006/07/24/59789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTML标签详解</title><link>http://www.blogjava.net/hua/archive/2006/06/05/50476.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 05 Jun 2006 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/06/05/50476.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/50476.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/06/05/50476.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/50476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/50476.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">＜html＞<br />＜head＞<br />＜title＞标题＜title＞<br />＜/head＞<br />＜body＞..........文件内容..........<br />＜/body＞<br />＜/html＞</font>
		</p>
		<p>
				<font face="Courier New">1.文件标题<br />＜title＞..........＜/title＞<br />2.文件更新--＜meta＞<br />　【1】10秒后自动更新一次<br />　　＜meta http-equiv="refresh" content=10＞<br />　【2】10秒後自动连结到另一文件<br />　　＜meta http-equiv="refresh" content="10；URL=欲连结文件之URL"＞<br />3.查询用表单--＜isindex&gt;<br />　　　若欲设定查询栏位前的提示文字：<br />　　＜isindex prompt="提示文字"＞<br />4.预设的基准路径--＜base&gt;<br />   ＜base href="放置文件的主机之URL"＞<br /><br />版面<br />1.标题文字 ＜h#＞..........＜/h#＞ #=1~6；h1为最大字，h6为最小字<br />2.字体变化 ＜font＞..........＜/font＞ <br />【1】字体大小 ＜font size=#＞..........＜/font＞ #=1~7；数字愈大字也愈大 <br />【2】指定字型 ＜font face="字型名称"＞..........＜/font＞ <br />【3】文字颜色 ＜font color=#rrggbb＞..........＜/font＞ rr：表红色（red）色码 gg：表绿色（green）色码 bb：表蓝色（blue）色码<br />3.显示小字体 ＜small＞..........＜/small＞ <br />4.显示大字体 ＜big＞..........＜/big＞<br />5.粗体字 ＜b＞..........＜/b＞<br />6.斜体字 ＜i＞..........＜/i＞ <br />7.打字机字体 ＜tt＞..........＜/tt＞<br />8.底线 ＜u＞..........＜/u＞<br />9.删除线 ＜strike＞..........＜/strike＞<br />10.下标字 ＜sub＞..........＜/sub＞<br />11.上标字 ＜sup&gt;..........＜/sup＞<br />12.文字闪烁效果 ＜blink＞..........＜/blink＞<br />13.换行 ＜br＞<br />14.分段 ＜p＞ <br />15.文字的对齐方向 ＜p align="#"＞ #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 P.S.＜p align="#"＞之後的文字都会以所设的对齐方式显示， 直到出现另一个＜palign="#"＞改变其对齐方向，或遇到 ＜hr＞ⅱ＜h#＞标签时会自动设回预设的向左对齐。<br />16.分隔线 ＜hr＞ <br />【1】分隔线的粗细 ＜hr size=点数＞ <br />【2】分隔线的宽度 ＜hr size=点数或百分比＞ <br />【3】分隔线对齐方向 ＜hr align="#"＞ #号可为 left：表向左对齐（预设值） center：表向中对齐 right：表向右对齐 <br />【4】分隔线的颜色 ＜hr color=#rrggbb＞ <br />【5】实心分隔线 ＜hr noshade＞<br />17.向中对齐 ＜center＞..........＜/center＞<br />18.依原始样式显示 ＜pre＞..........＜/pre＞<br />19.＜body＞指令的属性 <br />【1】背景颜色 -- bgcolor ＜body bgcolor=#rrggbb＞ <br />【2】背景图案 -- background ＜body background="图形文件名"＞ <br />【3】设定背景图案不会卷动 -- bgproperties ＜body bgproperties=fixed＞ <br />【4】文件内容文字的颜色 -- text ＜body text=#rrggbb＞ <br />【5】超连结文字颜色 -- link ＜body link=#rrggbb＞ <br />【6】正被选取的超连结文字颜色 -- vlink ＜body vlink=#rrggbb＞ <br />【7】已连结过的超连结文字颜色 -- alink ＜body alink=#rrggbb＞<br />20.注解 ＜!--..........--＞21.特殊字元表示法 <br />符 号 　　语 法  <br />＜  　　　＆ｌｔ  <br />＞  　　　＆ｇｔ  <br />&amp; 　　 　＆ａｍｐ  <br />"  　　　＆ｑｕｏｔ  <br />空白  　　＆ｎｂｓｐ   </font>
		</p>
		<p>
				<font face="Courier New">图片<br />1.插入图片 ＜img src="图形文件名"＞<br />2.设定图框 -- border ＜img src="图形文件名" border=点数＞<br />3.设定图形大小 -- widthⅱheight ＜img src="图形文件名" width=宽度点数 height=高度点数＞<br />4.设定图形上下左右留空 -- vspaceⅱhspace ＜img src="图形文件名" vspace=上下留空点数 hspace=左右留空点数＞<br />5.图形附注 ＜img src="图形文件名" alt="说明文字"＞<br />6.预载图片<br />＜img src="高解析度图形文件名" lowsrc="低解析度图形文件名"＞ P.S.两个图的图形大小最好一致<br />7.影像地图（Image Map） ＜img src="图形文件名" usemap="#图的名称"＞ ＜map name="图的名称"＞<br />       ＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞<br />       ＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞<br />       ＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞<br />       ＜area shape=形状 coords=区域座标列表 href="连结点之URL"＞    ＜/map＞    <br />【1】定义形状 -- shape<br />       shape=rect：矩形         shape=circle：圆形         shape=poly：多边形    <br />【2】定义区域 -- coords<br />a.矩形：必须使用四个数字，前两个数字为左上角座标，后两个数字为右下角座标<br />例：＜area shape=rect coords=100,50,200,75 href="/URL"＞<br />b.圆形：必须使用三个数字，前两个数字为圆心的座标，最后一个数字为半径长度<br />例：＜area shape=circle coords=85,155,30 href="/URL"＞<br />c.任意图形（多边形）：将图形之每一转折点座标依序填入<br />例：＜area shape=poly coords=232,70,285,70,300,90,250,90,200,78 href="/URL"＞<br /><br />表格<br />1.定义表格 ＜table＞..........＜/table＞ <br />【1】设定边框的厚度 -- border<br />＜table border=点数＞ <br />【2】设定格线的宽度 -- cellspacing<br />＜table cellspacing=点数＞ <br />【3】设定资料与格线的距离 -- cellpadding<br />＜table cellpadding=点数＞ <br />【4】调整表格宽度 -- width<br />＜table width=点数或百分比＞ <br />【5】调整表格高度 -- height<br />＜table height=点数或百分比＞ <br />【6】设定表格背景色彩 -- bgcolor<br />＜table bgcolor=#rrggbb＞ <br />【7】设定表格边框色彩 -- bordercolor<br />＜table bordercolor=#rrggbb＞<br /><br />2.显示格线 ＜table border＞<br /><br />3.表格标题<br />＜caption＞..........＜/caption＞ <br />表格标题位置 -- align<br />＜caption align="#"＞ #号可为 top：表标题置于表格上方（预设值）<br />bottom：表标题置于表格下方<br />4.定义列 ＜tr＞<br /><br />5.定义栏位 《1》＜td＞：K左对齐<br /><br />《2》＜th＞：K中对齐ⅱ粗体 <br />【1】水平位置 -- align ＜th align="#"＞<br />#号可为 left：向左对齐<br />center：向中对齐 right：向右对齐<br />【2】垂直位置 -- align ＜th align="#"＞ #号可为<br />top：向上对齐 middle：向中对齐<br />bottom：向下对齐 <br />【3】栏位宽度 -- width<br />＜th width=点数或百分比＞ <br />【4】栏位垂直合并 -- rowspan<br />＜th rowspan=欲合并栏位数＞ <br />【5】栏位横向合并 -- colspan<br />＜th colspan=欲合并栏位数＞<br /><br />清单<br /><br />一、目录式清单 <br />＜dir＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/dir＞ P.S.目录式清单每一个项目不能超过20个字元（即10个中文字）<br /><br />二、选项式清单 ＜menu＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/menu＞<br /><br />三、有序号的清单 ＜ol＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/ol＞ <br />【1】序号形式 -- type ＜ol type=#＞或＜li type=#＞ #号可为 A：表以大写英文字母AⅱBⅱCⅱD...做为项目编号 a：表以小写英文字母aⅱbⅱcⅱd...做为项目编号 I：表以大写罗马数字做为项目编号 i：表以小写罗马数字做为项目编号 1：表以阿拉伯数字做为项目编号（预设值） <br />【2】起始数字 -- start ＜ol start=欲开始计数的序数＞ <br />【3】指定编号 -- value ＜li value=欲指定的序数＞<br /><br />四、无序号的清单 ＜ul＞ ＜li＞项目1 ＜li＞项目2 ＜li＞项目3 ＜/ul＞ <br />【1】项目符号形式 -- type ＜ul type=#＞或＜li type=#＞ #号可为 disc：实心圆点（预设值） circle：空心圆点 square：实心方块 <br />【2】原始清单 -- plain ＜ul plain＞ <br />【3】清单排列方式 -- warp 《1》清单垂直排列 ＜ul warp = vert＞ 《2》清单水平排列 ＜ul warp = horiz＞<br /><br />五、定义式清单 ＜dl＞ ＜dt＞项目1 ＜dd＞项目1说明 ＜dt＞项目2 ＜dd＞项目2说明 ＜dt＞项目3 ＜dd＞项目3说明 ＜/dl＞ <br />紧密排列 -- compact ＜dl compact＞ P.S.如此可使＜dt＞的内容与＜dd＞的内容在同一行，仅 以数格空白相隔而不换行，但若＜dt＞的文字超过一 定的长度后，compact的作用就消失了！<br />表单<br /><br />一、基本架构 ＜form action="处理资料用的CGI程式之URL"或"mailt电子信箱的URL" method="get或post"＞ .......... .......... .......... ＜/form＞ <br /><br />二、输入文件型表单 ＜form action="URL" method="post"＞ ＜input＞ ＜input＞ .......... .......... ＜/form＞ <br />【1】栏位类型 -- type ＜input type=#＞ #号可为 text：文字输入 password：密码 checkbox：多选钮 radio：单选钮 submit：接受按钮 reset：重设按钮 image：图形钮 hidden：隐藏栏位 <br />【2】栏位名称 -- name ＜input name="资料栏名"＞ P.S.若type为submitⅱreset则name不必设定 <br />【3】文件上的预设值 -- value ＜input value="预设之字串"＞ <br />【4】设定栏位的宽度 -- size ＜input size=字元数＞ <br />【5】限制最大输入字串的长度 -- maxlength ＜input maxlength=字元数＞ <br />【6】预设checkbox或radio的初值 -- checked ＜input type=checkbox checked＞ ＜input type=radio checked＞ <br />【7】指定图形的URL -- src ＜input type=image src="图档名"＞ <br />【8】图文对齐 -- align ＜input type=image align="#"＞ #号可为 top：文字对齐图片之顶端 middle：文字对齐图片之中间 buttom：文字对齐图片之底部<br /><br />三、选择式表单 ＜form action="URL" method="post"＞ ＜select＞ ＜option＞ ＜option＞ .......... .......... ＜/select＞ ＜/form＞ <br />A、＜select＞的属性 <br />【1】栏位名称 -- name ＜select name="资料栏位名"＞ <br />【2】设定显示的选项数 -- size ＜select size=个数＞ <br />【3】多重选项 -- multiple ＜select multiple＞ <br />B、＜option＞的属性 <br />【1】定义选项的传回值 -- value ＜option value="传回值"＞ <br />【2】预先选取的选项 -- selected ＜option selected＞<br /><br />四、多列输入文字区表单 ＜form action="URL" method="post"＞ ＜textarea＞ .......... .......... ＜/textarea＞ ＜/form＞ <br />【1】文字区的变数名称 -- name ＜textarea name=变数名称＞ <br />【2】设定文字输入区宽度 -- cols ＜textarea cols=字元数＞ <br />【3】设定文字输入区高度 -- rows ＜textarea rows=列数＞ <br />【4】输入区设定预设字串 ＜textarea＞ 预设文字 ＜/textarea＞ <br />【5】自动换行与否 -- wrap ＜textarea wrap=#＞ #号可为 off：表输入的文字超过栏宽时，不会自动换行（预设值） virtual：表输入的文字在超过栏宽时会自动换行<br />链接<br /><br />一、连结至其他文件 ＜a href="/URL"＞说明文字或图片＜/a＞<br /><br />二、连结至文件内之某一处（外部连结） <br />《1》起点<br />＜a href="档名#名称"＞..........＜/a＞ <br />《2》终点 ＜a name="名称"＞<br /><br />三、frame的超连结 <br />【1粜碌匿榔骼聪允玖嵛募?-- _blank ＜a href="/URL" target=_blank＞<br />【2】显示连结文件於目前的frame -- _self ＜a href="/URL" target=_self＞<br />【3】以上一层的分割视窗显示连结文件 -- _parent ＜a href="/URL" target=_parent＞<br />【4】以全视窗显示连结文件 -- _top ＜a href="/URL" target=_top＞ <br />【5】以特定视窗显示连结文件 --＜a href="/URL" target="特定视窗名称"＞<br />FRAME<br /><br />一、分割视窗指令 ＜frameset＞..........＜/frameset＞ <br />【1】垂直（上下）分割 -- rows<br />＜frameset rows=#＞ #号可为点数：如欲分割为100,200,300三个视窗，则<br />＜frameset rows=100,200,300＞；亦可以*号代表，如＜frameset rows=*,500,*＞<br />百分比：如＜frameset rows=30%,70%＞，各 项总和最好为100%<br />【2】水平（左右）分割 -- cols ＜frameset cols=点数或百分比＞<br /><br />二ⅱ指定视窗内容 -- ＜frame＞<br />＜frameset cols=30%,70%＞    ＜frame＞    ＜frame＞ ＜/frameset＞<br />【1】指定视窗的文件名称 -- src ＜frame src=HTML档名＞ <br />【2】定义视窗的名称 -- name<br />＜frame name=视窗名称＞ <br />【3】设定文件与上下边框的距离 -- marginheight<br />＜frame marginheight=点数＞ <br />【4】设定文件与左右边框的距离 -- marginwidth<br />＜frame marginwidth=点数＞ <br />【5】设定分割视窗卷轴 -- scrolling<br />＜frame scrolling=#＞ #号可为 yes：固定出现卷轴<br />no：不出现卷轴 auto：自动判断文件大小需不需要卷轴（预设值）<br />【6】锁住分割视窗的大小 -- noresize ＜frame noresize＞ </font>
		</p>
<img src ="http://www.blogjava.net/hua/aggbug/50476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-06-05 13:47 <a href="http://www.blogjava.net/hua/archive/2006/06/05/50476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jspSmartUpload上传下载全攻略</title><link>http://www.blogjava.net/hua/archive/2006/05/29/48763.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 29 May 2006 07:49:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/29/48763.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/48763.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/29/48763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/48763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/48763.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、安装篇																				　　jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件，适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点： 1、使用简单。在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载，方便。 2、能全程控制上传。利用jspSmartUpload组件提供的对象及...&nbsp;&nbsp;<a href='http://www.blogjava.net/hua/archive/2006/05/29/48763.html'>阅读全文</a><img src ="http://www.blogjava.net/hua/aggbug/48763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-29 15:49 <a href="http://www.blogjava.net/hua/archive/2006/05/29/48763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>什么是Struts</title><link>http://www.blogjava.net/hua/archive/2006/05/29/48663.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 29 May 2006 00:33:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/29/48663.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/48663.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/29/48663.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/48663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/48663.html</trackback:ping><description><![CDATA[
		<font face="Courier New">1 JSP Framework - Struts介绍 <br />Struts是采用Java Servlet/JavaServer Pages技术，开发Web应用程序的开放源码的framework。 <br /><br />采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 <br /><br />Struts有如下的主要功能： <br /><br />1. 包含一个controller servlet，能将用户的请求发送到相应的Action对象。 <br /><br />2. JSP自由tag库，并且在controller servlet中提供关联支持，帮助开发员创建交互式表单应用。 <br /><br />3. 提供了一系列实用对象：XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 <br /><br />Struts是Jakarta项目的一部分，主页在</font>
		<a href="http://jakarta.apache.org/struts. " target="_blank">
				<font face="Courier New">http://jakarta.apache.org/struts. </font>
		</a>
		<br />
		<br />
		<font face="Courier New">Version 0.5的下载地址：</font>
		<a href="http://jakarta.apache.org/builds/jakarta-struts/release/v0.5 " target="_blank">
				<font face="Courier New">http://jakarta.apache.org/builds/...s/release/v0.5 </font>
		</a>
		<br />
		<br />
		<br />
		<font face="Courier New">1.1 1、什么是MVC模式。 <br />MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式，好象最早是在Smaltalk中出现。MVC包括三类对象。Model是应用对象，View是它在屏幕上的表示，Controller定义用户界面对用户输入的响应方式。 <br /><br />1.2 2、是否所有JSP应用都该采用MVC模式？ <br />不一定所有的JSP应用都该采用MVC模式。但对于大型应用来说，我认为还是该采用MVC模式。不使用MVC模式，用户界面界面设计往往将这些对象混在一起，而MVC则将它们分离以提高灵活性和复用性。 <br /><br />1.3 3、Struts中能做XML吗，与Cocoon相比有何优点？ <br />Struts把主要精力放在JSP上了。Cocoon才是专业级的XML Framework。 <br /><br /><br />2. Struts的安装 <br />2.1 安装Struts需要的软件 <br /><br />Java Development Kit - 你需要download和install 1.2(或之后)版本的JDK。下载地址：</font>
		<a href="http://java.sun.com/j2se " target="_blank">
				<font face="Courier New">http://java.sun.com/j2se </font>
		</a>
		<br />
		<font face="Courier New">Servlet Container - 通常的选择是下载Tomcat(至少是3.1版，推荐使用3.2版)。下载地址：</font>
		<a href="http://jakarta.apache.org/tomcat " target="_blank">
				<font face="Courier New">http://jakarta.apache.org/tomcat </font>
		</a>
		<br />
		<font face="Courier New">Ant Build System - 如果你通过Struts源码发布包安装，你必须下载1.1或之后版本的ant build system。在你通过Struts来开发你自己的Web应用程序是，我也推荐使用ant来build你的应用。下载地址：</font>
		<a href="http://jakarta.apache.org/ant " target="_blank">
				<font face="Courier New">http://jakarta.apache.org/ant </font>
		</a>
		<br />
		<font face="Courier New">Servlet API Classes - 为了编译Structs自己，或应用程序使用Struts，你需要一个包含Servlet和JSP API对象的servlet.jar包。大多数Servlet container（例如Tomcat)已经自带了这个文件。否则，你必需下载：</font>
		<a href="http://jakarta.apache.org/builds/jakarta-servletapi " target="_blank">
				<font face="Courier New">http://jakarta.apache.org/builds/jakarta-servletapi </font>
		</a>
		<br />
		<font face="Courier New">XML Parser - Structs需要一个与Java API for XML Parsing(JAXP)规格兼容的XML处理器。我推荐使用Xerces。下载地址：</font>
		<a href="http://xml.apache.org/xerces-j " target="_blank">
				<font face="Courier New">http://xml.apache.org/xerces-j </font>
		</a>
		<br />
		<font face="Courier New">Xalan XSLT Processor - 如果你通过Structs源码发布版来构造你的Structs系统，你必须下载和安装1_2_D01或之后版本的Xalan XSLT处理器(Xerces中已自带Xalan)。这个处理器用于将基于XML的Structs文档转换为Html文档。 <br /><br /><br />2.2 通过源码构造Structs <br /><br />1.下载Structs的源码发布包。 <br />2.设置ANT_HOME环境变量，指向你的Ant目录。 <br />3.设置JAVA_HOME环境变量，指向你的JDK目录。 <br />4.设置SERVLETAPI_HOME环境变量，指向你的Servlet API目录（如果你的CLASSPATH已经包含了servlet.jar，就不需要指定该目录） <br />5.将Structs的源码发布包进行解包。 <br />6.进入Structs目录，运行以下命令： <br />./build.sh dist <br />该命令将创建Struts的二进制发布包，目录在../dist/structs(相对于你的编译目录）。 <br /><br /><br />2.3 通过Struts的二进制发布包安装Structs <br /><br />1.下载Struts的二进制发布版。 <br />2.将Struts的二进制发布版进行解包。(如果你是通过Struts源码构造Struts，build的结果就已经是已解包的Struts)。解包后的Struts包含以下内容： <br />lib/struts.jar - 这个文件包含了Struts的所有Java对象。你需要把它拷贝到你的Web应用的WEB-INF/lib目录。 <br />lib/structs.tld - 这是一个"tag library descriptor"文件，它描述了Struts库的自由tag。需要将它拷贝到你的Web应用的WEB-INF目录。 <br />webapps/struts-documentation.war - 这是一个"web application archive"文件，包含了所有的Struts文档。你可以将它安装到支持Servlet API 2.2或之后版本的servlet container(推荐使用tomcat)中。 <br />webapps/struts-example.war - 这是一个web应用实例，它广泛地演示了Struts的许多功能。你可以将它安装到兼容Servlet2.2或之后版本以及JSP1.1或之后版本规范的servlet容器中(推荐使用tomcat)。 <br />webapps/struts-test.war - 这个web应用包含了Struts支持的许多tag的测试网页，可以作为使用Struts tag的例子。 <br /><br />可通过以下的步骤在你自己的应用程序中使用Struts： <br />1.将Struts目录的lib/struts.jar拷贝到web应用的WEB-INF/lib目录。2.将Struts目录的lib/struts*.tld拷贝到web应用的WEB-INF目录。 <br />3.修改Web应用目录的WEB-INF/web.xml文件，增加一个&lt;servlet&gt;元素来定义controller servlet，增加一个&lt;servlet-mapping&gt;元素来建立URI请求与servlet的对应关系。可以参照Struts例子中的WEB-INF/web.xml文件来了解详细的语法要求。 <br />4.修改Web应用目录的WEB-INF/web.xml文件，使之包含以下的tag库定义： <br />&lt;taglib&gt; <br />&lt;taglib-uri&gt;/WEB-INF/struts.tld&lt;/taglib-uri&gt; <br />&lt;taglib-location&gt;/WEB-INF/struts.tld&lt;/taglib-location&gt; <br />&lt;/taglib&gt; <br />&lt;taglib&gt; <br />&lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt; <br />&lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt; <br />&lt;/taglib&gt; <br />&lt;taglib&gt; <br />&lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt; <br />&lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt; <br />&lt;/taglib&gt; <br />5.创建一个WEB-INF/action.xml文件来定义你的web应用的action映射关系。可以参照Struts例子中的action.xml文件来了解详细的语法要求。 <br />6.在使用Struts tag库的JSP网页中加入以下tag库定义： <br />&lt;@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %&gt; <br />&lt;@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt; <br />&lt;@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt; <br />7.最后，在编译你的web应用的java程序时，不要忘了在CLASSPATH中包含struts.jar文件哟<br /></font>
<img src ="http://www.blogjava.net/hua/aggbug/48663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-29 08:33 <a href="http://www.blogjava.net/hua/archive/2006/05/29/48663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实例学习 Struts</title><link>http://www.blogjava.net/hua/archive/2006/05/25/48051.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Thu, 25 May 2006 07:19:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/25/48051.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/48051.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/25/48051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/48051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/48051.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">选用纯 JSP 还是纯 Servlet 设计站点都有它的局限性，Struts 就是把它们联系在一起的一种有力工具。采用 Struts 能开发出基于 MVC 模式的应用，关于 MVC 的概念可以参见 GoF 的《设计模式——可复用面向对象软件的基础》。</font>
		</p>
		<p>
				<font face="Courier New">你现在要做的是，下载、安装、配置好以下的工具，版本不同的话操作可能会有些差异，具体的看它们的文档吧：</font>
		</p>
		<div class="itemizedlist">
				<ul>
						<li>
								<font face="Courier New">Tomcat 4.1.24 </font>
						</li>
						<li>
								<font face="Courier New">Apache 2.0.43, w/ mod_jk2 2.0.43 </font>
						</li>
						<li>
								<font face="Courier New">Java 2 SDK Standard Edition 1.4.0 </font>
						</li>
						<li>
								<font face="Courier New">Struts 1.1 </font>
						</li>
						<li>
								<font face="Courier New">Eclipse 2.1.0</font>
						</li>
				</ul>
		</div>
		<p>
				<font face="Courier New">Struts 是用 Java 写的，应此它需要 JDK 1.2 或者更高版本。如果你用的是 JDK 1.4，就像我，XML parser 和 JDBC 2.0 Optional Package Binary 就已经被默认的包含了。</font>
		</p>
		<div class="section">
				<div class="titlepage">
						<div>
								<div>
										<h2 class="title">
												<a id="id4677885">
												</a>
												<font face="Courier New" size="3">新项目</font>
										</h2>
								</div>
						</div>
						<div>
								<font face="Courier New">
								</font>
						</div>
				</div>
				<p>
						<font face="Courier New">在这个例程中我们要开发一个简单的 web 应用，允许用户登录和注销。简单起见，数据被设定为常数，而不是保存在数据库中，毕竟这里要讲的是 Struts，而不是 Java。</font>
				</p>
				<p>
						<font face="Courier New">首先在你的 Tomcat 配置的应用主目录中创建一个目录，比方说 logonApp。在 logonApp 中创建目录 src 和 WEB-INF，在 WEB-INF 中创建目录 classes 和 lib，从 Struts 的分发中拷贝 struts.jar 到 lib 目录，而且也把拷贝 $CATALINA_HOME/common/lib/servlets.jar 到 lib 目录。从 Struts 的分发中拷贝所有的 struts*.tld 到 WEB-INF 目录。</font>
				</p>
				<p>
						<font face="Courier New">现在打开 Eclipse，你会看到四个 view。现在我们要建立一个新的项目，点击 File -&gt; New Project，打开了一个窗口，在第一个窗格中选择 Java，在第二个窗格中选择 Java Project，点击 Next。输入项目名称（为了好记，就也叫 logonApp 吧），去掉 use default 复选框的对勾，浏览到 logonApp 目录，点击 Next。出现一个新的窗口，在 Source tab 上点击 Add Folder，添加 $APP_BASE/src，在 Default output folder 中填入 $APP_BASE/WEB-INF/classes，点击 Finish。点击 Window -&gt; Open Perspective -&gt; Resource，看看 .project 文件是否已经自动包含了 lib 目录中所有的 jar 文件。</font>
				</p>
				<p>
						<font face="Courier New">你的 logonApp/WEB-INF/web.xml 应该如下所示：</font>
				</p>
				<pre class="programlisting">&lt;?xml version="1.0"?&gt;
&lt;!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"&gt;

&lt;web-app&gt;
  &lt;!-- Action Servlet Configuration --&gt;
  &lt;servlet&gt;
    &lt;servlet-name&gt;action&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.apache.struts.action.ActionServlet&lt;/servlet-class&gt;
    &lt;init-param&gt;
      &lt;param-name&gt;config&lt;/param-name&gt;
      &lt;param-value&gt;/WEB-INF/struts-config.xml&lt;/param-value&gt;
    &lt;/init-param&gt;
    &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
  &lt;/servlet&gt;

  &lt;!-- Action Servlet Mapping --&gt;
  &lt;servlet-mapping&gt;
    &lt;servlet-name&gt;action&lt;/servlet-name&gt;
    &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;

  &lt;!-- The Welcome File List --&gt;
  &lt;welcome-file-list&gt;
    &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
  &lt;/welcome-file-list&gt;

  &lt;!-- Struts Tag Library Descriptors --&gt;
  &lt;taglib&gt;
    &lt;taglib-uri&gt;/WEB-INF/struts-bean.tld&lt;/taglib-uri&gt;
    &lt;taglib-location&gt;/WEB-INF/struts-bean.tld&lt;/taglib-location&gt;
  &lt;/taglib&gt;

  &lt;taglib&gt;
    &lt;taglib-uri&gt;/WEB-INF/struts-html.tld&lt;/taglib-uri&gt;
    &lt;taglib-location&gt;/WEB-INF/struts-html.tld&lt;/taglib-location&gt;
  &lt;/taglib&gt;

  &lt;taglib&gt;
    &lt;taglib-uri&gt;/WEB-INF/struts-logic.tld&lt;/taglib-uri&gt;
    &lt;taglib-location&gt;/WEB-INF/struts-logic.tld&lt;/taglib-location&gt;
  &lt;/taglib&gt;
&lt;/web-app&gt;
</pre>
				<p>
						<font face="Courier New">Struts 的配置文件 logonApp/WEB-INF/struts-config.xml 如下：</font>
				</p>
				<pre class="programlisting">&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;
&lt;!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"&gt;

&lt;struts-config&gt;
  &lt;form-beans&gt;
    &lt;form-bean name="logonForm" 
      type="org.apache.struts.validator.DynaValidatorForm"&gt;
      &lt;form-property name="username" type="java.lang.String"/&gt;
      &lt;form-property name="password" type="java.lang.String"/&gt;
    &lt;/form-bean&gt;
  &lt;/form-beans&gt;

  &lt;global-forwards&gt;
    &lt;forward   name="success"              path="/main.jsp"/&gt;
    &lt;forward   name="logoff"               path="/logoff.do"/&gt;
  &lt;/global-forwards&gt;

  &lt;action-mappings&gt;
    &lt;action    path="/logon"
               type="org.monotonous.struts.LogonAction"
               name="logonForm"
               scope="session"
               input="logon"&gt;
    &lt;/action&gt;

    &lt;action    path="/logoff"
               type="org.monotonous.struts.LogoffAction"&gt;
      &lt;forward name="success"              path="/index.jsp"/&gt;
    &lt;/action&gt;
  &lt;/action-mappings&gt;

  &lt;controller&gt;
    &lt;!-- The "input" parameter on "action" elements is the name of a
         local or global "forward" rather than a module-relative path --&gt;
    &lt;set-property property="inputForward" value="true"/&gt;
  &lt;/controller&gt;

  &lt;message-resources parameter="org.monotonous.struts.ApplicationResources"/&gt;
&lt;/struts-config&gt;
</pre>
		</div>
		<div class="section">
				<div class="titlepage">
						<div>
								<div>
										<h2 class="title">
												<a id="id4678058">
												</a>
												<font face="Courier New" size="3">创建 View</font>
										</h2>
								</div>
						</div>
						<div>
								<font face="Courier New">
								</font>
						</div>
				</div>
				<p>
						<font face="Courier New">现在回到 Eclipse，建立一个新页面 index.jsp：</font>
				</p>
				<pre class="programlisting">&lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;

&lt;html:html locale="true"&gt;
&lt;head&gt;
  &lt;title&gt;&lt;bean:message key="index.title" /&gt;&lt;/title&gt;
  &lt;html:base/&gt;
&lt;/head&gt;

&lt;body&gt;
&lt;html:errors/&gt;
&lt;html:form action="/logon"&gt;
  &lt;bean:message key="prompt.username"/&gt;
  &lt;html:text property="username"/&gt;
  &lt;br/&gt;
  &lt;bean:message key="prompt.password"/&gt;
  &lt;html:password property="password"/&gt;
  &lt;br/&gt;
  &lt;html:submit&gt;
    &lt;bean:message key="index.logon"/&gt;
  &lt;/html:submit&gt;
&lt;/html:form&gt;
&lt;/body&gt;
&lt;/html:html&gt;
</pre>
				<p>
						<font face="Courier New">成功登录后的页面 main.jsp：</font>
				</p>
				<pre class="programlisting">&lt;%@ page contentType="text/html;charset=UTF-8" language="java" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;
&lt;%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %&gt;

&lt;html:html&gt;
&lt;head&gt;
  &lt;title&gt;&lt;bean:message key="main.title"/&gt;&lt;/title&gt;
  &lt;html:base/&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;html:link forward="logoff"&gt;
&lt;bean:message key="main.logoff"/&gt;
&lt;/html:link&gt;
&lt;/body&gt;
&lt;/html:html&gt;
</pre>
				<p>
						<font face="Courier New">你可能注意到这两个页面中都使用了方便国际化的特性，这至少需要一个默认的属性文件 ApplicationResources.properties：</font>
				</p>
				<pre class="programlisting">index.title=Struts Homepage
prompt.username=Username
prompt.password=Password
index.logon=Log on
main.title=Struts Main page
main.logoff=Log off
error.password.mismatch=Invalid username and/or password.
</pre>
		</div>
		<div class="section">
				<div class="titlepage">
						<div>
								<div>
										<h2 class="title">
												<a id="id4678097">
												</a>
												<font face="Courier New" size="3">创建 Controller</font>
										</h2>
								</div>
						</div>
						<div>
								<font face="Courier New">
								</font>
						</div>
				</div>
				<p>
						<font face="Courier New">LogonAction.java：</font>
				</p>
				<pre class="programlisting">package org.monotonous.struts;

import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;
import org.apache.commons.beanutils.PropertyUtils;

public final class LogonAction extends Action {
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception {
        Locale locale = getLocale(request);
        MessageResources messages = getResources(request);

        // Validate the request parameters specified by the user
        ActionErrors errors = new ActionErrors();
        String username =
            (String) PropertyUtils.getSimpleProperty(form, "username");
        String password =
            (String) PropertyUtils.getSimpleProperty(form, "password");

        if ((username != "foo") || (password != "bar"))
            errors.add(ActionErrors.GLOBAL_ERROR,
                new ActionError("error.password.mismatch"));

        // Report any errors we have discovered back to the original form
        if (!errors.isEmpty()) {
            saveErrors(request, errors);
            return (mapping.getInputForward());
        }

        // Save our logged-in user in the session
        HttpSession session = request.getSession();
        // Do something with session...

        // Remove the obsolete form bean
        if (mapping.getAttribute() != null) {
            if ("request".equals(mapping.getScope()))
                request.removeAttribute(mapping.getAttribute());
            else
                session.removeAttribute(mapping.getAttribute());
        }

        // Forward control to the specified success URI
        return (mapping.findForward("success"));
    }
}
</pre>
				<p>
						<font face="Courier New">LogoffAction.java：</font>
				</p>
				<pre class="programlisting">package org.monotonous.struts;

import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.MessageResources;

public final class LogoffAction extends Action {
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response)
        throws Exception {

        Locale locale = getLocale(request);
        MessageResources messages = getResources(request);
        HttpSession session = request.getSession();

        session.removeAttribute("userattrib");
        session.invalidate();

        // Forward control to the specified success URI
        return (mapping.findForward("success"));
    }
}
</pre>
				<p>
						<font face="Courier New">到浏览器里面欣赏一下吧，不过还不到开香槟的时候，也许你应该为这个应用考虑一些安全措施，下一次我再讲咯。</font>
				</p>
		</div>
<img src ="http://www.blogjava.net/hua/aggbug/48051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-25 15:19 <a href="http://www.blogjava.net/hua/archive/2006/05/25/48051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>随机码的产生</title><link>http://www.blogjava.net/hua/archive/2006/05/25/48022.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Thu, 25 May 2006 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/25/48022.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/48022.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/25/48022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/48022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/48022.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">随机码的产生</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ page contentType </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> image/jpeg</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java.awt.* </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@ page </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java.awt.image.*,java.util.*,javax.imageio.*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%!</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_166_369_Open_Image" onclick="this.style.display='none'; Codehighlighter1_166_369_Open_Text.style.display='none'; Codehighlighter1_166_369_Closed_Image.style.display='inline'; Codehighlighter1_166_369_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_166_369_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_166_369_Closed_Text.style.display='none'; Codehighlighter1_166_369_Open_Image.style.display='inline'; Codehighlighter1_166_369_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />Color getRandColor(</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> fc,</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> bc)</span>
				<span id="Codehighlighter1_166_369_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_166_369_Open_Text">
						<span style="COLOR: #000000">{</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">给定范围获得随机颜色</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">Random random </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> Random();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(fc</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">255</span>
						<span style="COLOR: #000000">) fc</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">255</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(bc</span>
						<span style="COLOR: #000000">&gt;</span>
						<span style="COLOR: #000000">255</span>
						<span style="COLOR: #000000">) bc</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">255</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> r</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">fc</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(bc</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">fc);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> g</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">fc</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(bc</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">fc);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> b</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">fc</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(bc</span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">fc);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> Color(r,g,b);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">设置页面不缓存</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">response.setHeader(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Pragma</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">No-cache</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />response.setHeader(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Cache-Control</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">no-cache</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />response.setDateHeader(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Expires</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 在内存中创建图象</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> width</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">60</span>
				<span style="COLOR: #000000">, height</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">20</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />BufferedImage image </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 获取图形上下文</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">Graphics g </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> image.getGraphics();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">生成随机类</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">Random random </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Random();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 设定背景色</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">g.setColor(getRandColor(</span>
				<span style="COLOR: #000000">200</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">250</span>
				<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />g.fillRect(</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">, width, height);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">设定字体</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">g.setFont(</span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Font(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">Times New Roman</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,Font.PLAIN,</span>
				<span style="COLOR: #000000">18</span>
				<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">画边框<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">g.setColor(new Color());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">g.drawRect(0,0,width-1,height-1);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 随机产生155条干扰线，使图象中的认证码不易被其它程序探测到</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">g.setColor(getRandColor(</span>
				<span style="COLOR: #000000">160</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">200</span>
				<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000"> (</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">155</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_1025_1175_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1025_1175_Open_Text.style.display='none'; Codehighlighter1_1025_1175_Closed_Image.style.display='inline'; Codehighlighter1_1025_1175_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1025_1175_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1025_1175_Closed_Text.style.display='none'; Codehighlighter1_1025_1175_Open_Image.style.display='inline'; Codehighlighter1_1025_1175_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_1025_1175_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_1025_1175_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> x </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> random.nextInt(width);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> y </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> random.nextInt(height);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> xl </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> random.nextInt(</span>
						<span style="COLOR: #000000">12</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #0000ff">int</span>
						<span style="COLOR: #000000"> yl </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> random.nextInt(</span>
						<span style="COLOR: #000000">12</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />g.drawLine(x,y,x</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">xl,y</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">yl);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 取随机产生的认证码(4位数字)</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">String sRand</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_1234_1468_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1234_1468_Open_Text.style.display='none'; Codehighlighter1_1234_1468_Closed_Image.style.display='inline'; Codehighlighter1_1234_1468_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_1234_1468_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1234_1468_Closed_Text.style.display='none'; Codehighlighter1_1234_1468_Open_Image.style.display='inline'; Codehighlighter1_1234_1468_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000"> (</span>
				<span style="COLOR: #0000ff">int</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">4</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">)</span>
				<span id="Codehighlighter1_1234_1468_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_1234_1468_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />String rand</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">String.valueOf(random.nextInt(</span>
						<span style="COLOR: #000000">10</span>
						<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />sRand</span>
						<span style="COLOR: #000000">+=</span>
						<span style="COLOR: #000000">rand;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 将认证码显示到图象中</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">g.setColor(</span>
						<span style="COLOR: #0000ff">new</span>
						<span style="COLOR: #000000"> Color(</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(</span>
						<span style="COLOR: #000000">110</span>
						<span style="COLOR: #000000">),</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(</span>
						<span style="COLOR: #000000">110</span>
						<span style="COLOR: #000000">),</span>
						<span style="COLOR: #000000">20</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">random.nextInt(</span>
						<span style="COLOR: #000000">110</span>
						<span style="COLOR: #000000">)));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">调用函数出来的颜色相同，可能是因为种子太接近，所以只能直接生成</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">g.drawString(rand,</span>
						<span style="COLOR: #000000">13</span>
						<span style="COLOR: #000000">*</span>
						<span style="COLOR: #000000">i</span>
						<span style="COLOR: #000000">+</span>
						<span style="COLOR: #000000">6</span>
						<span style="COLOR: #000000">,</span>
						<span style="COLOR: #000000">16</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 将认证码存入SESSION</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">session.setAttribute(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">rand</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,sRand);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 图象生效</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">g.dispose();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 输出图象到页面</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">ImageIO.write(image, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">JPEG</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, response.getOutputStream());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
<img src ="http://www.blogjava.net/hua/aggbug/48022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-25 14:18 <a href="http://www.blogjava.net/hua/archive/2006/05/25/48022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet容器工作原理 </title><link>http://www.blogjava.net/hua/archive/2006/05/24/47849.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Wed, 24 May 2006 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/24/47849.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/47849.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/24/47849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/47849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/47849.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed" width="100%">
				<tbody>
						<tr>
								<td class="huei12u">
										<p>
												<font face="Courier New">本文介绍servlet 容器的基本原理。现有两个Servlet容器，第一个很简单，第二个则是根据第一个写出。为了使第一个容器尽量简单，所以没有做得很完整。复杂一些的 servlet 容器 （包括 </font>
												<a class="bluekey" href="http://www.yesky.com/key/2632/137632.html" target="_blank">
														<font face="Courier New" color="#002c99">TOMCAT</font>
												</a>
												<font face="Courier New"> 4 和 5） 可以参考其他资料。</font>
										</p>
										<p>
												<font face="Courier New">两个servlet容器都处理简单的servlet及staticResource。您可以使用 webroot/ 目录下的 PrimitiveServlet 来测试它。复杂一些的 servlet会超出这些容器的容量，创建复杂servlet容器不是本文的内容，所以在这里就不详细介绍了。 <br /><br />　　两个应用程序的类都封装在ex02.pyrmont 包下。在理解应用程序如何</font>
												<a class="bluekey" href="http://www.yesky.com/key/2956/157956.html" target="_blank">
														<font face="Courier New" color="#002c99">运作</font>
												</a>
												<font face="Courier New">之前，您必须熟悉 javax.servlet.Servlet 接口。首先就来介绍这个接口。随后，就介绍 servlet 容器服务servlet 的具体内容。<br /><br />　　<b>javax.servlet.Servlet 接口</b><br /><br />　　servlet编程，需要引用以下两个类和接口：javax.servlet 和 javax.servlet.http，在这些类和接口中，javax.servlet.Servlet接口尤为重要。所有的 servlet 必须实现这个接口或继承已实现这个接口的类。<br /><br />　　Servlet 接口有五个方法，如下：<br /><br /></font>
										</p>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">　public void init(ServletConfig config) throws ServletException<br />　public void </font>
																		<a class="bluekey" href="http://www.yesky.com/key/4581/159581.html" target="_blank">
																				<font face="Courier New" color="#002c99">service</font>
																		</a>
																		<font face="Courier New">(ServletRequest request, ServletResponse response) throws ServletException, </font>
																		<a class="bluekey" href="http://www.yesky.com/key/82/155082.html" target="_blank">
																				<font face="Courier New" color="#002c99">java</font>
																		</a>
																		<font face="Courier New">.io.IOException<br />　public void destroy()<br />　public ServletConfig getServletConfig()<br />　public java.lang.String getServletInfo() </font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　init、service和 destroy 方法是 Servlet 生命周期的方法。当 Servlet 类实例化后，容器加载 init，以通知 servlet 它已进入服务行列。init 方法必须被加载，Servelt 才能接收和请求。如果要载入数据库驱动程序、初始化一些值等等，程序员可以重写这个方法。在其他情况下，这个方法一般为空。<br /><br />　　service 方法由 Servlet 容器调用，以允许 Servlet 响应一个请求。Servlet 容器传递 javax.servlet.ServletRequest 对象和 javax.servlet.ServletResponse 对象。ServletRequest 对象包含客户端 HTTP 请求信息，ServletResponse 则封装servlet 响应。通过这两个对象，您可以写一些需要 servlet怎样服务和客户怎样请求的代码。 <br /><br />　　从service中删除Servlet实例之前，容器调用destroy方法。在servlet容器关闭或servlet 容器需要更多的内存时，就调用它。这个方法只有在servlet 的service 方法内的所有线程都退出的时候，或在超时的时候才会被调用。在 servlet 容器调用 destroy方法之后，它将不再调用 servlet的 service方法。<br /><br />　　destroy 方法给了servlet机会，来清除所有空闲资源（比如：内存，文件处理和线程），以确保在内存的持续状态和 servlet的当前状态是同步的。Listing 2.1 包含了PrimitiveServlet 的代码，此servlet非常简单，可以用它来测试本文的servlet容器应用程序。<br /><br />　　PrimitiveServlet 类实现了javax.servlet.Servlet 并提供了五个servlet方法的接口。它做的事情也很简单：每次调用 init、service 或 destroy方法的时候，servlet就向控制口写入方法名。service 方法也从ServletResponsec对象中获得java.io.PrintWriter 对象，并发送字符串到浏览器。<br /><br />　　Listing 2.1.PrimitiveServlet.java<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">import javax.servlet.*;<br />import java.io.IOException;<br />import java.io.PrintWriter;<br /><br />public class PrimitiveServlet implements Servlet {<br />public void init(ServletConfig config) throws ServletException {<br />System.out.println("init");<br />}<br /><br />public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {<br />System.out.println("from service");<br />PrintWriter out = response.getWriter();<br />out.println("Hello.Roses are </font>
																		<a class="bluekey" href="http://www.yesky.com/key/2568/142568.html" target="_blank">
																				<font face="Courier New" color="#002c99">red</font>
																		</a>
																		<font face="Courier New">.");<br />out.print("Violets are blue.");<br />}<br /><br />public void destroy() {<br />System.out.println("destroy");<br />}<br /><br />public String getServletInfo() {<br />return null;<br />}<br /><br />public ServletConfig getServletConfig() {<br />return null;<br />}<br />}</font>
																</td>
														</tr>
												</tbody>
										</table>
										<font face="Courier New">
												<strong>Application 1<br /><br /></strong>　　现在，我们从 servlet容器的角度来看看 servlet 编程。一个功能健全的 servlet容器对于每个 servlet 的 HTTP请求会完成以下事情：<br /><br />　　　1、当 servlet 第一次被调用的时候，加载了 servlet类并调用它的init方法（仅调用一次） <br /><br />　　　2、响应每次请求的时候 ，构建一个javax.servlet.ServletRequest 和 javax.servlet.ServletResponse实例。<br />　<br />　　　3 、激活 servlet 的 service 方法，传递 ServletRequest 和 ServletResponse 对象。 <br /><br />　　　4、当servlet 类关闭的时候，调用 servlet 的destroy 方法，并卸载 servlet 类。 <br /><br />　　发生在 servlet 容器内部的事就复杂多了。只是这个简单的 servlet 容器的功能不很健全，所以，这它只能运行非常简单的servelt ，并不能调用 servlet 的 init 和destroy 方法。然而，它也执行了以下动作：<br /><br />　　　1、等待 HTTP 请求。 <br /><br />　　　2、构建 ServletRequest 和 ServletResponse 对象 <br /><br />　　　3、如果请求的是一个staticResource，就会激活StaticResourceProcessor实例的 process方法，传递ServletRequest 和 ServletResponse 对象。 <br /><br />　　　4、如果请求的是一个servlet ,载入该类，并激活它的service 方法，传递ServletRequest 和ServletResponse 对象。注意：在这个servlet 容器，每当 servlet被请求的时候该类就被载入。 <br /><br />　　在第一个应用程序中，servlet容器由六个类组成 。<br /><br />　　　HttpServer1 <br />　　　Request <br />　　　Response <br />　　　StaticResourceProcessor <br />　　　ServletProcessor1 <br />　　　Constants <br /><br />　　这个程序的进入口（静态 main 方法）是HttpServer 类。这个方法创建了HttpServer实例，并调用它的await方法等待 HTTP 请示，然后创建一个 request 对象和 response对象，根据请求是否是staticResource还是 servlet 来分派它们到 StaticResourceProcessor实例或ServletProcessor实例。<br /><br />　　Constants 类包含 static find WEB_ROOT，它是从其他类引用的。 WEB_ROOT 指明 PrimitiveServlet 位置 和容器服务的staticResource。<br /><br />　　HttpServer1 实例等待 HTTP 请求，直到它收到一个 shutdown 命令。发布 shutdown命令和前文是一样的。<br /><br />　　<b>HttpServer1 类</b><br /><br />　　此应用程序内的 HttpServer1类 与前文简单的 WEB 服务器应用程序中的HttpServer 十分相似。但是，此应用程序内的 HttpServer1 能服务静态资源和 servlet。如果要请求一个静态资源，请输入以下 URL：<br />http://machineName:port/staticResource 。如果要请求一个 servlet，请输入以下 URL：<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td height="20">
																		<font face="Courier New">http://machineName:port/servlet/servletClass</font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　如果您想在本地浏览器请求一个 PrimitiveServle servlet ，请输入以下 URL：<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">http://localhost:8080/servlet/PrimitiveServlet</font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　下面Listing 2.2类的await方法，是等待一个HTTP请求，直到一个发布shutdown命令。与前文的await 方法相似。<br /><br />　　Listing 2.2. HttpServer1 类的 await 方法<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">public void await() {<br />ServerSocket serverSocket = null;<br />int port = 8080;<br /><br />try {<br />serverSocket = new ServerSocket(port, 1,<br />InetAddress.getByName("127.0.0.1"));<br />}<br />catch (IOException e) {<br />e.printStackTrace();<br />System.exit(1);<br />}<br /><br />// 循环，等待一个请求<br />while (!shutdown) {<br />Socket socket = null;<br />InputStream input = null;<br />OutputStream output = null;<br /><br />try {<br />socket = serverSocket.accept();<br />input = socket.getInputStream();<br />output = socket.getOutputStream();<br /><br />// 创建请求对象并解析<br />Request request = new Request(input);<br />request.parse();<br /><br />// 创建回应对象<br />Response response = new Response(output);<br />response.setRequest(request);<br /><br />//检测是否是 servlet 或静态资源的请求<br />//servlet 请求以 "/servlet/" 开始 <br />if (request.getUri().startsWith("/servlet/")) {<br />ServletProcessor1 processor = new ServletProcessor1();<br />processor.process(request, response);<br />}<br />else {<br />StaticResourceProcessor processor =<br />new StaticResourceProcessor();<br />processor.process(request, response);<br />}<br /><br />// 关闭socket<br />socket.close();<br /><br />//检测是否前面的 URI 是一个 shutdown 命令<br />shutdown = request.getUri().equals(SHUTDOWN_COMMAND);<br />}<br />catch (Exception e) {<br />e.printStackTrace();<br />System.exit(1);<br />}<br />}<br />} </font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　此文 await 方法和前文的不同点就是，此文的 await 方法中的请求调度到StaticResourceProcessor 或 ervletProcessor 。<br /><br />　　如果 URI中包含 "/servlet/."，请求推进到后面，否则，请求传递到 StaticResourceProcessor 实例。 <br /></font>
										<font face="Courier New">
												<strong>Request 类<br /><br /></strong>　　Servlet service 方法接受 servlet 容器的 javax.servlet.ServletRequest 和javax.servlet.ServletResponse 实例。因此，容器必须构建 ServletRequest和ServletResponse对象，然后将其传递到正在被服务的service 方法。 <br /><br />　　ex02.pyrmont.Request 类代表一个请求对象传递到 service 方法。同样地，它必须实现 javax.servlet.ServletRequest 接口。这个类必须提供接口内所有方法的实现。这里尽量简化它并只实现几个方法。要编译 Request 类的话，必须提供这些方法的空实现。再来看看 request 类，内部所有需要返回一个对象实例都返回null，如下：<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">public Object getAttribute(String attribute) {<br />return null;<br />}<br /><br />public Enumeration getAttributeNames() {<br />return null;<br />}<br /><br />public String getRealPath(String path) {<br />return null;<br />}</font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　另外，request 类仍需有前文有介绍的 parse 和getUri 方法。<br /><br />　　<b>Response 类</b><br /><br />　　response 类实现 javax.servlet.ServletResponse，同样，该类也必须提供接口内所有方法的实现。类似于 Request 类，除 getWriter 方法外，其他方法的实现都为空。<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">public PrintWriter getWriter() {<br />// autoflush is true, println() will flush,<br />// but print() will not.<br />writer = new PrintWriter(output, true);<br />return writer;<br /><br />}</font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　PrintWriter 类构建器的第二个参数是一个代表是否启用 autoflush 布尔值 ，如果为真，所有调用println 方法都 flush 输出。而 print 调用则不 flush 输出。因此，如果在servelt 的service 方法的最后一行调用 print方法，则从浏览器上看不到此输出 。这个不完整性在后面的应用程序内会有调整。<br />response 类也包含有前文中介绍的 sendStaticResource方法。<br /><br />　　<b>StaticResourceProcessor 类</b><br /><br />　　StaticResourceProcessor 类用于服务静态资源的请求。它唯一的方法是 process。<br /><br />　　Listing 2.3.StaticResourceProcessor 类的 process方法。<br /><br /></font>
										<table width="100%" bgcolor="#ffffff">
												<tbody>
														<tr>
																<td>
																		<font face="Courier New">public void process(Request request, Response response) {<br />try {<br />response.sendStaticResource();<br />}<br />catch (IOException e) {<br />e.printStackTrace();<br />}<br />}</font>
																</td>
														</tr>
												</tbody>
										</table>
										<br />
										<font face="Courier New">　　process 方法接受两个参数：Request 和 Response 实例。它仅仅是调用 response 类的sendStaticResource 方法。 </font>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/hua/aggbug/47849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-24 17:08 <a href="http://www.blogjava.net/hua/archive/2006/05/24/47849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Base-Jsp-14-servlet介绍 </title><link>http://www.blogjava.net/hua/archive/2006/05/24/47842.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Wed, 24 May 2006 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/24/47842.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/47842.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/24/47842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/47842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/47842.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ø																								将						servlet						和						JSP						结合使用，可以把应用程序的逻辑和外观呈现部分清楚的分开。																										Ø												 servlet API						由两个程序包组成						...&nbsp;&nbsp;<a href='http://www.blogjava.net/hua/archive/2006/05/24/47842.html'>阅读全文</a><img src ="http://www.blogjava.net/hua/aggbug/47842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-24 16:48 <a href="http://www.blogjava.net/hua/archive/2006/05/24/47842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Servlet 是什么？</title><link>http://www.blogjava.net/hua/archive/2006/05/24/47840.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Wed, 24 May 2006 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/24/47840.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/47840.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/24/47840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/47840.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/47840.html</trackback:ping><description><![CDATA[
		<font face="Courier New">Servlet是使用Java Servlet 应用程序设计接口（API）及相关类和方法的 Java 程序。除了 Java Servlet API，Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行，而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口，这使得Servlets具有跨服务器平台的特性。 <br />Servlet 通过创建一个框架来扩展服务器的能力，以提供在 Web 上进行请求和响应服务。当客户机发送请求至服务器时，服务器可以将请求信息发送给 Servlet，并让 Servlet 建立起服务器返回给客户机的响应。 当启动 Web 服务器或客户机第一次请求服务时，可以自动装入 Servlet。装入后， Servlet 继续运行直到其它客户机发出请求。Servlet 的功能涉及范围很广。例如，Servlet 可完成如下功能： <br /></font>
		<p>
				<font face="Courier New">(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。 </font>
		</p>
		<p>
				<font face="Courier New">(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面（HTML 片段）。 </font>
		</p>
		<p>
				<font face="Courier New">(3) 与其它服务器资源（包括数据库和基于 Java 的应用程序）进行通信。 </font>
		</p>
		<p>
				<font face="Courier New">(4) 用多个客户机处理连接，接收多个客户机的输入，并将结果广播到多个客户机上。例如，Servlet 可 <br />以是多参与者的游戏服务器。 </font>
		</p>
		<p>
				<font face="Courier New">(5) 当允许在单连接方式下传送数据的情况下，在浏览器上打开服务器至applet的新连接，并将该连 <br />接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下，applet也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准（如 IIOP）进行通信。 </font>
		</p>
		<p>
				<font face="Courier New">(6) 对特殊的处理采用 MIME 类型过滤数据，例如图像转换和服务器端包括（SSI）。 </font>
		</p>
		<p>
				<font face="Courier New">(7) 将定制的处理提供给所有服务器的标准例行程序。例如，Servlet 可以修改如何认证用户。 </font>
		</p>
		<p>
				<font face="Courier New">2．Servlet 的生命周期: </font>
		</p>
		<p>
				<font face="Courier New">Servlet 的生命周期始于将它装入 Web 服务器的内存时，并在终止或重新装入 Servlet 时结束。 </font>
		</p>
		<p>
				<font face="Courier New">(1) 初始化 <br />在下列时刻装入 Servlet： <br />=如果已配置自动装入选项，则在启动服务器时自动装入 <br />=在服务器启动后，客户机首次向 Servlet 发出请求时 <br />=重新装入 Servlet 时 <br />装入 Servlet 后，服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段，Servlet 初始化参数被传递给 Servlet 配置对象。 </font>
		</p>
		<p>
				<font face="Courier New">(2) 请求处理 <br />对于到达服务器的客户机请求，服务器创建特定于请求的一个"请求"对象和一个"响应"对象。服务器调用 Servlet 的 service() 方法，该方法用于传递"请求"和"响应"对象。service() 方法从"请求"对象获得请求信息、处理该请求并用"响应"对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求，例如 doGet()、doPost() 或其它的方法。 </font>
		</p>
		<p>
				<font face="Courier New">(3) 终止 <br />当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时，服务器会调用 Servlet 的 destroy() 方法。</font>
		</p>
<img src ="http://www.blogjava.net/hua/aggbug/47840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-24 16:37 <a href="http://www.blogjava.net/hua/archive/2006/05/24/47840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts环境配置手册</title><link>http://www.blogjava.net/hua/archive/2006/05/23/47661.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 23 May 2006 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/23/47661.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/47661.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/23/47661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/47661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/47661.html</trackback:ping><description><![CDATA[
		<span id="post1" style="FONT-SIZE: 12px; COLOR: #000000">
				<font face="Courier New" size="4">Struts环境配置手册<br /><br />1.Eclipse<br /> 下载网址：  </font>
				<a href="http://www.eclipse.org/" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://www.eclipse.org/</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">2.tomcat<br /> 下载网址：  </font>
				<a href="http://jakarta.apache.org/site/binindex.cgi" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://jakarta.apache.org/site/binindex.cgi</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">3.struts<br /> 下载网址：  </font>
				<a href="http://jakarta.apache.org/site/binindex.cgi" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://jakarta.apache.org/site/binindex.cgi</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">4.tomcat for Eclipse插件<br /> 下载网址：  </font>
				<a href="http://www.sysdeo.com/eclipse/tomcatPlugin.html" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://www.sysdeo.com/eclipse/tomcatPlugin.html</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">5.easy struts插件<br /> 下载网址：  </font>
				<a href="http://sourceforge.net/projects/easystruts" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://sourceforge.net/projects/easystruts</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">6.EJB开发工具lomboz(不是必需的)  <br /> 下载网址：  </font>
				<a href="http://www.objectlearn.com/" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://www.objectlearn.com/</font>
				</a>
				<br />
				<br />
				<font face="Courier New" size="4">把上述4中的com.sysdeo.eclipse.tomcat_2.2.1和上述5中的com.cross.easystruts.eclipse_0.6.4分别COPY到<br />eclipse\plugins\,然后进行以下设置<br /><br />1.Tomcat的初始化设置:启动Eclipse，通过菜单Windows-&gt;Preferences打开设置窗口<br /> 选择Tomcat并做配置<br />1.Easy Struts的初始化设置：启动Eclipse，通过菜单Windows-&gt;Preferences打开设置窗口<br /> 选择struts 1.1并在struts 1.1所需的库文件中找到并添加struts.jar文件<br />3.在struts 1.1所需的类型库描述文件中建议至少加入前面提到的三个描述文件分别是：<br /> struts_html.tld、struts_bean.tld、struts_logic.tld，这三个文件会在创建struts应用项目时自动拷贝到项目的WEB-INF目录下。<br />4.新建一个Tomcat项目,然后右击project-&gt;Properties-&gt;Libraries,把struts 1.1中的包全部加入<br />5.新建Add Easy Struts Support<br />6.把struts 1.1中的包全部COPY到project-&gt;WEB-INF\LIB\<br /><br />用JAVA连接SQL Server 2000取得数据<br />1.下载JDBC FOR SQLSERVER 的驱动：<br /></font>
				<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4f8f2f01-1ed7-4c4d-8f7b-3d47969e66ae&amp;DisplayLang=en#filelist" target="_blank">
						<font face="Courier New" color="#000000" size="4">http://www.microsoft.com/downloads/details.aspx?FamilyID=4f8f2f01-1ed7-4c4d-8f7b-3d47969e66ae&amp;DisplayLang=en#filelist</font>
				</a>
				<br />
				<font face="Courier New" size="4">点击setup.exe下载驱动<br />2.下载后开始安装，就用默认设置安装,会被安装到：<br />  C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC<br />3.把C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib<br /> 下面的mssqlserver.jar,msbase.jar,msutil.jar三个文件拷贝到你的<br />  JDK主目录\jre\lib\ext下面，现在JDBC驱动就算配置好了<br />4.编译运行测试程序：<br />       String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";<br />       String connURL = "jdbc:microsoft:sqlserver://BLUESKY:1433;<br />                                       User=sa;Password=sa;DatabaseName=sitedb";<br />       try{<br />       Class.forName(driverName);<br />       Connection conn = DriverManager.getConnection(connURL);<br />       Statement stmt = conn.createStatement();<br />       StringBuffer strsql = new StringBuffer();<br />       strsql.append("select * from USERTABLE where username ='" + username + "'");<br />       ResultSet rs = stmt.executeQuery(strsql.toString());<br />       if(!rs.next() ||!password.equals(NulltoString(rs.getString("password")).trim())){<br />           DBmsg = "对不起，您所输入的用户不存在或用户密码不正确";<br />       }else{<br />           username = NulltoString(rs.getString("username"));<br />           selectright = NulltoString(rs.getString("selectright"));<br />           deleteright = NulltoString(rs.getString("deleteright"));<br />           updateright = NulltoString(rs.getString("updateright"));<br />       }<br /><br />       }catch (ClassNotFoundException ex){<br />            ex.printStackTrace();<br />       }catch (SQLException ex){<br />            ex.printStackTrace();<br />       }<br /><br />struts!!go!!<br /></font>
		</span>
<img src ="http://www.blogjava.net/hua/aggbug/47661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-23 15:55 <a href="http://www.blogjava.net/hua/archive/2006/05/23/47661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新手入门经典：Jsp环境配置</title><link>http://www.blogjava.net/hua/archive/2006/05/23/47656.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 23 May 2006 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/23/47656.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/47656.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/23/47656.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/47656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/47656.html</trackback:ping><description><![CDATA[
		<font face="Courier New">第一部分 JAVA环境安装<br /><br />1.目前J2SDK的最新版本是1.4.2_01，下载地址：http://java.sun.com/j2se/1.4.2/download.html <br />Download NetBeans IDE v 3.5.1 with J2SE v 1.4.2 COBUNDLE <br />采用包含了J2SE v 1.4.2的NetBeans IDE v 3.5.1<br /></font>
		<a href="http://www.cnbruce.com/images/java/0.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/0.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">2. 安装！我的每一步：<br /></font>
		<a href="http://www.cnbruce.com/images/java/1.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/1.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/2.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/2.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">3. 目录注意改下。“安装路径不宜有空格”！因为有时很难区分“Program Files”是代表一个文件夹还是代表“Program”和“Files”两个东西<br /></font>
		<a href="http://www.cnbruce.com/images/java/3.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/3.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/4.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/4.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/5.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/5.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/6.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/6.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/7.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/7.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/8.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/8.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/9.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/9.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/java/10.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/10.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">4. 配置环境变量<br /></font>
		<a href="http://www.cnbruce.com/images/java/11.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/11.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">5. 新建系统变量<br /></font>
		<a href="http://www.cnbruce.com/images/java/12.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/12.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">6. 建第一个系统变量：JAVA_HOME 值：C:\j2sdk_nb\j2sdk1.4.2<br /></font>
		<a href="http://www.cnbruce.com/images/java/13.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/13.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">7. 建第二个系统变量：CLASSPATH 值：.;%JAVA_HOME%\lib<br /></font>
		<a href="http://www.cnbruce.com/images/java/14.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/14.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">8. 注意！是修改，不是新建。<br />系统变量：PATH 的新值是在原有值前加上%JAVA_HOME%\&#x8;in;<br /></font>
		<a href="http://www.cnbruce.com/images/java/15.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/15.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">9. 测试j2sdk的安装与环境变量设置是否正确<br /></font>
		<a href="http://www.cnbruce.com/images/java/16.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/java/16.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">所以显示完全和新建的吻合。OK！<br />接着就可以用一个.java来编译为class来执行了。 <br /><br /><br />第二部分 TOMCATv5.0.16安装<br /><br />1，下载最新的TOMCATv5.0.16<br />http://www.apache.org/dist/jakarta/tomcat-5/v5.0.16/bin/<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/0.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/0.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">2. 安装TOMCATv5.0.16<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/1.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/1.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/tomcat/2.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/2.gif" border="0" />
				</font>
		</a>
		<br />
		<font face="Courier New">选择Custom<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/3.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/3.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">3. 路径自己设定一下<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/4.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/4.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/tomcat/5.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/5.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">4. 该处的JVM是自动查找的，如果您出现“No Java Virtual machine Found” 也就是找不到Java虚拟机。<br />说明您的系统变量还没有设定，有关系统变量的设定在<br />http://www.cnbruce.com/blog/showlog.asp?cat_id=26&amp;log_id=295<br />“JAVA环境安装”已做解释<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/6.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/6.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/tomcat/7.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/7.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/tomcat/8.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/8.gif" border="0" />
				</font>
		</a>
		<br />
		<a href="http://www.cnbruce.com/images/tomcat/9.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/9.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">5. 运行tomcat目录里binstartup.bat。启动tomcat.<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/10.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/10.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">6. 假如有个dos窗口停留着没关闭，并有一些运行成功tomcat和初始化信息，证明tomcat运行成功。 <br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/11.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/11.gif" border="0" />
				</font>
		</a>
		<br />
		<br />
		<font face="Courier New">7. 在浏览器地址栏输入 http://localhost:8080<br />可爱的大猫出现，至此，JSP的运行环境设定完毕！<br /></font>
		<a href="http://www.cnbruce.com/images/tomcat/12.gif" target="_blank">
				<font face="Courier New">
						<img title="open in new window" alt="" src="http://www.cnbruce.com/images/tomcat/12.gif" border="0" />
				</font>
		</a>
<img src ="http://www.blogjava.net/hua/aggbug/47656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-23 15:40 <a href="http://www.blogjava.net/hua/archive/2006/05/23/47656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片问题</title><link>http://www.blogjava.net/hua/archive/2006/05/19/46970.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Fri, 19 May 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/19/46970.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/46970.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/19/46970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/46970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/46970.html</trackback:ping><description><![CDATA[
		<font face="Verdana">在rh8   linux   下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片，XServer已启动。出现如下问题   <br />  错误提示如下     <br />  java.lang.InternalError:   Can't   connect   to   X11   window   server   using   ':0.0'   as   the   value   of   the   DISPLAY   variable.     <br />  at   sun.awt.X11GraphicsEnvironment.initDisplay(Name）   <br />  java.lang.InternalError:   Can't   connect   to   X11   window   server   using   ':0.0'   as   the   value   of   the   DISPLAY   variable.     <br />  at   sun.awt.X11GraphicsEnvironment.initDisplay(Native   Method)     <br />  at   sun.awt.X11GraphicsEnvironment.(X11GraphicsEnvironment.java:59)     <br />  at   java.lang.Class.forName0(Native   Method)     <br />  at   java.lang.Class.forName(Class.java:120)     <br />  at   java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:58)     <br />        在win2000下代码完全正常。<br /><br />  服务器在字符环境下java无法创建图片的解决办法   <br />    <br />  解决方案：将pja.jar   ，pjatools.jar拷贝到weblogic的lib目录下，在startWebLogic.sh中将这两个文件加入到CLASSPATH中，然后将以下文字加入到$JAVACMD中，其中   <br />  /usr/java/jdk1.3.1_06       是指java的安装目录   <br />  /home/weblogic/wlserver6.1/lib       是指   pja.jar   ，pjatools.jar的存放目录   <br />    <br />  -Xbootclasspath/a:/usr/java/jdk1.3.1_06/lib/rt.jar:/home/weblogic/wlserver6.1/lib/pja.jar   -Djava.awt.toolkit=com.eteks.awt.PJAToolkit   -Djava.awt.graphicsenv=com.eteks.java2d.PJAGraphicsEnvironment   -Djava.awt.fonts=/usr/java/jdk1.3.1_06/jre/lib/fonts     <br />    <br />    <br />  添加后执行会出现一些说   font找不到的提示，不用理他。   <br />    <br />    <br />  讨论：这个问题在java中称为headless问题，是jdk1.3的bug，bug报告见http://developer.java.sun.com/developer/bugParade/bugs/4281163.html   。jdk1.4已经做了修正，文档见http://java.sun.com/j2se/1.4.1/docs/guide/awt/AWTChanges.html。   <br />  我对这个问题的理解：headless是指由于一些服务器（比如大型机）运行的环境比较特殊，不存在真实的设备去处理一些输入输出，比如显卡，键盘鼠标；这时就需要虚拟一些运行环境出来，或者就不要用到这些设备的相关操作（比如输入输出）。然而运行java.awt包又需要一个的图形环境，由此产生了异常。   <br />    <br />  这个问题的解决办法有三个：   <br />  1：将jdk升级为jdk1.4，然后加上运行参数   –Djava.awt.headless=true   即可。   <br />  2：虚拟一个图形环境。一般在linux下使用Xvfb来虚拟一个图形环境，在linux命令行键入Xvfb   :0   -screen   0   1024x768x16   &amp;   ，不过在使用之前要对Xvfb进行设置。我在本机上没有调试成功。各位可以试一下。   <br />  3：使用第三方工具包。可以使用   pja包，下载地址   http://www.eteks.com/pja/en/#Download   ，使用方法见解决方案。</font>
<img src ="http://www.blogjava.net/hua/aggbug/46970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-19 09:33 <a href="http://www.blogjava.net/hua/archive/2006/05/19/46970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎么在html中include一个文件内容</title><link>http://www.blogjava.net/hua/archive/2006/05/17/46587.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Wed, 17 May 2006 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/17/46587.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/46587.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/17/46587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/46587.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/46587.html</trackback:ping><description><![CDATA[
		<font face="Courier New">在html文件引入其它html文件的几种方法<br />简介：在论坛中常常有网友问到，可以在一个html的文件当中读取另一个html文件的内容吗？答案是确定的，而且方法不只一种，在以前我只会使用iframe来引用，后来发现了另外的几种方法，那今天就总结这几种方法让大家参考一下，本人觉得第三种方式较好！ <br />1.IFrame引入，看看下面的代码 </font>
		<p>
		</p>
		<p>
				<font face="Courier New">[代码] &lt;IFRAME NAME="content_frame" width=100% height=30 marginwidth=0 marginheight=0 SRC="import.htm" &gt;&lt;/IFRAME&gt; </font>
		</p>
		<p>
				<font face="Courier New">
				</font>
		</p>
		<p>
				<font face="Courier New">你会看到一个外部引入的文件，但会发现有一个类似外框的东西将其包围，可使用<br />[代码] &lt;iframe name="content_frame" marginwidth=0 marginheight=0 width=100% height=30 src="import.htm" frameborder=0&gt;&lt;/iframe&gt; </font>
		</p>
		<p>
				<br />
				<font face="Courier New">但你会发现还会有点问题，就是背景色不同，你只要在引入的文件import.htm中使用相同的背景色也可以，但如果你使用的是IE5.5的话，可以看看这篇关于透明色的文章 如果想引入的文件过长时不出现滚动条的话在import.htm中的body中加入scroll=no </font>
		</p>
		<p>
				<br />
				<font face="Courier New">2.&lt;object&gt;方式</font>
		</p>
		<p>
				<font face="Courier New">[代码] &lt;object style="border:0px" type="text/x-scriptlet" data="import.htm" width=100% height=30&gt;&lt;/object&gt;</font>
		</p>
		<p>
				<br />
				<font face="Courier New">3.Behavior的download方式</font>
		</p>
		<p>
				<font face="Courier New">[代码]<br />&lt;span id=showImport&gt;&lt;/span&gt;<br />&lt;IE:Download ID="oDownload" STYLE="behavior:url(#default#download)" /&gt;<br />&lt;script&gt; <br />function onDownloadDone(downDate){<br />showImport.innerHTML=downDate<br />} <br />oDownload.startDownload('import.htm',onDownloadDone)<br />&lt;/script&gt;</font>
		</p>
<img src ="http://www.blogjava.net/hua/aggbug/46587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-17 11:17 <a href="http://www.blogjava.net/hua/archive/2006/05/17/46587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UTF-8 and Unicode FAQ</title><link>http://www.blogjava.net/hua/archive/2006/05/16/46408.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 16 May 2006 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/16/46408.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/46408.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/16/46408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/46408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/46408.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">by </font>
				<a href="http://www.cl.cam.ac.uk/~mgk25/">
						<font face="Courier New">Markus Kuhn</font>
				</a>
				<font face="Courier New">
				</font>
		</p>
		<a href="http://www.linuxforum.net/">
				<font face="Courier New">中国LINUX论坛</font>
		</a>
		<font face="Courier New">翻译小组 xLoneStar[译] 2000年2月 </font>
		<p>
				<font face="Courier New">这篇文章说明了在 POSIX 系统 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的信息. 在将来不远的几年里, Unicode 已经很接近于取代 ASCII 与 Latin-1 编码的位置了. 它不仅允许你处理处理事实上存在于地球上的任何语言文字, 而且提供了一个全面的数学与技术符号集, 因此可以简化科学信息交换.</font>
		</p>
		<p>
				<font face="Courier New">UTF-8 编码提供了一种简便而向后兼容的方法, 使得那种完全围绕 ASCII 设计的操作系统, 比如 Unix, 也可以使用 Unicode. UTF-8 就是 Unix, Linux 已经类似的系统使用 Unicode 的方式. 现在是你了解它的时候了.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">什么是 UCS 和 ISO 10646?</font>
		</h2>
		<p>
				<font face="Courier New">国际标准 <strong>ISO 10646</strong> 定义了 <strong>通用字符集 (Universal Character Set, UCS)</strong>. UCS 是所有其他字符集标准的一个超集. 它保证与其他字符集是双向兼容的. 就是说, 如果你将任何文本字符串翻译到 UCS格式, 然后再翻译回原编码, 你不会丢失任何信息.</font>
		</p>
		<p>
				<font face="Courier New">UCS 包含了用于表达所有已知语言的字符. 不仅包括拉丁语,希腊语, 斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语和乔治亚语的描述, 还包括中文, 日文和韩文这样的象形文字, 以及 平假名, 片假名, 孟加拉语, 旁遮普语果鲁穆奇字符(Gurmukhi), 泰米尔语, 印.埃纳德语(Kannada), Malayalam, 泰国语, 老挝语, 汉语拼音(Bopomofo), Hangul, Devangari, Gujarati, Oriya, Telugu 以及其他数也数不清的语. 对于还没有加入的语言, 由于正在研究怎样在计算机中最好地编码它们, 因而最终它们都将被加入. 这些语言包括 Tibetian, 高棉语, Runic(古代北欧文字), 埃塞俄比亚语, 其他象形文字, 以及各种各样的印-欧语系的语言, 还包括挑选出来的艺术语言比如 Tengwar, Cirth 和 克林贡语(Klingon). UCS 还包括大量的图形的, 印刷用的, 数学用的和科学用的符号, 包括所有由 TeX, Postscript, MS-DOS，MS-Windows, Macintosh, OCR 字体, 以及许多其他字处理和出版系统提供的字符.</font>
		</p>
		<p>
				<font face="Courier New">ISO 10646 定义了一个 31 位的字符集. 然而, 在这巨大的编码空间中, 迄今为止只分配了前 65534 个码位 (0x0000 到 0xFFFD). 这个 UCS 的 16位子集称为 <strong>基本多语言面 (Basic Multilingual Plane, BMP)</strong>. 将被编码在 16 位 BMP 以外的字符都属于非常特殊的字符(比如象形文字), 且只有专家在历史和科学领域里才会用到它们. 按当前的计划, 将来也许再也不会有字符被分配到从 0x000000 到 0x10FFFF 这个覆盖了超过 100 万个潜在的未来字符的 21 位的编码空间以外去了. ISO 10646-1 标准第一次发表于 1993 年, 定义了字符集与 BMP 中内容的架构. 定义 BMP 以外的字符编码的第二部分 ISO 10646-2 正在准备中, 但也许要过好几年才能完成. 新的字符仍源源不断地加入到 BMP 中, 但已经存在的字符是稳定的且不会再改变了.</font>
		</p>
		<p>
				<font face="Courier New">UCS 不仅给每个字符分配一个代码, 而且赋予了一个正式的名字. 表示一个 UCS 或 Unicode 值的十六进制数, 通常在前面加上 "U+", 就象 U+0041 代表字符"拉丁大写字母A". UCS 字符 U+0000 到 U+007F 与 US-ASCII(ISO 646) 是一致的, U+0000 到 U+00FF 与 ISO 8859-1(Latin-1) 也是一致的. 从 U+E000 到 U+F8FF, 已经 BMP 以外的大范围的编码是为私用保留的.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">什么是组合字符?</font>
		</h2>
		<p>
				<font face="Courier New">UCS里有些编码点分配给了 <strong>组合字符</strong>.它们类似于打字机上的无间隔重音键. 单个的组合字符不是一个完整的字符. 它是一个类似于重音符或其他指示标记, 加在前一个字符后面. 因而, 重音符可以加在任何字符后面. 那些最重要的被加重的字符, 就象普通语言的正字法(orthographies of common languages)里用到的那种, 在 UCS 里都有自己的位置, 以确保同老的字符集的向后兼容性. 既有自己的编码位置, 又可以表示为一个普通字符跟随一个组合字符的被加重字符, 被称为 <strong>预作字符(precomposed characters)</strong>. UCS 里的预作字符是为了同没有预作字符的旧编码, 比如 ISO 8859, 保持向后兼容性而设的. 组合字符机制允许在任何字符后加上重音符或其他指示标记, 这在科学符号中特别有用, 比如数学方程式和国际音标字母, 可能会需要在一个基本字符后组合上一个或多个指示标记.</font>
		</p>
		<p>
				<font face="Courier New">组合字符跟随着被修饰的字符. 比如, 德语中的元音变音字符 ("拉丁大写字母A 加上分音符"), 既可以表示为 UCS 码 U+00C4 的预作字符, 也可以表示成一个普通 "拉丁大写字母A" 跟着一个"组合分音符":U+0041 U+0308 这样的组合. 当需要堆叠多个重音符, 或在一个基本字符的上面和下面都要加上组合标记时, 可以使用多个组合字符. 比如在泰国文中, 一个基本字符最多可加上两个组合字符.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">什么是 UCS 实现级别?</font>
		</h2>
		<p>
				<font face="Courier New">不是所有的系统都需要支持象组合字符这样的 UCS 里所有的先进机制. 因此 ISO 10646 指定了下列三种实现级别: </font>
		</p>
		<dl>
				<dt>
						<font face="Courier New">级别1 </font>
				</dt>
				<dd>
						<font face="Courier New">不支持组合字符和 Hangul Jamo 字符 (一种特别的, 更加复杂的韩国文的编码, 使用两个或三个子字符来编码一个韩文音节) </font>
				</dd>
				<dt>
						<font face="Courier New">级别2 </font>
				</dt>
				<dd>
						<font face="Courier New">类似于级别1, 但在某些文字中, 允许一列固定的组合字符 (例如, 希伯来文, 阿拉伯文, Devangari, 孟加拉语, 果鲁穆奇语, Gujarati, Oriya, 泰米尔语, Telugo, 印.埃纳德语, Malayalam, 泰国语和老挝语). 如果没有这最起码的几个组合字符, UCS 就不能完整地表达这些语言. </font>
				</dd>
				<dt>
						<font face="Courier New">级别3 </font>
				</dt>
				<dd>
						<font face="Courier New">支持所有的 UCS 字符, 例如数学家可以在任意一个字符上加上一个 tilde(颚化符号,西班牙语字母上面的～)或一个箭头(或两者都加). </font>
				</dd>
		</dl>
		<h2>
				<font face="Courier New" size="3">什么是 Unicode?</font>
		</h2>
		<p>
				<font face="Courier New">历史上, 有两个独立的, 创立单一字符集的尝试. 一个是</font>
				<a href="http://www.iso.ch/">
						<font face="Courier New">国际标准化组织(ISO)</font>
				</a>
				<font face="Courier New">的 ISO 10646 项目, 另一个是由(一开始大多是美国的)多语言软件制造商组成的协会组织的 </font>
				<a href="http://www.unicode.org/">
						<font face="Courier New">Unicode 项目</font>
				</a>
				<font face="Courier New">. 幸运的是, 1991年前后, 两个项目的参与者都认识到, 世界不需要两个不同的单一字符集. 它们合并双方的工作成果, 并为创立一个单一编码表而协同工作. 两个项目仍都存在并独立地公布各自的标准, 但 Unicode 协会和 ISO/IEC JTC1/SC2 都同意保持 Unicode 和 ISO 10646 标准的码表兼容, 并紧密地共同调整任何未来的扩展.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">那么 Unicode 和 ISO 10646 不同在什么地方?</font>
		</h2>
		<p>
				<font face="Courier New">Unicode 协会公布的 </font>
				<a href="http://www.unicode.org/unicode/standard/standard.html">
						<font face="Courier New">Unicode 标准</font>
				</a>
				<font face="Courier New"> 严密地包含了 ISO 10646-1 实现级别3的基本多语言面. 在两个标准里所有的字符都在相同的位置并且有相同的名字.</font>
		</p>
		<p>
				<font face="Courier New">Unicode 标准额外定义了许多与字符有关的语义符号学, 一般而言是对于实现高质量的印刷出版系统的更好的参考. Unicode 详细说明了绘制某些语言(比如阿拉伯语)表达形式的算法, 处理双向文字(比如拉丁与希伯来文混合文字)的算法和 排序与字符串比较 所需的算法, 以及其他许多东西.</font>
		</p>
		<p>
				<font face="Courier New">另一方面, ISO 10646 标准, 就象广为人知的 ISO 8859 标准一样, 只不过是一个简单的字符集表. 它指定了一些与标准有关的术语, 定义了一些编码的别名, 并包括了规范说明, 指定了怎样使用 UCS 连接其他 ISO 标准的实现, 比如 ISO 6429 和 ISO 2022. 还有一些与 ISO 紧密相关的, 比如 ISO 14651 是关于 UCS 字符串排序的.</font>
		</p>
		<p>
				<font face="Courier New">考虑到 Unicode 标准有一个易记的名字, 且在任何好的书店里的 Addison-Wesley 里有, 只花费 ISO 版本的一小部分, 且包括更多的辅助信息, 因而它成为使用广泛得多的参考也就不足为奇了. 然而, 一般认为, 用于打印 ISO 10646-1 标准的字体在某些方面的质量要高于用于打印 Unicode 2.0的. 专业字体设计者总是被建议说要两个标准都实现, 但一些提供的样例字形有显著的区别. ISO 10646-1 标准同样使用四种不同的风格变体来显示表意文字如中文, 日文和韩文 (CJK), 而 Unicode 2.0 的表里只有中文的变体. 这导致了普遍的认为 Unicode 对日本用户来说是不可接收的传说, 尽管是错误的.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">什么是 UTF-8?</font>
		</h2>
		<p>
				<font face="Courier New">首先 UCS 和 Unicode 只是分配整数给字符的编码表. 现在存在好几种将一串字符表示为一串字节的方法. 最显而易见的两种方法是将 Unicode 文本存储为 2 个 或 4 个字节序列的串. 这两种方法的正式名称分别为 UCS-2 和 UCS-4. 除非另外指定, 否则大多数的字节都是这样的(Bigendian convention). 将一个 ASCII 或 Latin-1 的文件转换成 UCS-2 只需简单地在每个 ASCII 字节前插入 0x00. 如果要转换成 UCS-4, 则必须在每个 ASCII 字节前插入三个 0x00.</font>
		</p>
		<p>
				<font face="Courier New">在 Unix 下使用 UCS-2 (或 UCS-4) 会导致非常严重的问题. 用这些编码的字符串会包含一些特殊的字符, 比如 '\0' 或 '/', 它们在 文件名和其他 C 库函数参数里都有特别的含义. 另外, 大多数使用 ASCII 文件的 UNIX 下的工具, 如果不进行重大修改是无法读取 16 位的字符的. 基于这些原因, 在文件名, 文本文件, 环境变量等地方, <strong>UCS-2</strong> 不适合作为 <strong>Unicode</strong> 的外部编码.</font>
		</p>
		<p>
				<font face="Courier New">在 ISO 10646-1 </font>
				<a href="http://www.cl.cam.ac.uk/~mgk25/ucs/ISO-10646-UTF-8.html">
						<font face="Courier New">Annex R</font>
				</a>
				<font face="Courier New"> 和 </font>
				<a href="ftp://ftp.funet.fi/mirrors/nic.nordu.net/rfc/rfc2279.txt">
						<font face="Courier New">RFC 2279</font>
				</a>
				<font face="Courier New"> 里定义的 <strong>UTF-8</strong> 编码没有这些问题. 它是在 Unix 风格的操作系统下使用 Unicode 的明显的方法.</font>
		</p>
		<p>
				<font face="Courier New">UTF-8 有一下特性: </font>
		</p>
		<ul>
				<li>
						<font face="Courier New">UCS 字符 U+0000 到 U+007F (ASCII) 被编码为字节 0x00 到 0x7F (ASCII 兼容). 这意味着只包含 7 位 ASCII 字符的文件在 ASCII 和 UTF-8 两种编码方式下是一样的. </font>
				</li>
				<li>
						<font face="Courier New">所有 &gt;U+007F 的 UCS 字符被编码为一个多个字节的串, 每个字节都有标记位集. 因此, ASCII 字节 (0x00-0x7F) 不可能作为任何其他字符的一部分. </font>
				</li>
				<li>
						<font face="Courier New">表示非 ASCII 字符的多字节串的第一个字节总是在 0xC0 到 0xFD 的范围里, 并指出这个字符包含多少个字节. 多字节串的其余字节都在 0x80 到 0xBF 范围里. 这使得重新同步非常容易, 并使编码无国界, 且很少受丢失字节的影响. </font>
				</li>
				<li>
						<font face="Courier New">可以编入所有可能的 2<sup>31</sup>个 UCS 代码 </font>
				</li>
				<li>
						<font face="Courier New">UTF-8 编码字符理论上可以最多到 6 个字节长, 然而 16 位 BMP 字符最多只用到 3 字节长. </font>
				</li>
				<li>
						<font face="Courier New">Bigendian UCS-4 字节串的排列顺序是预定的. </font>
				</li>
				<li>
						<font face="Courier New">字节 0xFE 和 0xFF 在 UTF-8 编码中从未用到. </font>
				</li>
		</ul>
		<p>
				<font face="Courier New">下列字节串用来表示一个字符. 用到哪个串取决于该字符在 Unicode 中的序号.</font>
		</p>
		<div align="center">
				<center>
						<table border="1">
								<tbody>
										<tr>
												<td>
														<font face="Courier New">U-00000000 - U-0000007F: </font>
												</td>
												<td>
														<font face="Courier New">0<i>xxxxxxx</i></font>
												</td>
										</tr>
										<tr>
												<td>
														<font face="Courier New">U-00000080 - U-000007FF: </font>
												</td>
												<td>
														<font face="Courier New">110<i>xxxxx</i> 10<i>xxxxxx</i></font>
												</td>
										</tr>
										<tr>
												<td>
														<font face="Courier New">U-00000800 - U-0000FFFF: </font>
												</td>
												<td>
														<font face="Courier New">1110<i>xxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i></font>
												</td>
										</tr>
										<tr>
												<td>
														<font face="Courier New">U-00010000 - U-001FFFFF: </font>
												</td>
												<td>
														<font face="Courier New">11110<i>xxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i></font>
												</td>
										</tr>
										<tr>
												<td>
														<font face="Courier New">U-00200000 - U-03FFFFFF: </font>
												</td>
												<td>
														<font face="Courier New">111110<i>xx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i></font>
												</td>
										</tr>
										<tr>
												<td>
														<font face="Courier New">U-04000000 - U-7FFFFFFF: </font>
												</td>
												<td>
														<font face="Courier New">1111110<i>x</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i> 10<i>xxxxxx</i></font>
												</td>
										</tr>
								</tbody>
						</table>
				</center>
		</div>
		<p>
				<font face="Courier New">xxx 的位置由字符编码数的二进制表示的位填入. 越靠右的 x 具有越少的特殊意义. 只用最短的那个足够表达一个字符编码数的多字节串. 注意在多字节串中, 第一个字节的开头"1"的数目就是整个串中字节的数目.</font>
		</p>
		<p>
				<font face="Courier New">
						<strong>例如</strong>: Unicode 字符 U+00A9 = 1010 1001 (版权符号) 在 UTF-8 里的编码为:</font>
		</p>
		<blockquote>
				<p>
						<font face="Courier New">11000010 10101001 = 0xC2 0xA9</font>
				</p>
		</blockquote>
		<p>
				<font face="Courier New">而字符 U+2260 = 0010 0010 0110 0000 (不等于) 编码为:</font>
		</p>
		<blockquote>
				<p>
						<font face="Courier New">11100010 10001001 10100000 = 0xE2 0x89 0xA0</font>
				</p>
		</blockquote>
		<p>
				<font face="Courier New">这种编码的官方名字拼写为 UTF-8, 其中 UTF 代表 <strong>U</strong>CS <strong>T</strong>ransformation <strong>F</strong>ormat. 请勿在任何文档中用其他名字 (比如 utf8 或 UTF_8) 来表示 UTF-8, 当然除非你指的是一个变量名而不是这种编码本身.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">什么编程语言支持 Unicode?</font>
		</h2>
		<p>
				<font face="Courier New">在大约 1993 年之后开发的大多数现代编程语言都有一个特别的数据类型, 叫做 Unicode/ISO 10646-1 字符. 在 Ada95 中叫 Wide_Character, 在 Java 中叫 char.</font>
		</p>
		<p>
				<font face="Courier New">ISO C 也详细说明了处理多字节编码和宽字符 (wide characters) 的机制, 1994 年 9 月 </font>
				<a href="http://www.lysator.liu.se/c/na1.html">
						<font face="Courier New">Amendment 1 to ISO C</font>
				</a>
				<font face="Courier New"> 发表时又加入了更多. 这些机制主要是为各类东亚编码而设计的, 它们比处理 UCS 所需的要健壮得多. UTF-8 是 ISO C 标准调用多字节字符串的编码的一个例子, <em>wchar_t</em> 类型可以用来存放 Unicode 字符.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">在 Linux 下该如何使用 Unicode?</font>
		</h2>
		<p>
				<font face="Courier New">在 UTF-8 之前, 不同地区的 Linux 用户使用各种各样的 ASCII 扩展. 最普遍的欧洲编码是 ISO 8859-1 和 ISO 8859-2, 希腊编码 ISO 8859-7, 俄国编码 KOI-8, 日本编码 EUC 和 Shift-JIS, 等等. 这使得 文件的交换非常困难, 且应用软件必须特别关心这些编码的不同之处.</font>
		</p>
		<p>
				<font face="Courier New">最终, Unicode 将取代所有这些编码, 主要通过 UTF-8 的形式. UTF-8 将应用在 </font>
		</p>
		<ul>
				<li>
						<font face="Courier New">文本文件 (源代码, HTML 文件, email 消息, 等等) </font>
				</li>
				<li>
						<font face="Courier New">文件名 </font>
				</li>
				<li>
						<font face="Courier New">标准输入与标准输出, 管道 </font>
				</li>
				<li>
						<font face="Courier New">环境变量 </font>
				</li>
				<li>
						<font face="Courier New">剪切与粘贴选择缓冲区 </font>
				</li>
				<li>
						<font face="Courier New">telnet, modem 和到终端模拟器的串口连接 </font>
				</li>
				<li>
						<font face="Courier New">以及其他地方以前用ASCII来表示的字节串 </font>
				</li>
		</ul>
		<p>
				<font face="Courier New">在 UTF-8 模式下, 终端模拟器, 比如 xterm 或 Linux console driver, 将每次按键转换成相应的 UTF-8 串, 然后发送到前台进程的 stdin 里. 类似的, 任何进程在 stdout 上的输出都将发送到终端模拟器, 在那里用一个 UTF-8 解码器进行处理, 之后再用一种 16 位的字体显示出来.</font>
		</p>
		<p>
				<font face="Courier New">只有在功能完善的多语言字处理器包里才可能有完全的 Unicode 功能支持. 而广泛用在 Linux 里用于取代 ASCII 和其他 8 位字符集的方案则要简单得多. 第一步, Linux 终端模拟器和命令行工具将只是转变到 UTF-8. 这意味着只用到 级别1 的 ISO 10646-1 实现 (没有组合字符), 且只支持那些不需要更多处理的语言象 拉丁, 希腊, 斯拉夫 和许多科学用符号. 在这个级别上, UCS 支持与 ISO 8859 支持类似, 唯一显著的区别是现在我们有几千种字符可以用了, 其中的字符可以用多字节串来表示.</font>
		</p>
		<p>
				<font face="Courier New">总有一天 Linux 会当然地支持组合字符, 但即便如此, 对于组合字符串, 预作字符(如何可用的话)仍将是首选的. 更正式地, 在 Linux 下用 Unicode 对文本编码的首选的方法应该是定义在 </font>
				<a href="http://www.unicode.org/unicode/reports/tr15/">
						<font face="Courier New">Unicode Technical Report #15</font>
				</a>
				<font face="Courier New"> 里的 <em>Normalization Form C.</em></font>
		</p>
		<p>
				<font face="Courier New">在今后的一个阶段, 人们可以考虑增加在日文和中文里用到的双字节字符的支持 (他们相对比较简单), 组合字符支持, 甚至也许对从右至左书写的语言如希伯来文 (他们可不是那么简单的) 的支持. 但对这些高级功能的支持不应该阻碍简单的平板 UTF-8 在 拉丁, 希腊, 斯拉夫和科学用符号方面的快速应用, 以取代大量的欧洲 8 位编码, 并提供一个象样的科学用符号集.</font>
		</p>
		<h2>
				<font face="Courier New" size="3">我该怎样修改我的软件?</font>
		</h2>
		<p>
				<font face="Courier New">有两种途径可以支持 UTF-8, 我称之为软转换与硬转换. 软转换时, 各处的数据均保存为 UTF-8 形式, 因而需要修改的软件很少. 在硬转换时, 程序将读入的 UTF-8 数据转换成宽字符数组, 以在应用程序内部处理. 在输出时, 再把字符串转换回 UTF-8 形式.</font>
		</p>
		<p>
				<font face="Courier New">大多数应用程序只用软转换就可以工作得很好了. 这使得将 UTF-8 引入 Unix 成为切实可行的. 例如, 象 cat 和 <samp>echo</samp> 这样的程序根本不需要修改. 他们仍然可以对输入输出的是 ISO 8859-2 还是 UTF-8 一无所知, 因为它们只是搬运字节流而没有处理它们. 它们只能识别 ASCII 字符和象 '\n' 这样的控制码, 而这在 UTF-8 下也没有任何改变. 因此, 这些应用程序的 UTF-8 编码与解码将完全在终端模拟器里完成.</font>
		</p>
		<p>
				<font face="Courier New">而那些通过数字节数来获知字符数量的程序则需要一些小修改. 在 UTF-8 模式下, 它们必须不数入 0x80 到 0xBF 范围内的字节, 因为这些只是跟随字节, 它们本身并不是字符. 例如, <samp>ls</samp> 程序就必须要修改, 因为它通过数文件名中字符数来排放给用户的目录表格布局. 类似地, 所有的假定其输出为定宽字体, 并因此而格式化它们的程序, 必须学会怎样数 UTF-8 文本中的字符数. 编辑器的功能, 如删除单个字符, 必须要作轻微的修改, 以删除可能属于该字符的所有字节. 受影响有编辑器 (<samp>vi,emacs</samp>, 等等)以及使用 <samp>ncurses</samp> 库的程序.</font>
		</p>
		<p>
				<font face="Courier New">Linux 核心使用软转换也可以工作得很好, 只需要非常微小的修改以支持 UTF-8. 大多数处理字符串的核心功能 (例如: 文件名, 环境变量, 等等) 都不受影响. 下列地方也许必须修改: </font>
		</p>
		<ul>
				<li>
						<font face="Courier New">控制台显示与键盘驱动程序 (另一个 VT100 模拟器) 必须能编码和解码 UTF-8, 必须要起码支持 Unicode 字符集的几个子集. 从 Linux 1.2 起这些功能已经有了. </font>
				</li>
				<li>
						<font face="Courier New">外部文件系统驱动程序, 例如 VFAT 和 WinNT 必须转换文件名字符编码. UTF-8 已经加入可用的转换选项的列表里了, 因此 <samp>mount</samp> 命令必须告诉核心驱动程序用户进程希望看到 UTF-8 文件名. 既然 VFAT 和 WinNT 无论如何至少已经用了 Unicode了, 那么 UTF-8 在这里就可以发挥其优势, 以保证转换中无信息损失. </font>
				</li>
				<li>
						<font face="Courier New">POSIX 系统的 tty 驱动程序支持一种 "cooked" 模式, 有一些原始的行编辑功能. 为了让字符删除功能工作正常, <samp>stty</samp> 必须在 tty 驱动程序里设置 UTF-8 模式, 因此它就不会把 0x80 到 0xBF 范围内的跟随字符也数进去了. </font>
						<a href="http://clisp.cons.org/~haible/">
								<font face="Courier New">Bruno Haible</font>
						</a>
						<font face="Courier New"> 那里已经有了一些 <samp>stty</samp> 和核心 tty 驱动 程序的 </font>
						<a href="ftp://ftp.ilog.fr/pub/Users/haible/utf8/">
								<font face="Courier New">Linux 补丁 </font>
						</a>
						<font face="Courier New">了. </font>
				</li>
		</ul>
		<h2>
				<font face="Courier New" size="3">C 对 Unicode 和 UTF-8 的支持</font>
		</h2>
		<p>
				<font face="Courier New">从 GNU glibc 2.1 开始, <samp>wchar_t</samp> 类型已经正式定为只存放独立于当前 locale 的, 32位的 ISO 10646 值. glibc 2.2 开始将完全支持 ISO C 中的多字节转换函数 (wprintf(),mbstowcs(),等等), 这些函数可以用于在 wchar_t 和包括 UTF-8 在内的任何依赖于 locale 的多字节编码间进行转换.</font>
		</p>
		<p>
				<font face="Courier New">例如, 你可以写</font>
		</p>
		<pre>  wprintf(L"Sch鰊e Gre!\n");</pre>
		<p>
				<font face="Courier New">然后, 你的软件将按照你的用户在环境变量 <samp>LC_CTYPE</samp> (例如, <samp>en_US.UTF-8</samp> 或 <samp>de_DE.ISO_8859-1</samp>) 中选择的 locale 所指定的编码来打印这段文字. 你的编译器必须运行在与该 C 源文件所用编码相应的 locale 中, 在目标文件中以上的宽字符串将改为 wchar_t 字符串存储. 在输出时, 运行时库将把 wchar_t 字符串转换回与程序执行时的 locale 相应的编码.</font>
		</p>
		<p>
				<font face="Courier New">注意, 类似这样的操作:</font>
		</p>
		<per>
				<pre>  char c = L"a"; </pre>
				<p>
						<font face="Courier New">只允许从 U+0000 到 U+007F (7 位 ASCII) 范围里的字符. 对于非 ASCII 字符, 不能直接从 <samp>wchar_t</samp> 到 <samp>char</samp> 转换.</font>
				</p>
				<p>
						<font face="Courier New">现在, 象 readline() 这样的函数在 UTF-8 locale 下也能工作了.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">怎样激活 UTF-8 模式?</font>
				</h2>
				<p>
						<font face="Courier New">如果你的应用程序既支持 8 位字符集 (ISO 8859-*,KOI-8,等等), 也支持 UTF-8, 那么它必须通过某种方法以得知是否应使用 UTF-8 模式. 幸运的是, 在未来的几年里, 人们将只使用 UTF-8, 因此你可以将它作为默认, 但即使如此, 你还是得既支持传统 8 位字符集, 也支持 UTF-8.</font>
				</p>
				<p>
						<font face="Courier New">当前的应用程序使用许许多多的不同的命令行开关来激活它们各自的 UTF-8 模式, 例如: </font>
				</p>
				<ul>
						<li>
								<font face="Courier New">xterm 命令行选项 "-u8" 和 X resource "XTerm*utf8:1" </font>
						</li>
						<li>
								<font face="Courier New">gnat/gcc 命令行选项 "-gnatW8" </font>
						</li>
						<li>
								<font face="Courier New">stty 命令行选项 "iutf8" </font>
						</li>
						<li>
								<font face="Courier New">mined 命令行选项 "-U" </font>
						</li>
						<li>
								<font face="Courier New">xemacs elisp 包裹 以在 UTF-8 和内部使用的 MULE 编码间转换 </font>
						</li>
						<li>
								<font face="Courier New">vim 'fileencoding' 选项 </font>
						</li>
						<li>
								<font face="Courier New">less 环境变量 LESSCHARSET=utf-8 </font>
						</li>
				</ul>
				<p>
						<font face="Courier New">记住每一个应用程序的命令行选项或其他配置方法是非常单调乏味的, 因此急需某种标准方法.</font>
				</p>
				<p>
						<font face="Courier New">如果你在你的应用程序里使用硬转换, 并使用某种特定的 C 库函数来处理外部字符编码和内部使用的 <samp>wchar_t</samp> 编码的转换工作, 那么 C 库会帮你处理模式切换的问题. 你只需将环境变量 LC_CTYPE 设为正确的 locale, 例如, 如果你使用 UTF-8, 那就是en.UTF-8, 而如果是 Latin-1, 并需要英语的转换, 则设为 en.ISO_8859-1.</font>
				</p>
				<p>
						<font face="Courier New">然而, 大多数现存软件的维护者选择用软转换来代替, 而不使用 libc 的宽字符函数, 不仅因为它们还未得到广泛应用, 还因为这会使得软件进行大规模修改. 在这种情况下, 你的应用程序必须自己来获知何时使用 UTF-8 模式. 一种方式是做以下工作:</font>
				</p>
				<p>
						<font face="Courier New">按照环境变量 <samp>LC_ALL, LC_CTYPE, LANG</samp> 的顺序, 寻找第一个有值的变量. 如果该值包含 <samp>UTF-8</samp> 子串 (也许是小写或没有"-") 则默认为 UTF-8 模式 (仍然可以用命令行开关来重设), 因为这个值可靠又恰当地指示了 C 库应该使用一种 UTF-8 locale.</font>
				</p>
				<p>
						<font face="Courier New">提供一个命令行选项 (或者如果是 X 客户程序则用 X resource 的值) 将仍然是有用的, 可以用来重设由 <samp>LC_CTYPE</samp> 等环境变量指定的默认值.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">我怎样才能得到 UTF-8 版本的 xterm?</font>
				</h2>
				<p>
						<font face="Courier New">在 </font>
						<a href="http://www.xfree86.org/">
								<font face="Courier New">XFree86</font>
						</a>
						<font face="Courier New"> 里带的 </font>
						<a href="http://www.clark.net/pub/dickey/xterm/xterm.html">
								<font face="Courier New">xterm</font>
						</a>
						<font face="Courier New"> 版本最近已经由 </font>
						<a href="http://www.clark.net/pub/dickey/">
								<font face="Courier New">Thomas E. Dickey</font>
						</a>
						<font face="Courier New"> 加入了支持 UTF-8 的扩展. 使用方法是, 获取 xterm </font>
						<a href="http://www.clark.net/pub/dickey/xterm/xterm.log.html#xterm_119">
								<font face="Courier New">patch #119</font>
						</a>
						<font face="Courier New"> (1999-10-16) 或更新版本, 用 "./configure --enable-wide-chars ; make" 来编译, 然后用命令行选项 <samp>-u8</samp> 来调用 xterm, 使它将输入输出转换为 UTF-8. 在 UTF-8 模式里使用一个 *-ISO10646-1 字体. 当你在 ISO 8859-1 模式里时也可以使用 *-ISO10646-1 字体, 因为 ISO 10646-1 字体与 ISO 8859-1 字体是完全向后兼容的.</font>
				</p>
				<p>
						<font face="Courier New">新的支持 UTF-8 的 xterm 版本, 以及一些 ISO 10646-1 字体, 将被收录入 XFree86 4.0 版里.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">xterm 支持组合字符吗?</font>
				</h2>
				<p>
						<font face="Courier New">Xterm 当前只支持级别1的 ISO 10646-1, 就是说, 不提供组合字符的支持. 当前, 组合字符将被当作空格字符对待. xterm 将来的修订版很有可能加入某些简单的组合字符支持, 就是仅仅将那个有一个或多个组合字符的基字符加粗 (logical OR-ing). 对于在基线以下的和在小字符上方的重音符来说, 这样处理的结果还是可以接受的. 对于象泰国文字体那样使用特别设计的加粗字符的文字, 这样处理也能工作的很好. 然而, 对于某些字体里, 在较高的字符上方组合上的重音符, 特别是对于 "fixed" 字体族, 产生的结果就不完全令人满意了. 因此, 在可用的地方, 应该继续优先使用预作字符.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">xterm 支持半宽与全宽 CJK 字体吗?</font>
				</h2>
				<p>
						<font face="Courier New">Xterm 当前只支持那种所有字形都等宽的 cell-spaced 的字体. 将来的修订版很有可能为 CJK 语言加入半宽与全宽字符支持, 类似于 kterm 提供的那种. 如果选择的普通字体是 <var>X</var>×<var>Y</var> 象素大小, 且宽字符模式是打开的, 那么 xterm 会试图装入另外的一个 <var>2X</var>×<var>Y</var> 象素大小的字体 (同样的 XLFD, 只是 <samp>AVERAGE_WIDTH</samp> 属性的值翻倍). 它会用这个字体来显示所有在 </font>
						<a href="http://www.unicode.org/unicode/reports/tr11/">
								<font face="Courier New">Unicode Technical Report #11</font>
						</a>
						<font face="Courier New"> 里被分配了<em>East Asian Wide (W)</em> 或 <em>East Asian FullWidth (F)</em> 宽度属性的 Unicode 字符. 下面这个 C 函数用来测试一个 Unicode 字符是否是宽字符并需要用覆盖两个字符单元的字形来显示:</font>
				</p>
				<pre>  /* This function tests, whether the ISO 10646/Unicode character code
   * ucs belongs into the East Asian Wide (W) or East Asian FullWidth
   * (F) category as defined in Unicode Technical Report #11. In this
   * case, the terminal emulator should represent the character using a
   * a glyph from a double-wide font that covers two normal (Latin)
   * character cells. */

  int iswide(int ucs)
  {
    if (ucs &lt; 0x1100)
      return 0;

    return
      (ucs &gt;= 0x1100 &amp;&amp; ucs &lt;= 0x115f) || /* Hangul Jamo */
      (ucs &gt;= 0x2e80 &amp;&amp; ucs &lt;= 0xa4cf &amp;&amp; (ucs &amp; ~0x0011) != 0x300a &amp;&amp;
       ucs != 0x303f) ||                     /* CJK ... Yi */
      (ucs &gt;= 0xac00 &amp;&amp; ucs &lt;= 0xd7a3) || /* Hangul Syllables */
      (ucs &gt;= 0xf900 &amp;&amp; ucs &lt;= 0xfaff) || /* CJK Compatibility Ideographs */
      (ucs &gt;= 0xfe30 &amp;&amp; ucs &lt;= 0xfe6f) || /* CJK Compatibility Forms */
      (ucs &gt;= 0xff00 &amp;&amp; ucs &lt;= 0xff5f) || /* Fullwidth Forms */
      (ucs &gt;= 0xffe0 &amp;&amp; ucs &lt;= 0xffe6);
  }</pre>
				<p>
						<font face="Courier New">某些 C 库也提供了函数</font>
				</p>
				<pre>  #include &lt;wchar.h&gt;
  int wcwidth(wchar_t wc);
  int wcswidth(const wchar_t *pwcs, size_t n);</pre>
				<p>
						<font face="Courier New">用来测定该宽字符 <var>wc</var> 或由 <var>pwcs</var> 指向的字符串中的 <var>n</var> 个宽字符码 (或者少于 <var>n</var> 个宽字符码, 如果在 n 个宽字符码之前遇到一个空宽字符的话) 所要求的列位置的数量. 这些函数定义在 Open Group 的 </font>
						<a href="http://www.unix-systems.org/online.html">
								<font face="Courier New">Single UNIX Specification</font>
						</a>
						<font face="Courier New"> 里. 一个拉丁/希腊/斯拉夫/等等的字符要求一个列位置, 一个 CJK 象形文字要求两个, 而一个组合字符要求零个.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">最终 xterm 是否会支持从右到左的书写?</font>
				</h2>
				<p>
						<font face="Courier New">此刻还没有给 xterm 增加从右到左功能的计划. 希伯来与阿拉伯用户因此不得不靠应用程序在将希伯来文与阿拉伯文字符串送到终端前按左方向翻转它们, 换句话说, 双向处理必须在应用程序里完成, 而不是在 xterm 里. 至少, 希伯来与阿拉伯文在预作字形的可用性的形式上, 以及提示表格上的支持, 比 ISO 8859 要有所改进. 现在还远没有决定 xterm 是否支持双向文字以及该怎样工作. </font>
						<a href="http://www.ecma.ch/stand/ECMA-048.HTM">
								<font face="Courier New">ISO 6429 = ECMA-48</font>
						</a>
						<font face="Courier New"> 和 </font>
						<a href="http://www.unicode.org/unicode/reports/tr9/">
								<font face="Courier New">Unicode bidi algorithm</font>
						</a>
						<font face="Courier New"> 都提供了可供选择的开始点. 也可以参考 </font>
						<a href="http://www.ecma.ch/techrep/E-TR-053.HTM">
								<font face="Courier New">ECMA Technical<br />Report TR/53</font>
						</a>
						<font face="Courier New">. Xterm 也不处理阿拉伯文, Hangul 或 印度文本的格式化算法, 而且现在还不太清楚在 VT100 模拟器里处理是否可行和值得, 或者应该留给应用软件去处理. 如果你打算在你的应用程序里支持双向文字输出, 看一下 </font>
						<a href="http://imagic.weizmann.ac.il/~dov/freesw/FriBidi/">
								<font face="Courier New">FriBidi</font>
						</a>
						<font face="Courier New">, Dov Grobgeld 的 Unicode 双向算法的自由实现.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">我在哪儿能找到 ISO 10646-1 X11 字体?</font>
				</h2>
				<p>
						<font face="Courier New">在过去的几个月里出现了相当多的 X11 的 Unicode 字体, 并且还在快速增多. </font>
				</p>
				<ul>
						<li>
								<font face="Courier New">Markus Kuhn 正和其他许多志愿者一起工作于手动将旧的 <samp>-misc-fixed-*-iso8859-1</samp> 字体扩展到覆盖所有的欧洲字符表 (拉丁, 希腊, 斯拉夫, 国际音标字母表. 数学与技术符号, 某些字体里甚至有亚美尼亚语, 乔治亚语, 片假名等). 更多信息请参考 </font>
								<a href="http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html">
										<font face="Courier New">Unicode fonts and tools for X11</font>
								</a>
								<font face="Courier New"> 页. 这些字体将与 XFree86 一起分发. 例如字体 </font>
								<pre>  -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
</pre>
								<p>
										<font face="Courier New">(旧的 xterm 的 <samp>fixed</samp> 缺省字体的一个扩展, 包括超过 3000 个字符) 已经是 XFree86 3.9 snapshot 的一部分了.</font>
								</p>
						</li>
				</ul>
				<ul>
						<li>
								<font face="Courier New">Markus 也做好了 </font>
								<a href="http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts-75dpi100dpi.tar.gz">
										<font face="Courier New">X11R6.4 distribution 里所有的 Adobe 和 B&amp;H BDF 字体的 ISO 10646 版本</font>
								</a>
								<font face="Courier New">. 这些字体已经包含了全部 Postscript 字体表 (大约 30 个额外的字符, 大部分也被 CP1252 MS-Windows 使用, 如 smart quotes, dashes 等), 在 ISO 8859-1 编码下是没有的. 它们在 ISO 10646-1 版本里是完全可用的. </font>
						</li>
						<li>
								<font face="Courier New">XFree86 4.0 将携带一个集成的 TrueType 字体引擎, 这使得你的 X 应用程序可以将任何 Apple/Microsoft 字体用于 ISO 10646-1 编码. </font>
						</li>
						<li>
								<font face="Courier New">将来的 XFree86 版本很有可能从分发版中去除大多数旧的 BDF 字体, 取而代之的是 ISO 10646-1 编码的版本. X 服务器则会增加一个自动编码转换器, 只有当旧的 8 位软件请求一个类似于 ISO 8859-* 编码的字体时, 才虚拟地从 ISO 10646-1 字体文件中创建一个这样的字体. 现代软件应该优先地直接使用 ISO 10646-1 字体编码. </font>
						</li>
						<li>
								<a href="ftp://crl.nmsu.edu/CLR/multiling/unicode/fonts/">
										<font face="Courier New">ClearlyU (cu12)</font>
								</a>
								<font face="Courier New"> 是一个非常有用的 X11 的 12 点阵, 100 dpi 的 proportional ISO 10646-1 BDF 字体, 包含超过 3700 个字符, 由 </font>
								<a href="mailto:mleisher@crl.nmsu.edu">
										<font face="Courier New">Mark Leisher</font>
								</a>
								<font face="Courier New"> 提供 (</font>
								<a href="http://crl.nmsu.edu/~mleisher/cu-examples.html">
										<font face="Courier New">样例图象</font>
								</a>
								<font face="Courier New">). </font>
						</li>
						<li>
								<font face="Courier New">Roman Czyborra 的 </font>
								<a href="http://czyborra.com/unifont/">
										<font face="Courier New">GNU Unicode font</font>
								</a>
								<font face="Courier New"> 项目工作于收集一个完整的与免费的 8×16/16×16 pixel Unicode 字体. 目前已经覆盖了 34000 个字符. </font>
						</li>
						<li>
								<a href="ftp://ftp.x.org/contrib/fonts/etl-unicode.tar.gz">
										<font face="Courier New">etl-unicode</font>
								</a>
								<font face="Courier New"> 是一个 ISO 10646-1 BDF 字体, 由 </font>
								<a href="mailto:primoz.peterlin@biofiz.mf.uni-lj.si">
										<font face="Courier New">Primoz Peterlin</font>
								</a>
								<font face="Courier New"> 提供. </font>
						</li>
				</ul>
				<p>
						<font face="Courier New">Unicode X11 字体名字以 <samp>-ISO10646-1</samp> 结尾. 这个 </font>
						<a href="ftp://sunsite.doc.ic.ac.uk/packages/X11/pub/R6.4/xc/doc/hardcopy/XLFD/xlfd.PS.gz">
								<font face="Courier New">X 逻辑字体描述器 (X Logical Font Descriptor, XLFD)</font>
						</a>
						<font face="Courier New"> 的 CHARSET_REGISTRY 和 CHARSET_ENCODING 域里的值已经为所有 Unicode 和 ISO 10646-1 的 16 位字体而正式地</font>
						<a href="ftp://sunsite.doc.ic.ac.uk/packages/X11/pub/R6.4/xc/registry">
								<font face="Courier New">注册</font>
						</a>
						<font face="Courier New">了. 每个 <samp>*-ISO10646-1</samp> 字体都包含了整个 Unicode 字符集里的某几个子集, 而用户必须弄清楚他们选择的字体覆盖哪几个他们需要的字符子集.</font>
				</p>
				<p>
						<samp>*-ISO10646-1</samp>
						<font face="Courier New"> 字体通常也指定一个 <samp>DEFAULT_CHAR</samp> 值, 指向一个非 Unicode 字形, 用来表示所有在该字体里不可用的字符 (通常是一个虚线框, 一个 H 的大小, 位于 0x1F 或 0xFFFE). 这使得用户至少能知道这儿有一个不支持的字符. xterm 用的小的定宽字体比如 6x13 等, 将永远无法覆盖所有的 Unicode, 因为许多文字比如日本汉字只能用比欧洲用户广泛使用的大的象素尺寸才能表示. 欧洲使用的典型的 Unicode 字体将只包含大约 1000 到 3000 个字符的子集.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">我怎样才能找出一个 X 字体里有哪些字形?</font>
				</h2>
				<p>
						<font face="Courier New">X 协议无法让一个应用程序方便地找出一个 cell-spaced 字体提供哪些字形, 它没有为字体提供这样的量度. 因此 </font>
						<a href="http://crl.nmsu.edu/~mleisher/">
								<font face="Courier New">Mark Leisher</font>
						</a>
						<font face="Courier New"> 和 </font>
						<a href="mailto:erik@netscape.com">
								<font face="Courier New">Erik van de Poel</font>
						</a>
						<font face="Courier New"> (Netscape) 指定了一个新的 <samp>_XFREE86_GLYPH_RANGES BDF</samp> 属性, 告诉应用程序该 BDF 字体实现了哪个 Unicode 子集. Mark Leisher 提供了一些</font>
						<a href="http://crl.nmsu.edu/~mleisher/bdfother.html">
								<font face="Courier New">样例代码</font>
						</a>
						<font face="Courier New">以产生并扫描这个属性, 而 Xmbdfed 3.9 以及更高版本将自动将其加入到由它产生的每个 BDF 文件里.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">与 UTF-8 终端模拟器相关的问题是什么?</font>
				</h2>
				<p>
						<font face="Courier New">VT100 终端模拟器接受 ISO 2022 (=</font>
						<a href="ftp://ftp.ecma.ch/ECMA-ST/E035-PDF.PDF">
								<font face="Courier New">ECMA-35</font>
						</a>
						<font face="Courier New">) ESC 序列, 用于在不同的字符集间切换.</font>
				</p>
				<p>
						<font face="Courier New">UTF-8 在 ISO 2022 的意义里是一个 "其他编码系统" (参考 ECMA 35 的 15.4 节). UTF-8 是在 ISO 2022 SS2/SS3/G0/G1/G2/G3 世界之外的, 因此如果你从 ISO 2022 切换到 UTF-8, 所有的 SS2/SS3/G0/G1/G2/G3 状态都变得没有意义了, 直到你离开 UTF-8 并切换回 ISO 2022. UTF-8 是一个没有国家的编码, 也就是一个自我终结的短字节序列完全决定了它代表什么字符, 独立于任何国家的切换. G0 与 G1 在 ISO 10646 里与在 ISO 8859-1 里相同, 而 G2/G3 在 ISO 10646 里不存在, 因为任何字符都有固定的位置, 因而不会发声切换. 在 UTF-8 模式下, 你的终端不会因为你偶然地装入一个二进制文件而切换入一种奇怪图形字符模式. 这使得一个终端在 UTF-8 模式下比在 ISO 2022 模式下要健壮得多, 而且因此可以有办法将终端锁在 UTF-8 模式里, 而不会偶然地回到 ISO 2022 世界里.</font>
				</p>
				<p>
						<font face="Courier New">ISO 2022 标准指定了一系列的 ESC % 序列, 以离开 ISO 2022 世界 (指定其他的编码系统, DOCS), 用于 </font>
						<a href="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/ISO-10646-UTF-8.html">
								<font face="Courier New">UTF-8</font>
						</a>
						<font face="Courier New"> 的许多这样的序列已经注册进了 </font>
						<a href="http://www.itscj.ipsj.or.jp/ISO-IR/">
								<font face="Courier New">ISO 2375 International Register of Coded Character Sets</font>
						</a>
						<font face="Courier New">: </font>
				</p>
				<ul>
						<li>
								<samp>ESC %G</samp>
								<font face="Courier New"> 从 ISO 2022 里激活一个未指定实现级别的 UTF-8 模式且允许再返回 ISO 2022. </font>
						</li>
						<li>
								<samp>ESC %@</samp>
								<font face="Courier New"> 从 UTF-8 回到 ISO 2022, 条件是通过 ESC %G 进入的 UTF-8 </font>
						</li>
						<li>
								<samp>ESC %/G</samp>
								<font face="Courier New"> 切换进 UTF-8 级别 1 且不返回. </font>
						</li>
						<li>
								<samp>ESC %/H</samp>
								<font face="Courier New"> 切换进 UTF-8 级别 2 且不返回. </font>
						</li>
						<li>
								<samp>ESC %/I</samp>
								<font face="Courier New"> 切换进 UTF-8 级别 3 且不返回. </font>
						</li>
				</ul>
				<p>
						<font face="Courier New">当一个终端模拟器在 UTF-8 模式时, 任何 ISO 2022 逃脱码序列例如用于切换 G2/G3 等的都被忽略. 一个在 UTF-8 模式下的终端模拟器唯一会执行的 ISO 2022 序列是 <samp>ESC %@</samp> 以从 UTF-8 返回 ISO 2022 方案.</font>
				</p>
				<p>
						<font face="Courier New">UTF-8 仍然允许你使用象 CSI 这样的 C1 控制字符, 尽管 UTF-8 也使用 0x80-0x9F 范围里的字节. 重要的是必须理解在 UTF-8 模式下的终端模拟器必须在执行任何控制字符前对收到的字节流运用 UTF-8 解码器. C1 字符与其他任何大于 U+007F 的字符一样需先经过 UTF-8 解码.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">已经有哪些支持 UTF-8 的应用程序了?</font>
				</h2>
				<ul>
						<li>
								<a href="http://czyborra.com/yudit/">
										<font face="Courier New">Yudit</font>
								</a>
								<font face="Courier New"> 是 </font>
								<a href="http://www2.gol.com/users/gsinai/">
										<font face="Courier New">Gaspar Sinai</font>
								</a>
								<font face="Courier New"> 的自由 X11 Unicode 编辑器 </font>
						</li>
						<li>
								<a href="http://www.inf.fu-berlin.de/~wolff/mined.html">
										<font face="Courier New">Mined 98</font>
								</a>
								<font face="Courier New"> 由 </font>
								<a href="http://www.inf.fu-berlin.de/~wolff/">
										<font face="Courier New">Thomas Wolff</font>
								</a>
								<font face="Courier New"> 提供, 是一个可以处理 UTF-8 的文本编辑器. </font>
						</li>
						<li>
								<a href="http://www.flash.net/~marknu/less/">
										<font face="Courier New">less</font>
								</a>
								<font face="Courier New"> 版本 346 或更高, 支持 UTF-8 </font>
						</li>
						<li>
								<a href="http://www.columbia.edu/kermit/ckermit.html">
										<font face="Courier New">C-Kermit 7.0</font>
								</a>
								<font face="Courier New"> 在传输, 终端, 及文件字符集方面支持 UTF-8. </font>
						</li>
						<li>
								<a href="http://hawkwind.utcs.utoronto.ca:8001/mlists/sam.html">
										<font face="Courier New">Sam</font>
								</a>
								<font face="Courier New"> 是 Plan9 的 UTF-8 编辑器, 类似于 vi, 也可用于 Linux 和 Win32. (</font>
								<a href="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/UTF-8-Plan9-paper.ps.gz">
										<font face="Courier New">Plan9</font>
								</a>
								<font face="Courier New"> 是第一个完全转向 UTF-8, 将其作为字符编码的操作系统.) </font>
						</li>
						<li>
								<a href="http://www.gh.cs.usyd.edu.au/~matty/9term/">
										<font face="Courier New">9term</font>
								</a>
								<font face="Courier New"> 由 </font>
								<a href="http://www.gh.cs.usyd.edu.au/~matty/">
										<font face="Courier New">Matty Farrow</font>
								</a>
								<font face="Courier New"> 提供, 是一个 Plan9 操作系统的 Unicode/UTF-8 终端模拟器的 Unix 移植. </font>
						</li>
						<li>
								<a href="http://www.cs.su.oz.au/~gary/hobby/wily/auug.html">
										<font face="Courier New">Wily</font>
								</a>
								<font face="Courier New"> 是一个 Plan9 Acme 编辑器的 Unix 实现. </font>
						</li>
						<li>
								<a href="ftp://ftp.dcs.ed.ac.uk/pub/jec/programs/">
										<font face="Courier New">ucm-0.1</font>
								</a>
								<font face="Courier New"> 是 </font>
								<a href="http://www.dcs.ed.ac.uk/home/jec/">
										<font face="Courier New">Juliusz Chroboczek</font>
								</a>
								<font face="Courier New"> 的 Unicode 字符映射表, 一个小工具, 使你可以选中任何一个 Unicode 字符并粘贴进你的应用程序. </font>
						</li>
				</ul>
				<h2>
						<font face="Courier New" size="3">有哪些用于改善 UTF-8 支持的补丁?</font>
				</h2>
				<ul>
						<li>
								<a href="http://www.ecs.soton.ac.uk/~rwb197/">
										<font face="Courier New">Robert Brady</font>
								</a>
								<font face="Courier New"> 提供了一个 </font>
								<a href="http://www.ecs.soton.ac.uk/~rwb197/utf8/less-340-utf-2.diff">
										<font face="Courier New">patch for less 340</font>
								</a>
								<font face="Courier New"> (现在已经合并进了 </font>
								<a href="http://www.flash.net/~marknu/less/less-344.tar.gz">
										<font face="Courier New">less 344</font>
								</a>
								<font face="Courier New">) </font>
						</li>
						<li>
								<a href="http://clisp.cons.org/~haible/">
										<font face="Courier New">Bruno Haible</font>
								</a>
								<font face="Courier New"> 提供了用于 stty, Linux 核心 tty 等的 </font>
								<a href="ftp://ftp.ilog.fr/pub/Users/haible/utf8/">
										<font face="Courier New">多个补丁</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<font face="Courier New">Otfried Cheong 编写了 </font>
								<a href="http://www.cs.ust.hk/faculty/otfried/Mule/">
										<font face="Courier New">Unicode encoding for GNU Emacs</font>
								</a>
								<font face="Courier New"> 工具箱, 使 Mule 能够处理 UTF-8 文件. </font>
						</li>
				</ul>
				<h2>
						<font face="Courier New" size="3">Postscript 字形的名字与 UCS 代码是怎么关联的?</font>
				</h2>
				<p>
						<font face="Courier New">参考 Adobe 的 </font>
						<a href="http://partners.adobe.com/asn/developer/typeforum/unicodegn.html">
								<font face="Courier New">Unicode and Glyph Names</font>
						</a>
						<font face="Courier New"> 指南. </font>
				</p>
				<h2>
						<font face="Courier New" size="3">X11 的剪切与粘贴工作在 UTF-8 时是如何完成的?</font>
				</h2>
				<p>
						<font face="Courier New">参考 </font>
						<a href="http://www.dcs.ed.ac.uk/home/jec/">
								<font face="Courier New">Juliusz Chroboczek</font>
						</a>
						<font face="Courier New"> 的 </font>
						<a href="http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/UTF8-selections.text">
								<font face="Courier New">客户机间 Unicode 文本的交换</font>
						</a>
						<font face="Courier New"> 草案, 对 ICCCM 的一个扩充的建议, 用一个新的可用于属性类型(property type)和选中(selection)目标的原子 UTF8_STRING 来处理 UTF-8 的选中.</font>
				</p>
				<h2>
						<font face="Courier New" size="3">现在有没有用于处理 Unicode 的免费的库?</font>
				</h2>
				<ul>
						<li>
								<a href="http://www.alphaworks.ibm.com/tech/icu/">
										<font face="Courier New">IBM Classes for Unicode</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://crl.nmsu.edu/~mleisher/">
										<font face="Courier New">Mark Leisher</font>
								</a>
								<font face="Courier New"> 的 UCData Unicode 字符属性库和 <samp>wchar_t</samp> 支持测试码. </font>
						</li>
				</ul>
				<h2>
						<font face="Courier New" size="3">各种 X widget 对 Unicode 支持的现状如何?</font>
				</h2>
				<ul>
						<li>
								<a href="http://www.labs.redhat.com/~otaylor/gscript/">
										<font face="Courier New">GScript - Unicode 与复杂文本处理</font>
								</a>
								<font face="Courier New"> 是一个为 </font>
								<a href="http://www.gtk.org/">
										<font face="Courier New">GTK+</font>
								</a>
								<font face="Courier New"> 增加全功能的 Unicode 支持的项目. </font>
						</li>
						<li>
								<a href="http://www.troll.no/announce/qt-200.html">
										<font face="Courier New">Qt 2.0</font>
								</a>
								<font face="Courier New"> 现在支持使用 *-ISO10646-1 字体了. </font>
						</li>
						<li>
								<a href="http://imagic.weizmann.ac.il/~dov/freesw/FriBidi/">
										<font face="Courier New">FriBidi</font>
								</a>
								<font face="Courier New"> 是 Dov Grobgeld 的 Unicode 双向算法的免费实现. </font>
						</li>
				</ul>
				<h2>
						<font face="Courier New" size="3">有什么关于这个话题的好的邮件列表?</font>
				</h2>
				<p>
						<font face="Courier New">你确实应该订阅的是 <samp>unicode@unicode.org</samp> 邮件列表, 这是发现标准的作者和其他许多领袖的话语的最好办法. 订阅方法是, 用 "subscribe" 作为标题, "subscribe YOUR@EMAIL.ADDRESS unicode" 作为正文, 发一条消息到 </font>
						<a href="mailto:unicode-request@unicode.org">
								<font face="Courier New">unicode-request@unicode.org</font>
						</a>
						<font face="Courier New">.</font>
				</p>
				<p>
						<font face="Courier New">也有一个专注与改进通常用于 GNU/Linux 系统上应用程序的 UTF-8 支持的邮件列表 <samp>linux-utf8@nl.linux.org</samp>. 订阅方法是, 以 "subscribe linux-utf8" 为内容, 发送消息到 </font>
						<a href="mailto:majordomo@nl.linux.org">
								<font face="Courier New">majordomo@nl.linux.org</font>
						</a>
						<font face="Courier New">. 你也可以浏览 </font>
						<a href="http://www.linux.eu.org/lists/linux-utf8/">
								<font face="Courier New">linux-utf8 archive</font>
						</a>
				</p>
				<p>
						<font face="Courier New">其他相关的还有 </font>
						<a href="http://www.xfree86.org/">
								<font face="Courier New">XFree86</font>
						</a>
						<font face="Courier New"> 组的 "字体" 与 "i18n" 列表, 但你必须成为一名正式的开发者才能订阅.</font>
				</p>
				<h3>
						<font face="Courier New" size="3">更多参考</font>
				</h3>
				<ul>
						<li>
								<font face="Courier New">Bruno Haible 's </font>
								<a href="ftp://ftp.ilog.fr/pub/Users/haible/utf8/Unicode-HOWTO.html">
										<font face="Courier New">Unicode HOWTO</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<a href="http://www.unicode.org/unicode/uni2book/u2.html">
										<font face="Courier New">The Unicode Standard, Version 2.0</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://www.unicode.org/unicode/reports/techreports.html">
										<font face="Courier New">Unicode Technical Reports</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<font face="Courier New">Mark Davis' </font>
								<a href="http://www.unicode.org/unicode/faq/">
										<font face="Courier New">Unicode FAQ</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://www.iso.ch/cate/d18741.html">
										<font face="Courier New">ISO/IEC 10646-1:1993</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://people.netscape.com/ftang/i18n.html">
										<font face="Courier New">Frank Tang's I?t?rnati?nàliz?ti?n Secrets</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://www.sun.com/software/white-papers/wp-unicode/">
										<font face="Courier New">Unicode Support in the Solaris 7 Operating Environment</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<font face="Courier New">The USENIX paper by Rob Pike and Ken Thompson on the </font>
								<a href="ftp://ftp.informatik.uni-erlangen.de/pub/doc/ISO/charsets/UTF-8-Plan9-paper.ps.gz">
										<font face="Courier New">introduction of UTF-8 under Plan9</font>
								</a>
								<font face="Courier New"> reports about the first operating system that migrated already in 1992 completely to UTF-8 (which was at the time still called UTF-2). </font>
						</li>
						<li>
								<a href="http://www.li18nux.org/">
										<font face="Courier New">Li18nux</font>
								</a>
								<font face="Courier New"> is a project initiated by several Linux distributors to enhance Unicode support for Linux. </font>
						</li>
						<li>
								<font face="Courier New">The </font>
								<a href="http://www.unix-systems.org/online.html">
										<font face="Courier New">Online Single Unix Specification</font>
								</a>
								<font face="Courier New"> contains definitions of all the ISO C Amendment 1 function, plus extensions such as wcwidth(). </font>
						</li>
						<li>
								<font face="Courier New">The Open Group's summary of </font>
								<a href="http://www.unix-systems.org/version2/whatsnew/login_mse.html">
										<font face="Courier New">ISO C Amendment 1</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<a href="http://sourceware.cygnus.com/glibc/">
										<font face="Courier New">GNU libc</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<a href="http://www.multimania.com/ydirson/en/lct/">
										<font face="Courier New">The Linux Console Tools</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<font face="Courier New">The Unicode Consortium </font>
								<a href="ftp://ftp.unicode.org/Public/UNIDATA/">
										<font face="Courier New">character database</font>
								</a>
								<font face="Courier New"> and </font>
								<a href="ftp://ftp.unicode.org/Public/MAPPINGS/">
										<font face="Courier New">character set conversion tables</font>
								</a>
								<font face="Courier New"> are an essential resource for anyone developping Unicode related tools. </font>
						</li>
						<li>
								<font face="Courier New">Other conversion tables are available from </font>
								<a href="http://www.microsoft.com/globaldev/reference/WinCP.asp">
										<font face="Courier New">Microsoft</font>
								</a>
								<font face="Courier New"> and </font>
								<a href="ftp://dkuug.dk/i18n/WG15-collection/charmaps/">
										<font face="Courier New">Keld Simonsen's WG15 archive</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<font face="Courier New">Michael Everson's </font>
								<a href="http://www.indigo.ie/egt/standards/iso10646/pdf/">
										<font face="Courier New">ISO10646-1 archive</font>
								</a>
								<font face="Courier New"> contains online versions of many of the more recent ISO 10646-1 amendments, plus many other goodies. See also his </font>
								<a href="http://www.indigo.ie/egt/standards/iso10646/ucs-roadmap.html">
										<font face="Courier New">Roadmaps to the Universal Character Set</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<font face="Courier New">An introduction into </font>
								<a href="http://www.stri.is/TC304/guidecharactersets/guideannexb.html">
										<font face="Courier New">The Universal Character Set (UCS)</font>
								</a>
								<font face="Courier New">. </font>
						</li>
						<li>
								<font face="Courier New">Otfried Cheong's essey on </font>
								<a href="http://www.cs.ust.hk/~otfried/Mule/unihan.html">
										<font face="Courier New">Han Unification in Unicode</font>
								</a>
								<font face="Courier New">
								</font>
						</li>
						<li>
								<font face="Courier New">The </font>
								<a href="http://www.ams.org/STIX/">
										<font face="Courier New">AMS STIX</font>
								</a>
								<font face="Courier New"> project is working on revising and extending the mathematical characters for Unicode 4.0 and ISO 10646-2. </font>
						</li>
						<li>
								<font face="Courier New">Jukka Korpela's </font>
								<a href="http://www.hut.fi/~jkorpela/shy.html">
										<font face="Courier New">Soft hyphen (SHY) - a hard problem?</font>
								</a>
								<font face="Courier New"> is an excellent discussion of the controversy surrounding U+00AD. </font>
						</li>
						<li>
								<font face="Courier New">James Briggs' </font>
								<a href="http://rf.net/~james/perli18n.html">
										<font face="Courier New">Perl, Unicode and I18N FAQ</font>
								</a>
								<font face="Courier New">. </font>
						</li>
				</ul>
				<p>
						<font face="Courier New">我不断地将新的材料加入这份文档, 因此请定期来查看. 欢迎所有关于改进的</font>
						<a href="mailto:Markus.Kuhn@cl.cam.ac.uk">
								<font face="Courier New">建议</font>
						</a>
						<font face="Courier New">, 以及自由软件社区里关于改善 UTF-8 支持的广告. UTF-8 用在 Linux 里是新近的事, 因此我们在将来的几个月里可以见到大量的进展.</font>
				</p>
				<p>
						<font face="Courier New">特别感谢 Ulrich Drepper 和 Bruno Haible 的有价值的注解</font>
				</p>
				<p>
						<a href="http://www.cl.cam.ac.uk/~mgk25/">
								<font face="Courier New">Markus Kuhn</font>
						</a>
						<font face="Courier New"> &lt;&lt;Markus.Kuhn@cl.cam.ac.uk&gt;<br /><small><font size="3">创建于 1999-06-04 -- 最近更新于 2000-01-15 -- http://www.cl.cam.ac.uk/~mgk25/unicode.html </font></small></font>
				</p>
		</per>
<img src ="http://www.blogjava.net/hua/aggbug/46408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-16 15:13 <a href="http://www.blogjava.net/hua/archive/2006/05/16/46408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 编程技术中汉字问题的分析及解决</title><link>http://www.blogjava.net/hua/archive/2006/05/16/46388.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Tue, 16 May 2006 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/16/46388.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/46388.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/16/46388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/46388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/46388.html</trackback:ping><description><![CDATA[
		<blockquote>
				<font face="Courier New">
						<i>在基于 Java 语言的编程中，我们经常碰到汉字的处理及显示的问题。一大堆看不懂的乱码肯定不是我们愿意看到的显示效果，怎样才能够让那些汉字正确显示呢？Java语言默认的编码方式是UNICODE，而我们中国人通常使用的文件和数据库都是基于GB2312或者BIG5等方式编码的，怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢？本文将从汉字编码的常识入手，结合Java编程实例，分析以上两个问题并提出解决它们的方案。</i>
				</font>
		</blockquote>
		<!--START RESERVED FOR FUTURE USE INCLUDE FILES-->
		<!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters -->
		<!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
		<p>
				<font face="Courier New">现在 Java 编程语言已经广泛应用于互联网世界，早在 Sun 公司开发 Java 语言的时候，就已经考虑到对非英文字符的支持了。Sun 公司公布的 Java 运行环境（JRE）本身就分英文版和国际版，但只有国际版才支持非英文字符。不过在 Java 编程语言的应用中，对中文字符的支持并非如同 Java Soft 的标准规范中所宣称的那样完美，因为中文字符集不只一个，而且不同的操作系统对中文字符的支持也不尽相同，所以会有许多和汉字编码处理有关的问题在我们进行应用开发中困扰着我们。有很多关于这些问题的解答，但都比较琐碎，并不能够满足大家迫切解决问题的愿望，关于 Java 中文问题的系统研究并不多，本文从汉字编码常识出发，分析 Java 中文问题，希望对大家解决这个问题有所帮助。</font>
		</p>
		<p>
				<a name="1">
						<span class="atitle">
								<font face="Courier New">汉字编码的常识 </font>
						</span>
				</a>
		</p>
		<p>
				<font face="Courier New">我们知道，英文字符一般是以一个字节来表示的，最常用的编码方法是 ASCII 。但一个字节最多只能区分256个字符，而汉字成千上万，所以现在都以双字节来表示汉字，为了能够与英文字符分开，每个字节的最高位一定为1，这样双字节最多可以表示64K格字符。我们经常碰到的编码方式有 GB2312、BIG5、UNICODE 等。关于具体编码方式的详细资料，有兴趣的读者可以查阅相关资料。我肤浅谈一下和我们关系密切的 GB2312 和 UNICODE。GB2312 码，中华人民共和国国家标准汉字信息交换用编码，是一个由中华人民共和国国家标准总局发布的关于简化汉字的编码，通行于中国大陆地区及新加坡，简称国标码。两个字节中，第一个字节（高字节）的值为区号值加32（20H），第二个字节（低字节）的值为位号值加32（20H），用这两个值来表示一个汉字的编码。UNICODE 码是微软提出的解决多国字符问题的多字节等长编码，它对英文字符采取前面加“0”字节的策略实现等长兼容。如 “A” 的 ASCII 码为0x41，UNICODE 就为0x00，0x41。利用特殊的工具各种编码之间可以互相转换。<br /></font>
		</p>
		<p>
				<a name="2">
						<span class="atitle">
								<font face="Courier New">Java 中文问题的初步认识 </font>
						</span>
				</a>
		</p>
		<p>
				<font face="Courier New">我们基于 Java 编程语言进行应用开发时，不可避免地要处理中文。Java 编程语言默认的编码方式是 UNICODE，而我们通常使用的数据库及文件都是基于 GB2312 编码的，我们经常碰到这样的情况：浏览基于 JSP 技术的网站看到的是乱码，文件打开后看到的也是乱码，被 Java 修改过的数据库的内容在别的场合应用时无法继续正确地提供信息。</font>
		</p>
		<p>
				<font face="Courier New">String sEnglish = “apple”;</font>
		</p>
		<p>
				<font face="Courier New">String sChinese = “苹果”;</font>
		</p>
		<p>
				<font face="Courier New">String s = “苹果 apple ”;</font>
		</p>
		<p>
				<font face="Courier New">sEnglish 的长度是5，sChinese的长度是4，而 s 默认的长度是14。对于 sEnglish来说， Java 中的各个类都支持得非常好，肯定能够正确显示。但对于 sChinese 和 s 来说，虽然 Java Soft 声明 Java 的基本类已经考虑到对多国字符的支持（默认 UNICODE 编码），但是如果操作系统的默认编码不是 UNICODE ，而是国标码等。从 Java 源代码到得到正确的结果，要经过 “Java 源代码-&gt; Java 字节码-&gt; ;虚拟机-&gt;操作系统-&gt;显示设备”的过程。在上述过程中的每一步骤，我们都必须正确地处理汉字的编码，才能够使最终的显示结果正确。</font>
		</p>
		<p>
				<font face="Courier New">“ Java 源代码-&gt; Java 字节码”，标准的 Java 编译器 javac 使用的字符集是系统默认的字符集，比如在中文 Windows 操作系统上就是 GBK ,而在 Linux 操作系统上就是ISO-8859-1，所以大家会发现在 Linux 操作系统上编译的类中源文件中的中文字符都出了问题，解决的办法就是在编译的时候添加 encoding 参数，这样才能够与平台无关。用法是</font>
		</p>
		<p>
				<font face="Courier New">javac ?Cencoding GBK。</font>
		</p>
		<p>
				<font face="Courier New">“ Java 字节码-&gt;虚拟机-&gt;操作系统”， Java 运行环境 （JRE） 分英文版和国际版，但只有国际版才支持非英文字符。 Java 开发工具包 （JDK） 肯定支持多国字符，但并非所有的计算机用户都安装了 JDK 。很多操作系统及应用软件为了能够更好的支持 Java ，都内嵌了 JRE 的国际版本，为自己支持多国字符提供了方便。</font>
		</p>
		<p>
				<font face="Courier New">“操作系统-&gt;显示设备”，对于汉字来说，操作系统必须支持并能够显示它。英文操作系统如果不搭配特殊的应用软件的话，是肯定不能够显示中文的。</font>
		</p>
		<p>
				<font face="Courier New">还有一个问题，就是在 Java 编程过程中，对中文字符进行正确的编码转换。例如，向网页输出中文字符串的时候，不论你是用</font>
		</p>
		<p>
				<font face="Courier New">out.println(string);还是用</font>
		</p>
		<p>
				<font face="Courier New">&lt;%=string%&gt;，都必须作 UNICODE 到 GBK 的转换，或者手动，或者自动。在 JSP 1.0中，可以定义输出字符集，从而实现内码的自动转换。用法是</font>
		</p>
		<p>
				<font face="Courier New">&lt;%@page contentType=”text/html;charset=gb2312” %&gt;</font>
		</p>
		<p>
				<font face="Courier New">但是在一些 JSP 版本中并没有提供对输出字符集的支持，（例如 JSP 0.92），这就需要手动编码输出了，方法非常多。最常用的方法是</font>
		</p>
		<p>
				<font face="Courier New">String s1 = request.getParameter(“keyword”);</font>
		</p>
		<p>
				<font face="Courier New">String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);</font>
		</p>
		<p>
				<font face="Courier New">getBytes 方法用于将中文字符以“ISO-8859-1”编码方式转化成字节数组，而“GBK” 是目标编码方式。我们从以ISO-8859-1方式编码的数据库中读出中文字符串 s1 ，经过上述转换过程，在支持 GBK 字符集的操作系统和应用软件中就能够正确显示中文字符串 s2 。<br /><br /></font>
				<a name="3">
						<span class="atitle">
								<font face="Courier New">Java 中文问题的表层分析及处理</font>
						</span>
				</a>
		</p>
		<table cellspacing="0" cellpadding="3" width="80%" border="1">
				<tbody>
						<tr valign="top">
								<td align="middle" width="100%" colspan="4">
										<font face="Courier New">背景 </font>
								</td>
						</tr>
						<tr valign="top">
								<td width="25%">
										<font face="Courier New">开发环境 </font>
								</td>
								<td width="25%">
										<font face="Courier New">JDK1.15 </font>
								</td>
								<td width="25%">
										<font face="Courier New">Vcafe2.0 </font>
								</td>
								<td width="25%">
										<font face="Courier New">JPadPro </font>
								</td>
						</tr>
						<tr valign="top">
								<td width="25%">
										<font face="Courier New">服务器端 </font>
								</td>
								<td width="25%">
										<font face="Courier New">NT IIS </font>
								</td>
								<td width="25%">
										<font face="Courier New">Sybase System </font>
								</td>
								<td width="25%">
										<font face="Courier New">Jconnect（JDBC） </font>
								</td>
						</tr>
						<tr valign="top">
								<td width="25%">
										<font face="Courier New">客户端 </font>
								</td>
								<td width="25%">
										<font face="Courier New">IE5.0 </font>
								</td>
								<td width="25%">
										<font face="Courier New">Pwin98 </font>
								</td>
								<td width="25%">
										<font face="Courier New">?span &gt; </font>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
				<font face="Courier New">.CLASS 文件存放在服务器端，由客户端的浏览器运行 APPLET ， APPLET 只起调入 FRAME 类等主程序的作用。界面包括 Textfield ，TextArea，List，Choice 等。</font>
		</p>
		<p>
				<font face="Courier New">I.用 JDBC 执行 SELECT 语句从服务器端读取数据（中文）后，将数据用 APPEND 方法加到 TextArea（TA） ，不能正确显示。但加到 List 中时，大部分汉字却可正确显示。</font>
		</p>
		<p>
				<font face="Courier New">将数据按“ISO-8859-1” 编码方式转化为字节数组，再按系统缺省编码方式 （Default Character Encoding） 转化为 STRING ，即可在 TA 和 List 中正确显示。</font>
		</p>
		<p>
				<font face="Courier New">程序段如下：</font>
		</p>
		<p>
				<font face="Courier New">//After reading the result from DB server，converting it to string.<br />dbbyte1 = dbstr2.getBytes(“iso-8859-1”);<br />dbstr1 = new String(dbbyte1);<br /><br />在转换字符串时不采用系统默认编码方式，而直接采用“ GBK” 或者 “GB2312” ,在 A 和 B 两种情况下，从数据库取数据都没有问题。</font>
		</p>
		<p>
				<font face="Courier New">II.处理方式与“取中文”相逆，先将 SQL 语句按系统缺省编码方式转化为字节数组，再按“ISO-8859-1”编码方式转化为 STRING ，最后送去执行，则中文信息可正确写入数据库。</font>
		</p>
		<p>
				<font face="Courier New">程序段如下：<br /></font>
		</p>
		<font face="Courier New">//Before sending statement to DB server，converting it to sql statement.<br /><br />dbbyte1 = sqlstmt.getBytes();<br /><br />sqlstmt = newString(dbbyte1,”iso-8859-1”);<br /><br />_stmt = _con.createStatement();<br /><br />_stmt.executeUpdate(sqlstmt);<br /><br />……<br /><br /></font>
		<p>
				<font face="Courier New">问题：如果客户机上存在 CLASSPATH 指向 JDK 的 CLASSES.ZIP 时（称为 A 情况），上述程序代码可正确执行。但是如果客户机只有浏览器，而没有 JDK 和 CLASSPATH 时（称为 B 情况），则汉字无法正确转换。</font>
		</p>
		<p>
				<font face="Courier New">我们的分析：</font>
		</p>
		<p>
				<font face="Courier New">1.经过测试，在 A 情况下，程序运行时系统的缺省编码方式为 GBK 或者 GB2312 。在 B 情况下，程序启动时浏览器的 JAVA 控制台中出现如下错误信息：<br /></font>
		</p>
		<font face="Courier New">Can't find resource for sun.awt.windows.awtLocalization_zh_CN<br /><br /></font>
		<p>
				<font face="Courier New">然后系统的缺省编码方式为“8859-1”。</font>
		</p>
		<p>
				<font face="Courier New">2.如果在转换字符串时不采用系统缺省编码方式，而是直接采用 “GBK” 或“GB2312”，则在 A 情况下程序仍然可正常运行，在 B 情况下，系统出现错误：<br /></font>
		</p>
		<br />
		<font face="Courier New">UnsupportedEncodingException。<br /><br /></font>
		<p>
				<font face="Courier New">3.在客户机上，把 JDK 的 CLASSES.ZIP 解压后，放在另一个目录中， CLASSPATH 只包含该目录。然后一边逐步删除该目录中的 .CLASS 文件，另一边运行测试程序，最后发现在一千多个 CLASS 文件中，只有一个是必不可少的，该文件是：<br /><br />sun.io.CharToByteDoubleByte.class。<br /><br />将该文件拷到服务器端和其它的类放在一起，并在程序的开头 IMPORT 它，在 B 情况下程序仍然无法正常运行。</font>
		</p>
		<p>
				<font face="Courier New">4.在 A 情况下，如果在 CLASSPTH 中去掉 sun.io.CharToByteDoubleByte.class ，则程序运行时测得默认编码方式为“8859-1”，否则为 “GBK” 或 “GB2312” 。</font>
		</p>
		<p>
				<font face="Courier New">如果 JDK 的版本为1.2以上的话，在 B 情况下遇到的问题得到了很好的解决，测试的步骤同上，有兴趣的读者可以尝试一下。<br /></font>
		</p>
		<p>
				<a name="4">
						<span class="atitle">
								<font face="Courier New">Java 中文问题的根源分析及解决 </font>
						</span>
				</a>
		</p>
		<p>
				<font face="Courier New">在简体中文 MS Windows 98 + JDK 1.3 下，可以用 System.getProperties() 得到 Java 运行环境的一些基本属性，类 PoorChinese 可以帮助我们得到这些属性。</font>
		</p>
		<p>
				<font face="Courier New">类 PoorChinese 的源代码：<br />public class PoorChinese {<br />}<br />            <br />执行 java PoorChinese 后，我们会得到:</font>
		</p>
		<p>
				<font face="Courier New">系统变量 file.encoding 的值为 GBK ，user.language 的值为 zh ， user.region 的值为 CN ，这些系统变量的值决定了系统默认的编码方式是 GBK 。</font>
		</p>
		<p>
				<font face="Courier New">在上述系统中，下面的代码将 GB2312 文件转换成 Big5 文件，它们能够帮助我们理解 Java 中汉字编码的转化:<br /><br />import java.io.*;<br /><br />import java.util.*;<br /><br />public class gb2big5 {<br /><br />static int iCharNum=0;<br /><br />public static void main(String[] args) {<br /><br />System.out.println("Input GB2312 file, output Big5 file.");<br /><br />if (args.length!=2) {<br /><br />System.err.println("Usage: jview gb2big5 gbfile big5file");<br /><br />System.exit(1);<br /><br />String inputString = readInput(args[0]);<br /><br />writeOutput(inputString,args[1]);<br /><br />System.out.println("Number of Characters in file: "+iCharNum+".");<br /><br />}<br /><br />static void writeOutput(String str, String strOutFile) {<br /><br />try {<br /><br />FileOutputStream fos = new FileOutputStream(strOutFile);<br /><br />Writer out = new OutputStreamWriter(fos, "Big5");<br /><br />out.write(str);<br /><br />out.close();<br /><br />}<br /><br />catch (IOException e) {<br /><br />e.printStackTrace();<br /><br />e.printStackTrace();<br /><br />}<br /><br />}<br /><br />static String readInput(String strInFile) {<br /><br />StringBuffer buffer = new StringBuffer();<br /><br />try {<br /><br />FileInputStream fis = new FileInputStream(strInFile);<br /><br />InputStreamReader isr = new InputStreamReader(fis, "GB2312");<br /><br />Reader in = new BufferedReader(isr);<br /><br />int ch;<br /><br />while ((ch = in.read()) &gt; -1) {<br /><br />iCharNum += 1;<br /><br />buffer.append((char)ch);<br /><br />}<br /><br />in.close();<br /><br />return buffer.toString();<br /><br />}<br /><br />catch (IOException e) {<br /><br />e.printStackTrace();<br /><br />return null;<br /><br />}<br /><br />}<br /><br />}<br /><br /></font>
				<font face="Courier New">编码转化的过程如下：</font>
		</p>
		<p>
				<font face="Courier New">GB2312------------------&gt;Unicode-------------&gt;Big5</font>
		</p>
		<p>
				<font face="Courier New">执行 java gb2big5 gb.txt big5.txt ，如果 gb.txt 的内容是“今天星期三”，则得到的文件 big5.txt 中的字符能够正确显示；而如果 gb.txt 的内容是“情人节快乐”，则得到的文件 big5.txt 中对应于“节”和“乐”的字符都是符号“？”（0x3F），可见 sun.io.ByteToCharGB2312 和 sun.io.CharToByteBig5 这两个基本类并没有编好。</font>
		</p>
		<p>
				<font face="Courier New">正如上例一样， Java 的基本类也可能存在问题。由于国际化的工作并不是在国内完成的，所以在这些基本类发布之前，没有经过严格的测试，所以对中文字符的支持并不像 Java Soft 所声称的那样完美。前不久，我的一位技术上的朋友发信给我说，他终于找到了 <b>Java Servlet 中文问题的根源</b>。两周以来，他一直为 Java Servlet 的中文问题所困扰，因为每面对一个含有中文字符的字符串都必须进行强制转换才能够得到正确的结果（这好象是大家公认的唯一的解决办法）。后来，他确实不想如此继续安分下去了，因为这样的事情确实不应该是高级程序员所要做的工作，他就找出 Servlet 解码的源代码进行分析，因为他怀疑问题就出在解码这部分。经过四个小时的奋斗，他终于找到了问题的根源所在。原来他的怀疑是正确的， Servlet 的解码部分完全没有考虑双字节，直接把 %XX 当作一个字符。（原来 Java Soft 也会犯这幺低级的错误！） </font>
		</p>
		<p>
				<font face="Courier New">如果你对这个问题有兴趣或者遇到了同样的烦恼的话，你可以按照他的步骤 <b>对Servlet.jar 进行修改</b>： </font>
		</p>
		<p>
				<font face="Courier New">找到源代码 HttpUtils 中的 static private String parseName ，在返回前将 sb（StringBuffer） 复制成 byte bs[] ，然后 return new String(bs,”GB2312”)。作上述修改后就需要自己解码了：</font>
		</p>
		<p>
				<font face="Courier New">HashTable form=HttpUtils .parseQueryString(request.getQueryString())或者</font>
		</p>
		<p>
				<font face="Courier New">form=HttpUtils.parsePostData(……)</font>
		</p>
		<p>
				<font face="Courier New">千万别忘了编译后放到 Servlet.jar 里面。</font>
		</p>
		<table class="no-print" cellspacing="0" cellpadding="0" align="right">
				<tbody>
						<tr align="right">
								<td>
										<font face="Courier New">
												<img height="4" alt="" src="http://www.ibm.com/i/c.gif" width="100%" />
												<br />
										</font>
										<table cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td valign="center">
																		<font face="Courier New">
																		</font>
																</td>
																<td valign="top" align="right">
																		<b>
																				<font face="Courier New" color="#996699">
																				</font>
																		</b>
																</td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="7">
						<span class="atitle">
								<font face="Courier New">关于 Java 中文问题的总结 </font>
						</span>
				</a>
		</p>
		<p>
				<font face="Courier New">
				</font>
		</p>
		<p>
				<font face="Courier New">Java 编程语言成长于网络世界，这就要求 Java 对多国字符有很好的支持。 Java 编程语言适应了计算的网络化的需求，为它能够在网络世界迅速成长奠定了坚实的基础。 Java 的缔造者 （Java Soft） 已经考虑到 Java 编程语言对多国字符的支持，只是现在的解决方案有很多缺陷在里面，需要我们付诸一些补偿性的措施。而世界标准化组织也在努力把人类所有的文字统一在一种编码之中，其中一种方案是 ISO10646 ，它用四个字节来表示一个字符。当然，在这种方案未被采用之前，还是希望 Java Soft 能够严格地测试它的产品，为用户带来更多的方便。</font>
		</p>
		<p>
				<font face="Courier New">
						<b>附</b>一个用于从数据库和网络中取出 <b>中文乱码的处理函数</b>，入参是有问题的字符串，出参是问题已经解决了的字符串。 </font>
		</p>
		<p>
				<code>技术应用者提供解决方案</code>
				<font face="Courier New">
				</font>
		</p>
<img src ="http://www.blogjava.net/hua/aggbug/46388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-16 13:20 <a href="http://www.blogjava.net/hua/archive/2006/05/16/46388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS的十八般技巧</title><link>http://www.blogjava.net/hua/archive/2006/05/15/46259.html</link><dc:creator>花</dc:creator><author>花</author><pubDate>Mon, 15 May 2006 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/hua/archive/2006/05/15/46259.html</guid><wfw:comment>http://www.blogjava.net/hua/comments/46259.html</wfw:comment><comments>http://www.blogjava.net/hua/archive/2006/05/15/46259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hua/comments/commentRss/46259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hua/services/trackbacks/46259.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">最近,经常有朋友问我一些工作中遇到的CSS问题。他们总是不能很好的控制CSS，影响CSS的效率发挥。我来分析总结一下错误所在，帮助大家更加容易使用CSS。</font>
		</p>
		<p>
				<font face="Courier New">本文总结了我开始使用CSS布局方法以来所有的技巧和兼容方案，我愿意把这些与你分享，我会重点解释一些新手容易犯的错误(包括我自己也犯过的)，如果你已经是CSS高手，这些经验技巧可能已经都知道，如果你有更多的，希望可以帮我补充。</font>
		</p>
		<h4>
				<font face="Courier New">一.使用css缩写</font>
		</h4>
		<p>
				<font face="Courier New">使用缩写可以帮助减少你CSS文件的大小，更加容易阅读。css缩写的主要规则请参看《</font>
				<a href="http://www.w3cn.org/article/tips/2005/103.html" target="new">
						<font face="Courier New">常用css缩写语法总结</font>
				</a>
				<font face="Courier New">》，这里就不展开描述。</font>
		</p>
		<h4>
				<font face="Courier New">二.明确定义单位，除非值为0</font>
		</h4>
		<p>
				<font face="Courier New">忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写width="100"，但是在CSS中，你必须给一个准确的单位，比如：width:100px width:100em。只有两个例外情况可以不定义单位：行高和0值。除此以外，其他值都必须紧跟单位，注意，不要在数值和单位之间加空格。</font>
		</p>
		<h4>
				<font face="Courier New">三.区分大小写</font>
		</h4>
		<p>
				<font face="Courier New">当在XHTML中使用CSS，CSS里定义的元素名称是区分大小写的。为了避免这种错误，我建议所有的定义名称都采用小写。</font>
		</p>
		<p>
				<font face="Courier New">class和id的值在HTML和XHTML中也是区分大小写的，如果你一定要大小写混合写，请仔细确认你在CSS的定义和XHTML里的标签是一致的。</font>
		</p>
		<h4>
				<font face="Courier New">四.取消class和id前的元素限定</font>
		</h4>
		<p>
				<font face="Courier New">当你写给一个元素定义class或者id，你可以省略前面的元素限定，因为ID在一个页面里是唯一的，而clas s可以在页面中多次使用。你限定某个元素毫无意义。例如：</font>
		</p>
		<span class="code">
				<font face="Courier New">div#content { /* declarations */ } <br />fieldset.details { /* declarations */ } </font>
		</span>
		<p>
				<font face="Courier New">可以写成</font>
		</p>
		<span class="code">
				<font face="Courier New">#content { /* declarations */ } <br />.details { /* declarations */ } </font>
		</span>
		<p>
				<font face="Courier New">这样可以节省一些字节。</font>
		</p>
		<h4>
				<font face="Courier New">五.默认值</font>
		</h4>
		<p>
				<font face="Courier New">通常padding的默认值为0，background-color的默认值是transparent。但是在不同的浏览器默认值可能不同。如果怕有冲突，可以在样式表一开始就先定义所有元素的margin和padding值都为0，象这样：</font>
		</p>
		<span class="code">
				<font face="Courier New">* { <br />margin:0; <br />padding:0; <br />} </font>
		</span>
		<h4>
				<font face="Courier New">六.不需要重复定义可继承的值</font>
		</h4>
		<p>
				<font face="Courier New">CSS中，子元素自动继承父元素的属性值，象颜色、字体等，已经在父元素中定义过的，在子元素中可以直接继承，不需要重复定义。但是要注意，浏览器可能用一些默认值覆盖你的定义。</font>
		</p>
		<h4>
				<font face="Courier New">七.最近优先原则</font>
		</h4>
		<p>
				<font face="Courier New">如果对同一个元素的定义有多种，以最接近(最小一级)的定义为最优先，例如有这么一段代码</font>
		</p>
		<span class="code">
				<p class="update">
						<font face="Courier New">Update: Lorem ipsum dolor set</font>
				</p>
		</span>
		<p>
				<font face="Courier New">在CSS文件中，你已经定义了元素p，又定义了一个class"update"</font>
		</p>
		<span class="code">
				<font face="Courier New">p { <br />margin:1em 0; <br />font-size:1em; <br />color:#333; <br />} <br />.update { <br />font-weight:bold; <br />color:#600; <br />} <br /></font>
		</span>
		<p>
				<font face="Courier New">这两个定义中，class="update"将被使用，因为class比p更近。你可以查阅W3C的《 Calculating a selector’s specificity》 了解更多。</font>
		</p>
		<h4>
				<font face="Courier New">八.多重class定义</font>
		</h4>
		<p>
				<font face="Courier New">一个标签可以同时定义多个class。例如：我们先定义两个样式，第一个样式背景为#666；第二个样式有10 px的边框。</font>
		</p>
		<span class="code">
				<font face="Courier New">.one{width:200px;background:#666;}<br />.two{border:10px solid #F00;} </font>
		</span>
		<p>
				<font face="Courier New">在页面代码中，我们可以这样调用</font>
		</p>
		<font face="Courier New">
				<span class="code">&lt;div class="one two"&gt;&lt;/div&gt;</span>
		</font>
		<p>
				<font face="Courier New">这样最终的显示效果是这个div既有#666的背景，也有10px的边框。是的，这样做是可以的，你可以尝试一下。</font>
		</p>
		<h4>
				<font face="Courier New">九.使用子选择器(descendant selectors)</font>
		</h4>
		<p>
				<font face="Courier New">CSS初学者不知道使用子选择器是影响他们效率的原因之一。子选择器可以帮助你节约大量的class定义。我们来看下面这段代码：</font>
		</p>
		<span class="code">
				<font face="Courier New">&lt;div id="subnav"&gt; <br />&lt;ul&gt; <br />&lt;li class="subnavitem"&gt; &lt;a href="#" class="subnavitem"&gt;Item 1&lt;/a&gt;&lt;/li&gt;&gt; <br />&lt;li class="subnavitemselected"&gt; &lt;a href="#" class="subnavitemselected"&gt; Item 1&lt;/a&gt; &lt;/li&gt; <br />&lt;li class="subnavitem"&gt; &lt;a href="#" class="subnavitem"&gt; Item 1&lt;/a&gt; &lt;/li&gt;<br />&lt;/ul&gt; <br />&lt;/div&gt; </font>
		</span>
		<p>
				<font face="Courier New">这段代码的CSS定义是：</font>
		</p>
		<span class="code">
				<font face="Courier New">div#subnav ul { /* Some styling */ } <br />div#subnav ul li.subnavitem { /* Some styling */ } <br />div#subnav ul li.subnavitem a.subnavitem { /* Some styling */ } <br />div#subnav ul li.subnavitemselected { /* Some styling */ } <br />div#subnav ul li.subnavitemselected a.subnavitemselected { /* Some styling */ } </font>
		</span>
		<p>
				<font face="Courier New">你可以用下面的方法替代上面的代码</font>
		</p>
		<span class="code">
				<font face="Courier New">&lt;ul id="subnav"&gt; <br />&lt;li&gt; &lt;a href="#"&gt; Item 1&lt;/a&gt; &lt;/li&gt; <br />&lt;li class="sel"&gt; &lt;a href="#"&gt; Item 1&lt;/a&gt; &lt;/li&gt; <br />&lt;li&gt; &lt;a href="#"&gt; Item 1&lt;/a&gt; &lt;/li&gt; <br />&lt;/ul&gt; </font>
		</span>
		<p>
				<font face="Courier New">样式定义是：</font>
		</p>
		<span class="code">
				<font face="Courier New">#subnav { /* Some styling */ } <br />#subnav li { /* Some styling */ } <br />#subnav a { /* Some styling */ } <br />#subnav .sel { /* Some styling */ } <br />#subnav .sel a { /* Some styling */ } </font>
		</span>
		<p>
				<font face="Courier New">用子选择器可以使你的代码和CSS更加简洁、更加容易阅读。</font>
		</p>
		<h4>
				<font face="Courier New">十.不需要给背景图片路径加引号</font>
		</h4>
		<p>
				<font face="Courier New">为了节省字节，我建议不要给背景图片路径加引号，因为引号不是必须的。例如：</font>
		</p>
		<font face="Courier New">
				<span class="code">background:url("images/***.gif") #333;</span>
		</font>
		<p>
				<font face="Courier New">可以写为</font>
		</p>
		<font face="Courier New">
				<span class="code">background:url(images/***.gif) #333;</span>
		</font>
		<p>
				<font face="Courier New">如果你加了引号，反而会引起一些浏览器的错误。</font>
		</p>
		<h4>
				<font face="Courier New">十一.组选择器(Group selectors)</font>
		</h4>
		<p>
				<font face="Courier New">当一些元素类型、class或者id都有共同的一些属性，你就可以使用组选择器来避免多次的重复定义。这可以节省不少字节。 </font>
		</p>
		<p>
				<font face="Courier New">
				</font>
		</p>
		<p>
				<font face="Courier New">例如：定义所有标题的字体、颜色和margin，你可以这样写：</font>
		</p>
		<span class="code">
				<font face="Courier New">h1,h2,h3,h4,h5,h6 { <br />font-family:"Lucida Grande",Lucida,Arial,Helvetica,sans-serif; <br />color:#333; <br />margin:1em 0; <br />} </font>
		</span>
		<p>
				<font face="Courier New">如果在使用时，有个别元素需要定义独立样式，你可以再加上新的定义，可以覆盖老的定义，例如：</font>
		</p>
		<span class="code">
				<font face="Courier New">h1 { font-size:2em; } <br />h2 { font-size:1.6em; } </font>
		</span>
		<h4>
				<font face="Courier New">十二.用正确的顺序指定链接的样式</font>
		</h4>
		<p>
				<font face="Courier New">当你用CSS来定义链接的多个状态样式时，要注意它们书写的顺序，正确的顺序是：:link :visited :hover :active。抽取第一个字母是"LVHA"，你可以记忆成"LoVe HAte"(喜欢讨厌)。为什么这么定义，可以参考Eric Meyer的《</font>
				<a href="http://www.meyerweb.com/eric/css/link-specificity.html" target="new">
						<font face="Courier New">Link Specificity</font>
				</a>
				<font face="Courier New">》。</font>
		</p>
		<p>
				<font face="Courier New">如果你的用户需要用键盘来控制，需要知道当前链接的焦点，你还可以定义:focus属性。:focus属性的效果也取决与你书写的位置，如果你希望聚焦元素显示:hover效果，你就把:focus写在:hover前面；如果你希望聚焦效果替代:hover效果，你就把:focus放在:hover后面。</font>
		</p>
		<h4>
				<font face="Courier New">十三.清除浮动</font>
		</h4>
		<p>
				<font face="Courier New">一个非常常见的CSS问题，定位使用浮动的时候，下面的层被浮动的层所覆盖，或者层里嵌套的子层超出了外层的范围。</font>
		</p>
		<p>
				<font face="Courier New">通常的解决办法是在浮动层后面添加一个额外元素，例如一个div或者一个br，并且定义它的样式为clear: both。这个办法有一点牵强，幸运的是还有一个好办法可以解决，参看这篇文章《</font>
				<a href="http://www.positioniseverything.net/easyclearing.html" target="new">
						<font face="Courier New">How To Clear Floats Without Structural Markup</font>
				</a>
				<font face="Courier New">》(注：本站将尽快翻译此文)。</font>
		</p>
		<p>
				<font face="Courier New">上面2种方法可以很好解决浮动超出的问题，但是如果当你真的需要对层或者层里的对象进行clear的时候怎么办？一种简单的方法就是用overflow属性，这个方法最初的发表在《</font>
				<a href="http://www.sitepoint.com/blog-post-view?id=238086" target="new">
						<font face="Courier New">Simple Clearing of Floats</font>
				</a>
				<font face="Courier New">》，又在《</font>
				<a href="http://www.mezzoblue.com/archives/2005/03/03/clearance/" target="new">
						<font face="Courier New">Clearance</font>
				</a>
				<font face="Courier New">》和《</font>
				<a href="http://annevankesteren.nl/archives/2005/03/clearing-floats" target="new">
						<font face="Courier New">Super simple clearing floats</font>
				</a>
				<font face="Courier New">》中被广泛讨论。</font>
		</p>
		<p>
				<font face="Courier New">上面那一种clear方法更适合你，要看具体的情况，这里不再展开论述。另外关于float的应用，一些优秀的文章已经说得很清楚，推荐你阅读：《</font>
				<a href="http://css.maxdesign.com.au/floatutorial/" target="new">
						<font face="Courier New">Floatutorial</font>
				</a>
				<font face="Courier New">》、《</font>
				<a href="http://www.complexspiral.com/publications/containing-floats/" target="new">
						<font face="Courier New">Containing Floats</font>
				</a>
				<font face="Courier New">》和《</font>
				<a href="http://www.autisticcuckoo.net/archive.php?id=2004/12/10/floating" target="new">
						<font face="Courier New">Float Layouts</font>
				</a>
				<font face="Courier New">》</font>
		</p>
		<h4>
				<font face="Courier New">十四.横向居中(centering)</font>
		</h4>
		<p>
				<font face="Courier New">这是一个简单的技巧，但是值得再说一遍，因为我看见太多的新手问题都是问这个：CSS如何横向居中？你需要定义元素的宽，并且定义横向的margin，如果你的布局包含在一个层(容器)中，就象这样：</font>
		</p>
		<div id="wrap">
				<font face="Courier New">
						<!-- 你的布局这里开始 -->
				</font>
		</div>
		<p>
				<font face="Courier New">你可以这样定义使它横向居中：</font>
		</p>
		<span class="code">
				<font face="Courier New">#wrap { <br />width:760px; /* 修改为你的层的宽度 */ <br />margin:0 auto; <br />} </font>
		</span>
		<p>
				<font face="Courier New">但是IE5/Win不能正确显示这个定义，我们采用一个非常有用的技巧来解决：用text-align属性。就象这样：</font>
		</p>
		<span class="code">
				<font face="Courier New">body { <br />text-align:center; <br />} <br />#wrap { <br />width:760px; /* 修改为你的层的宽度 */ <br />margin:0 auto; <br />text-align:left; <br />} </font>
		</span>
		<p>
				<font face="Courier New">第一个body的text-align:center; 规则定义IE5/Win中body的所有元素居中(其他浏览器只是将文字居中) ，第二个text-align:left;是将#warp中的文字居左。</font>
		</p>
		<h4>
				<font face="Courier New">十五.导入(Import)和隐藏CSS</font>
		</h4>
		<p>
				<font face="Courier New">因为老版本浏览器不支持CSS，一个通常的做法是使用@import技巧来把CSS隐藏起来。例如：</font>
		</p>
		<span class="code">
				<font face="Courier New">@import url("main.css"); </font>
		</span>
		<p>
				<font face="Courier New">然而，这个方法对IE4不起作用，这让我很是头疼了一阵子。后来我用这样的写法：</font>
		</p>
		<span class="code">
				<font face="Courier New">@import "main.css"; </font>
		</span>
		<p>
				<font face="Courier New">这样就可以在IE4中也隐藏CSS了，呵呵，还节省了5个字节呢。想了解@import语法的详细说明，可以看这里《</font>
				<a href="http://centricle.com/ref/css/filters/" target="new">
						<font face="Courier New">centricle’s css filter chart</font>
				</a>
				<font face="Courier New">》</font>
		</p>
		<h4>
				<font face="Courier New">十六.针对IE的优化</font>
		</h4>
		<p>
				<font face="Courier New">有些时候，你需要对IE浏览器的bug定义一些特别的规则，这里有太多的CSS技巧(hacks)，我只使用其中的两种方法，不管微软在即将发布的IE7 beta版里是否更好的支持CSS，这两种方法都是最安全的。</font>
		</p>
		<ul>
				<li>
						<font face="Courier New">1.注释的方法 </font>
						<ul>
								<li>
										<font face="Courier New">(a)在IE中隐藏一个CSS定义，你可以使用子选择器(child selector):<br /></font>
										<span class="code">
												<font face="Courier New">html&gt;body p { <br />/* 定义内容 */ <br />} </font>
										</span>
								</li>
								<li>
										<font face="Courier New">(b)下面这个写法只有IE浏览器可以理解(对其他浏览器都隐藏) <br /></font>
										<span class="code">
												<font face="Courier New">* html p { <br />/* declarations */ <br />} </font>
										</span>
								</li>
								<li>
										<font face="Courier New">(c)还有些时候，你希望IE/Win有效而IE/Mac隐藏，你可以使用"反斜线"技巧：<br /></font>
										<span class="code">
												<font face="Courier New">/* \*/ <br />* html p { <br />declarations <br />} <br />/* */ </font>
										</span>
								</li>
						</ul>
				</li>
				<li>
						<font face="Courier New">2.条件注释(conditional comments)的方法 </font>
						<p>
								<font face="Courier New">另外一种方法，我认为比CSS　Hacks更加经得起考验就是采用微软的私有属性条件注释(conditional comments)。用这个方法你可以给IE单独定义一些样式，而不影响主样式表的定义。就象这样：</font>
						</p>
						<span class="code">
								<font face="Courier New">&lt;!--[if IE]&gt; <br />&lt;link rel="stylesheet" type="text/css" href="ie.css" /&gt; <br />&lt;![endif]--&gt; </font>
						</span>
				</li>
		</ul>
		<h4>
				<font face="Courier New">十七.调试技巧：层有多大？</font>
		</h4>
		<p>
				<font face="Courier New">当调试CSS发生错误，你就要象排版工人，逐行分析CSS代码。我通常在出问题的层上定义一个背景颜色，这样就能很明显看到层占据多大空间。有些人建议用border，一般情况也是可以的，但问题是，有时候border 会增加元素的尺寸，border-top和boeder-bottom会破坏纵向margin的值，所以使用background更加安全些。 </font>
		</p>
		<p>
				<font face="Courier New">另外一个经常出问题的属性是outline。outline看起来象boeder，但不会影响元素的尺寸或者位置。只有少数浏览器支持outline属性，我所知道的只有Safari、OmniWeb、和Opera。</font>
		</p>
		<h4>
				<font face="Courier New">十八.CSS代码书写样式</font>
		</h4>
		<p>
				<font face="Courier New">在写CSS代码的时候，对于缩进、断行、空格，每个人有每个人的书写习惯。在经过不断实践后，我决定采用下面这样的书写样式：</font>
		</p>
		<span class="code">
				<font face="Courier New">selector1, <br />selector2 { <br />property:value; <br />} </font>
		</span>
		<p>
				<font face="Courier New">当使用联合定义时，我通常将每个选择器单独写一行，这样方便在CSS文件中找到它们。在最后一个选择器和大括号{之间加一个空格，每个定义也单独写一行，分号直接在属性值后，不要加空格。</font>
		</p>
		<p>
				<font face="Courier New">我习惯在每个属性值后面都加分号，虽然规则上允许最后一个属性值后面可以不写分号，但是如果你要加新样式时容易忘记补上分号而产生错误，所以还是都加比较好。</font>
		</p>
		<p>
				<font face="Courier New">最后，关闭的大括号}单独写一行。</font>
		</p>
		<p>
				<font face="Courier New">空格和换行有助与阅读。</font>
		</p>
<img src ="http://www.blogjava.net/hua/aggbug/46259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hua/" target="_blank">花</a> 2006-05-15 18:06 <a href="http://www.blogjava.net/hua/archive/2006/05/15/46259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>