<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4063452417742388327</id><updated>2012-02-16T16:36:45.478+08:00</updated><category term='透明度'/><category term='jQuery tools'/><category term='value'/><category term='黑头'/><category term='oracel'/><category term='软件工程'/><category term='news'/><category term='css sprite'/><category term='English'/><category term='web'/><category term='性能对比'/><category term='汽车'/><category term='Raphael'/><category term='adobe'/><category term='补丁'/><category term='demo'/><category term='Axure'/><category term='Rendering Engine'/><category term='界面'/><category term='firefox'/><category term='test'/><category term='发布'/><category term='窗口大小'/><category term='download'/><category term='netbeans 6.7'/><category term='网站效果'/><category term='browser'/><category term='美工设计'/><category term='sun'/><category term='image'/><category term='日程管理'/><category term='Html code 规范'/><category term='feeling'/><category term='hack'/><category term='离线存储'/><category term='web 框架'/><category term='Konami'/><category term='jQuery'/><category term='other'/><category term='CSS'/><category term='java'/><category term='Google Wave'/><category term='总结'/><category term='UCD'/><category term='界面需求'/><category term='浏览器'/><category term='game'/><category term='脚本攻击'/><category term='Google'/><category term='RMI'/><category term='proptotype'/><category term='netbeans'/><category term='心理'/><category term='美容'/><category term='netbeans news'/><category term='bar'/><category term='读后感'/><category term='IE8'/><category term='kernel'/><category term='search'/><category term='IE'/><category term='JSF'/><category term='javaScript'/><category term='plugins'/><category term='Google chrome'/><category term='love'/><category term='破解'/><category term='Google O3D'/><title type='text'>繠蝶冰緣</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default?start-index=101&amp;max-results=100'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>416</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-5746048457220104229</id><published>2009-06-24T09:16:00.001+08:00</published><updated>2009-06-24T09:19:16.856+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='总结'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>CSS hack 初学小结</title><content type='html'>&lt;div&gt;&lt;b&gt;什么是浏览器HACK：&lt;/b&gt;当我们使用不同的浏览器（Firefox，IE7， IE6， IE 8, Safari, Opera, chrome）访问同一个网站，或者页面的时候，会出现一些不兼容的问题，有的显示出来正常，有的显示出来不正常，我们在编写CSS的时候会很恼火，刚修复了这个浏览器的问题，结果另外一个浏览器却出了新问题。而HACK就是一种办法，能让你在一个CSS里面独立的写支持不同浏览器的样式。这下就和谐了。呵呵！&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第一个HACK，IE FF 所有浏览器 公用（其实也不算是HACK）&lt;/div&gt;&lt;div&gt;height:100px;&lt;/div&gt;&lt;div&gt;第二个HACK IE6专用&lt;/div&gt;&lt;div&gt;_height:100px;&lt;/div&gt;&lt;div&gt;第三个HACK IE6 IE7公用&lt;/div&gt;&lt;div&gt;*height:100px;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;介绍完了这三个HACK了，下面我们再来看看如何在一个样式里分别给一个属性定义IE6 IE7 FF专用的HACK，看下面的代码，顺序不能错哦：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;程序代码&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;height:100px;&lt;/div&gt;&lt;div&gt;*height:120px;&lt;/div&gt;&lt;div&gt;_height:150px;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;下面我简单解释一下各浏览器怎样理解这三个属性：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在FF下，第2、3个属性FF不认识，所以它读的是 height:100px;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在IE7下，第三个属性IE7不认识，所以它读第1、2个属性，又因为第二个属性覆盖了第一个属性，所以IE7最终读出的是第2个属性 *height:120px;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在IE6下，三个属性IE6都认识，所以三个属性都可以读取，又因为第三个属性覆盖掉前2个属性，所以IE6最终读取的是第三个属性。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;CSS Hack 的内置与外置写法&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;外置：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;.main{ float:left;#float:none;_float:none;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;html*.main{ float:left;#float:none;_float:none; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;*+html .main{ float:left;#float:none;_float:none; } &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* html .main{ float:left;#float:none;_float:none; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    * 第1行给Firefox以及其他浏览器看&lt;/div&gt;&lt;div&gt;    * 第2行给safari/IE6/iE7看，如果safari/IE6/iE7 视觉效果不统一，就要在后面跟IE6/IE7的定义&lt;/div&gt;&lt;div&gt;    * 第3行给IE7看&lt;/div&gt;&lt;div&gt;    * 第4行给IE6以及更老的版本看&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;内置：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;.main{ float:left;#float:none;_float:none;[float:none;]float:none; }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    * 第1个float给Firefox以及其他浏览器看&lt;/div&gt;&lt;div&gt;    * 第2个加#的float给IE7看&lt;/div&gt;&lt;div&gt;    * 第3个加_的float给IE6以及更老的版本看&lt;/div&gt;&lt;div&gt;    * 第4个加[的float给safari看&lt;/div&gt;&lt;div&gt;    * 第5个加]的float给IE看&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;仅 Safari 和 Opera 识别的 Hack&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;@media all and (min-width: 0px)&lt;/div&gt;&lt;div&gt;{/* Safari and Opera  rules here */}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;或者&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;@media screen and (-webkit-min-device-pixel-ratio:0)&lt;/div&gt;&lt;div&gt;{/* Safari and Opera rules here */}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;注：这里所指代的 Safari 和 Opera 一般为最新版本。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;仅 Firefox 3 和 IE7 识别的 Hack&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;selector, x:-moz-any-link, x:default&lt;/div&gt;&lt;div&gt;{/* Firefox 3  and IE7 rules here */}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;使用方法例：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;@media screen and (-webkit-min-device-pixel-ratio:0)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;.box{width:100px;}&lt;/div&gt;&lt;div&gt;/* Safari and Opera rules here */&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-5746048457220104229?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/5746048457220104229/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/css-hack.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5746048457220104229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5746048457220104229'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/css-hack.html' title='CSS hack 初学小结'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-5382828304702797117</id><published>2009-06-23T17:38:00.002+08:00</published><updated>2009-06-24T10:07:55.447+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>firefox, IE, safari, chrome, opare用之初体验</title><content type='html'>&lt;div&gt;干这行的，不装3个以上浏览器未免显太不够专业了，于是今天安装了safari&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;。本人一共装了firefox, IE8(可当IE7)，Opera， Safari and chrome五款&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;主流浏览器。每次写页面的时候都要在不用的浏览器上进行测试，修改。最&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;终使其在每一种浏览器下的style保持一致。可惜只安装了个XP，不能体验其&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;他系统下的其他浏览器中style 的差异，未免有些遗憾。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;才安装好safari的时候，发现好像chrome啊。。。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;用下来还是喜欢firefox,毕竟firebug用下来比较hi&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 12px; "&gt;，但发现FF一旦访问某些网页时就会泄漏，只有马上看完，关了，很是不爽。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;源码的修改，定位和查看：除了FF， IE8可以定位查看并进行修改html和css代码，然后实时显示，其他的暂时没发现，用起来不爽，一看就是一堆源码，必须花时间从一堆源码中找到到你要看的部分。其中在Firebug中修改是即时显示的，不用回车，而且显示出来padding和margin的大小，但IE8 只是显示个难看的定位框框，修改时候还要按回车，然后等待浏览器缓慢的反应。。。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;javaScript：&lt;/div&gt;&lt;div&gt;众多浏览器现在都支持了javaScript的调试，但是一开始用的是IE 8，发现很爽，后面改用firebug，更是爽，其他的没用过。不过无非都是差不多的，只是感觉firebug更加速度和人性化，界面也很好看。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-5382828304702797117?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/5382828304702797117/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/firefox-ie-safari-chrome-opare.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5382828304702797117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5382828304702797117'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/firefox-ie-safari-chrome-opare.html' title='firefox, IE, safari, chrome, opare用之初体验'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-7975345440008302771</id><published>2009-06-23T14:44:00.001+08:00</published><updated>2009-06-23T14:46:39.886+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='透明度'/><title type='text'>CSS半透明度设置,兼容Firefox, IE, Chrome, Opera and Safari</title><content type='html'>&lt;div class="date"&gt;          &lt;div class="day"&gt;IE：                              filter:alpha(opacity=sqlN)                   其中 sqlN的值域为[0, 100]&lt;/div&gt;&lt;/div&gt;&lt;div class="storycontent"&gt; &lt;p&gt;Firefox：                   -moz-opacity:sqlN                                   其中sqlN的值域为[0, 1]&lt;/p&gt; &lt;p&gt;Chrome, Opera and Safari：opacity:sqlN                                                 其中sqlN的值域为[0, 1]&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-7975345440008302771?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/7975345440008302771/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/cssfirefox-ie-chrome-opera-and-safari.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/7975345440008302771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/7975345440008302771'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/cssfirefox-ie-chrome-opera-and-safari.html' title='CSS半透明度设置,兼容Firefox, IE, Chrome, Opera and Safari'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-199543864416980042</id><published>2009-06-23T14:05:00.000+08:00</published><updated>2009-06-23T14:06:35.498+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><title type='text'>简述JSF测试框架</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 宋体; font-size: 12px; "&gt;&lt;div class="m_l_cont_title" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 18px; padding-right: 0px; padding-bottom: 6px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: center; border-bottom-style: solid; border-bottom-color: rgb(211, 211, 211); "&gt;&lt;h1 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; font-family: 黑体; font-size: 20px; "&gt;&lt;br /&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div class="m_l_cont_note" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 0px; padding-bottom: 16px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: center; color: rgb(82, 82, 82); "&gt;&lt;a href="http://developer.51cto.com/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; outline-style: none; color: rgb(204, 0, 0); text-decoration: none; "&gt;http://developer.51cto.com&lt;/a&gt;  2009-06-22 15:52  网络  中国IT实验室 &lt;/div&gt;&lt;div class="m_l_cont_note1" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 4px; padding-left: 12px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: rgb(211, 211, 211); border-right-color: rgb(211, 211, 211); border-bottom-color: rgb(211, 211, 211); border-left-color: rgb(211, 211, 211); background-color: rgb(255, 255, 255); line-height: 24px; color: rgb(0, 102, 0); "&gt;&lt;ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; background-image: url(http://www.51cto.com/images/art/images/dt.gif); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; background-position: 0% 50%; "&gt;&lt;span class="fa" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 12px; color: rgb(204, 0, 0); "&gt;摘要：&lt;/span&gt;本文介绍JSF测试框架，包括介绍JSF测试框架需要具备的特性和测试框架的分类等。&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="m_l_cont_text" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 0px; padding-bottom: 6px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 14px; line-height: 26px; "&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;因为在容器以外测试JSF组件有所限制，所以大家一直认为对于JSF应用进行单元测试是困难的。多数web层的测试框架遵循黑盒测试方式，开发者用web组件编写测试类来验证渲染的HTML输出是否符合预期。 HtmlUnit，HttpUnit，Canoo WebTest和Selenium等框架都属于这个类型。这些框架的局限在于它们仅仅只能测试web应用的客户端。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;但是这种现象已经随着近来发布的JSFUnit和其它一些JSF测试框架，如Shale Test和JSF Extensions而改变了。这些测试框架支持对web应用的客户端和服务器端组件的白盒测试。并且，一些项目，如Eclipse Web Tools Platform (WTP)和 JXInsight 已开始协助JSF应用的开发和测试了。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;与其它的单元测试框架一样，一个典型的JSF测试框架需要具备以下特性：&lt;br /&gt;◆可在容器之外独立的运行一个测试用例，可从一个类似Eclipse 或NetBeans的IDE里面运行测试用例，以促进测试驱动开发（TDD）。 &lt;br /&gt;◆可测试完整的HTTP请求－响应生命周期。&lt;br /&gt;◆与构建工具如Ant或Maven集成 ，从而在一个自动构建和持续集成的环境下运行单元测试。&lt;br /&gt;&lt;br /&gt;测试框架还需支持JSF的特定需求，如：&lt;br /&gt;◆在测试方法中调用JSF API，而不是检查HTML输出或客户端DOM对象。&lt;br /&gt;◆通过验证用户在表单上的输入和访问正确的页面视图来导航测试。&lt;br /&gt;◆验证action是否按预期执行，以及错误情况是否显示预期的错误消息。&lt;br /&gt;◆即使rendered属性被设置为假（组件不在web浏览器上渲染但仍在服务器端保存状态）时依然可以验证JSF组件。&lt;br /&gt;◆验证XML配置文件(faces-config.xml 等)是否被正确加载。&lt;br /&gt;&lt;br /&gt;JSF测试框架&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;JSFUnit构建在HttpUnit和Apache Cactus之上，允许JSF应用和JSF AJAX组件的综合测试和调试。它可以在同一个测试类里测试JSF产品的客户端和服务器端。有了JSFUnit API，测试类方法可以提交表单数据，并且验证管理的bean是否被正确更新。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;JSFUnit包括一个JSF静态分析测试套件用来验证JSF配置文件，以确保在运行时产生问题之前就能识别出任何与配置相关的问题。它还提供了 JSFTimer组件来执行JSF生命周期的性能分析。它可被应用于跟踪JSF生命周期的每个阶段对于一个指定的web请求的响应时间，并断言该响应时间在SLA限定之内。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;JSFUnit支持RichFaces 和Ajax4jsf 组件。此框架的Beta 1版本在上月发布，第二Beta版本计划在下个月末发布。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;Shale 测试框架作为一个Apache项目，提供了对Servlet和JSF组件的mock对象实现。这些基础的测试类可应用于测试Shale框架类以及构建于该框架之上的JSF应用组件。Shale测试可用于编写独立的单元测试来运行ViewController 接口暴露的方法。因为为一个ViewController 组件搭建运行环境很复杂，所以Shale测试是很有用的。以下是Shale&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;测试框架的主要类：&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;AbstractJsfTestCase：这是对web应用的Servlet和JSF组件进行单元测试的基础测试类 &lt;br /&gt;AbstractViewControllerTestCase: 这个类作为AbstractJsfTestCase的扩展，提供了对使用Viewcontroller实现类的常用场景进行测试所需的有效方法。 &lt;br /&gt;还有其它JSF web组件的mock实现，叫做为MockApplication，MockExternalContext和MockFacesContext。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;Shale测试还与Spring框架进行了集成，允许JSF组件被绑定为管理bean或Spring bean。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;JSF Extensions项目是一个无UI组件的集合，它扩展了基于JSF 1.2的web应用的功能。它使用JUnit，HTMLUnit和Cactus进行自动测试。框架的Test-Time模块为JSF 1.2提供mock对象。Design-Time模块具有JSF热部署功能，能停止和重启应用而无需经历构建和重部署周期。这个基于JSF PhaseListener接口的特性会使得所有的配置文件和类被重载。这些使得开发者能在编写JSF应用时遵循一种测试驱动迭代JSF开发方式。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;工具&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;还有一些开发工具也辅助JSF应用的开发和性能检测。JInspired 组的JXInsight提供了JSF跟踪和性能检测特性，该特性基于PhaseListener接口。在JSF应用中使用这个跟踪监听器，开发者和web 管理员可以对于一个JSF请求收集到例如跟踪栈、java调用栈和运行时UIComponent的层次关系等信息。&lt;/p&gt;&lt;p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-indent: 28px; "&gt;Eclipse WTP 项目里的JSF工具的子项目还提供了支持开发和部署基于JSF的web应用的工具，如Visual JSF Page Editor和Faces Config Editor。&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-199543864416980042?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/199543864416980042/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/jsf_23.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/199543864416980042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/199543864416980042'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/jsf_23.html' title='简述JSF测试框架'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-1489991435157530793</id><published>2009-06-23T14:02:00.000+08:00</published><updated>2009-06-23T14:03:20.916+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery tools'/><title type='text'>Jquery Tools——不可错过的Jquery UI库</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: georgia; color: rgb(0, 34, 0); font-size: 15px; "&gt;&lt;div class="aw-tit clearfix" style="margin-top: 0px; margin-right: auto; margin-bottom: 0px; margin-left: auto; display: block; padding-top: 1px; font-size: 0.9em; color: rgb(102, 102, 102); "&gt;&lt;div class="aw-meta" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; float: left; width: 695px; "&gt;&lt;div class="meta-small" style="margin-top: 6px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;发表于: &lt;a href="http://css9.net/category/example/jquery/" title="查看 Jquery 的全部文章" rel="category tag" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 34, 0); text-decoration: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "&gt;Jquery&lt;/a&gt;, &lt;a href="http://css9.net/category/example/" title="查看 有用的示例 的全部文章" rel="category tag" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 34, 0); text-decoration: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "&gt;有用的示例&lt;/a&gt; | 作者: &lt;a href="http://css9.net/author/admin/" title="由 IIduce 发表" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 34, 0); text-decoration: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; "&gt;IIduce&lt;/a&gt;&lt;/div&gt;&lt;div class="meta-small" style="margin-top: 6px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="sfaw" style="margin-top: 5px; margin-right: 5px; margin-bottom: 5px; margin-left: 5px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 187); width: 809px; font-size: 12px; border-top-width: 1px; border-top-style: dotted; border-top-color: rgb(204, 204, 204); border-left-style: none; border-left-width: initial; border-left-color: initial; border-right-style: none; border-right-width: initial; border-right-color: initial; border-bottom-width: 1px; border-bottom-style: dotted; border-bottom-color: rgb(204, 204, 204); padding-top: 4px; padding-right: 26px; padding-bottom: 3px; padding-left: 8px; line-height: 2em; background-position: initial initial; "&gt;&lt;div id="satg" style="margin-top: 0px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post clearfix" style="margin-top: 25px; margin-right: auto; margin-bottom: 30px; margin-left: auto; display: block; "&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;/p&gt;&lt;center style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;img src="http://www.webresourcesdepot.com/wp-content/uploads/image/jquery-tools.jpg" style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(206, 212, 202); border-right-color: rgb(206, 212, 202); border-bottom-color: rgb(206, 212, 202); border-left-color: rgb(206, 212, 202); padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; " /&gt;&lt;/center&gt;&lt;br /&gt;&lt;a href="http://flowplayer.org/tools/" onclick="javascript:pageTracker._trackPageview('/outbound/article/flowplayer.org');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools&lt;/a&gt;是一组基于Jquery构建的用户界面常用组件的集合。通过使用Jquery Tools，网站前端开发无疑会变得更加高效。值得注意的是，Jquery Tools的gzip压缩版本仅有5.8k，如此轻量级而且功能实用的UI组件绝对值得我们关注。下面是官方主页对它的一个描述：&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 20px; margin-bottom: 0px; margin-left: 20px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; border-left-width: 4px; border-left-style: solid; border-left-color: rgb(232, 231, 208); font-size: 1em; "&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;Jquery Tools包含如今网站六个最有用的javascript工具。它的一个优点是所有这些工具可以一起使用、扩展、配置和样式化。&lt;br /&gt;最终，通过它你可以制作出众多不同的网站部件，或用个人的方式创造新的应用。（This library contains six of the most useful JavaScript tools available for today’s website. The beauty of this library is that all of these tools can be used together, extended, configured and styled. In the end, you can have hundreds of different widgets and new personal ways of using the library. ）&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;下面是Jquery UI包含的工具列表：&lt;/p&gt;&lt;ol style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 2em; line-height: 1.5em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;选项卡功能(Tabs)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;提示工具条功能(ToolTips)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;信息滚动功能(Scrollable)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;遮罩效果(overlay)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;突出效果(expose)&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;Flash嵌入&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;有人可能会拿jquery tools和jquery ui去做对比，因为这个，国外还有过不小的争论。感兴趣的可以看看这篇文章：&lt;a href="http://marcgrabanski.com/article/jquery-tools-vs-jquery-ui" onclick="javascript:pageTracker._trackPageview('/outbound/article/marcgrabanski.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools VS Jquery UI&lt;/a&gt;，国内也有人对此发表过&lt;a href="http://dalada.blogspot.com/2009/06/jquery-tools.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/dalada.blogspot.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;言论&lt;/a&gt;（blogspot被墙了，可能访问不了），下面是一些引用：&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 20px; margin-bottom: 0px; margin-left: 20px; padding-top: 0px; padding-right: 20px; padding-bottom: 0px; padding-left: 20px; border-left-width: 4px; border-left-style: solid; border-left-color: rgb(232, 231, 208); font-size: 1em; "&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;原因就出在於TOOLS官網上寫明了它就是要補jQuery UI不足之處，例如：TOOLS有UI缺乏的tooltips、tabs、overlays等功能，且強調檔案比UI還要小。&lt;br /&gt;marcgrabanski認為TOOLS既然對於UI不足之處有意見，最初就應該加入該UI團隊，一起協同開發改造出新版本，畢竟當初是受到UI的啟發，到後來卻因UI不足之處，甚至另起爐灶創立一個新品牌，這樣的行徑並不厚道。&lt;br /&gt;但支持TOOLS的人卻也有不同的聲音，認為網頁開發者本來就是會殷切期望會有更小、更有效率的plugin，UI長久來效能不是最好，不過大家也都無從選擇起，如今又有新的plugin出現，大家樂見其成，應該給予鼓勵。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;Jquery Tools在以下浏览器中测试通过：&lt;/p&gt;&lt;ul style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 2em; line-height: 1.5em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.microsoft.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Internet Explorer&lt;/a&gt; 6+&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://www.mozilla.com/en-US/firefox/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.mozilla.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Firefox&lt;/a&gt; 2.0+&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://www.google.com/chrome/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Chrome&lt;/a&gt; 1+&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://www.opera.com/browser/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.opera.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Opera&lt;/a&gt; 9+&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://www.apple.com/safari/" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.apple.com');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Safari&lt;/a&gt; 3+&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;由于Jquery Tools相关使用要写的东西比较多，所以本博决定分成几篇来写，本篇主要是给大家一个基本的介绍。从下一篇开始依次介绍Jquery Tools中各工具的使用及示例。心急的朋友可以去官方站点的&lt;a href="http://flowplayer.org/tools/demos/index.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/flowplayer.org');" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;这个页面&lt;/a&gt;，上面给出了丰富的示例。&lt;/p&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; "&gt;Jquery Tools系列文章导航：&lt;/p&gt;&lt;ol style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 2em; line-height: 1.5em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/flexible-ui-library-jquery-tools/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools——不可错过的Jquery UI库（一）：简介&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/flexible-ui-library-jquery-tools-2/" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools——不可错过的Jquery UI库（二）：Tabs选项卡&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 0px; line-height: 1.5em; font-weight: bold; "&gt;延伸阅读:&lt;/p&gt;&lt;ol style="margin-top: 1.2em; margin-right: 0px; margin-bottom: 1.2em; margin-left: 2em; line-height: 1.5em; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/flexible-ui-library-jquery-tools-2/" rel="bookmark" title="Permanent Link: Jquery Tools——不可错过的Jquery UI库（二）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools——不可错过的Jquery UI库（二）&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/flexible-ui-library-jquery-tools-3/" rel="bookmark" title="Permanent Link: Jquery Tools——不可错过的Jquery UI库（三）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools——不可错过的Jquery UI库（三）&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/flexible-ui-library-jquery-tools-4/" rel="bookmark" title="Permanent Link: Jquery Tools——不可错过的Jquery UI库（四）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;Jquery Tools——不可错过的Jquery UI库（四）&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/use-google-host-jquery/" rel="bookmark" title="Permanent Link: 请从Google服务器加载Jquery，以提高网站性能" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;请从Google服务器加载Jquery，以提高网站性能&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/smooth-scroll/" rel="bookmark" title="Permanent Link: 实现页面不同位置间平滑滚动的两种解决方案" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;实现页面不同位置间平滑滚动的两种解决方案&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/highlight-javascript-and-jquery-solution/" rel="bookmark" title="Permanent Link: 实现文字高亮功能的两种解决方案（Javascript/Jquery）" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;实现文字高亮功能的两种解决方案（Javascript/Jquery）&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/jquery-plot-plugin-jqplot/" rel="bookmark" title="Permanent Link: 强大的Jquery图表绘制插件 —— jqPlot" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;强大的Jquery图表绘制插件 —— jqPlot&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; "&gt;&lt;a href="http://css9.net/jquery-switch-style/" rel="bookmark" title="Permanent Link: 使用CSS和JQuery轻松切换网页显示样式" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; color: rgb(0, 102, 0); text-decoration: none; border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: rgb(0, 102, 0); "&gt;使用CSS和JQuery轻松切换网页显示样式&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-1489991435157530793?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/1489991435157530793/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/jquery-toolsjquery-ui.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1489991435157530793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1489991435157530793'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/jquery-toolsjquery-ui.html' title='Jquery Tools——不可错过的Jquery UI库'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-5268950187854423976</id><published>2009-06-22T16:16:00.000+08:00</published><updated>2009-06-22T16:18:02.682+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaScript'/><title type='text'>javascript实用技巧--数组.</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Tahoma; color: rgb(41, 41, 41); font-size: 12px; "&gt;&lt;div id="logPanel" class="Content-body" style="margin-top: 8px; margin-right: 2px; margin-bottom: 2px; margin-left: 8px; overflow-x: hidden; overflow-y: hidden; text-align: left; width: 681px; line-height: 19px; background-image: url(http://cssrain.cn/skins/tim/layout.css); background-repeat: repeat-y; color: rgb(41, 41, 41); background-position: 100% 50%; "&gt;&lt;div id="vad" class="paper01" style="float: right; width: 130px; "&gt;&lt;div class="aditem_paper01"&gt;　　&lt;/div&gt;&lt;/div&gt;数组和字符串类型对象的方法我特容易搞混淆,所以把他列出来，免得每次取查。&lt;br /&gt;&lt;br /&gt;1、concat方法&lt;br /&gt;[作用] 将多个数组联合起来，这个方法不会改变现存的数组，它只返回了所结合数组的一份拷贝。&lt;br /&gt;[语法] arrayObj.concat(array1,array2,...)&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2");&lt;br /&gt;    var array2 = new Array("3","4");&lt;br /&gt;    var array3 = array1.concat(array2);&lt;br /&gt;    document.write(array3+"&lt;br/&gt;");&lt;br /&gt;    document.write(array3[0]);&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;2、join方法，&lt;br /&gt;[作用] 将原有数组对象转换成1个字符串，可以用指定分隔符进行串联。&lt;br /&gt;[语法] arrayObj.join(separator)，separator为分隔符，默认为“,”。&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2");&lt;br /&gt;    document.write(array1.join());&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;3、pop、shift方法&lt;br /&gt;[作用] pop方法删除和返回数组中最后一个元素，同时，数组的长度发生变化。与之相对的是shift()方法，删除和返回数组第一个元素。&lt;br /&gt;[语法] arrayObj.pop|shift()&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2","3","4");&lt;br /&gt;    document.write(array1.pop()+"&lt;br /&gt;");&lt;br /&gt;    document.write(array1.length+"&lt;br /&gt;");&lt;br /&gt;    document.write(array1.shift()+"&lt;br /&gt;");&lt;br /&gt;    document.write(array1.length);&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;4、push、unshift方法&lt;br /&gt;[作用] 向数组的末尾添加一个或多个元素并且返回新的长度。同时，数组的长度将会被改变，与之相对应的是unshift方法。注意，方法的返回值并不是新的数组，而是新数组的长度。&lt;br /&gt;[语法] arrayObj.push|unshift(ele1,ele2,ele3,...)&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2","3","4");&lt;br /&gt;    var newL = array1.push("5","6");&lt;br /&gt;    document.write(newL+"&lt;br /&gt;");&lt;br /&gt;    document.write(array1);&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;5、reverse方法&lt;br /&gt;[作用] 把数组中的元素排列次序颠倒过来。&lt;br /&gt;[语法] arrayObj.reverse()&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2","3","4");&lt;br /&gt;    document.write(array1.reverse());&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;6、slice方法&lt;br /&gt;[作用] 可将现存数组中选种的元素返回。&lt;br /&gt;[语法] arrayObj.slice(startposition,endposition)，第一个参数为必选，第二个为可选，如不写，则默认为从startposition到最后一个元素。注意，包含startposition这个位置的元素，而不包括endposition。&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("1","2","3","4");&lt;br /&gt;    document.write(array1.slice(0,2));&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;7、sort方法&lt;br /&gt;[作用] 用来对数组元素进行排序。&lt;br /&gt;[语法] arrayObj.sort(sortRule())。参数可选，代表排序的方法。特别说明，sort排序有几个基本原则，第一，默认按照字母顺序排列；第二，大写字母排在小写字母之前。基与此，对于数字排序，需要自己写排序方法。&lt;br /&gt;[实例]    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("c","a","d","b");&lt;br /&gt;    var array2 = new Array("c","a","D","b");&lt;br /&gt;    var array3 = new Array("100","2","3","1")&lt;br /&gt;    function sortRule(a,b){&lt;br /&gt;        return a-b;&lt;br /&gt;    }&lt;br /&gt;    document.write(array1.sort()+"&lt;br /&gt;");&lt;br /&gt;    document.write(array2.sort()+"&lt;br /&gt;");&lt;br /&gt;    document.write(array3.sort(sortRule));&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;8、splice方法&lt;br /&gt;[作用]       向数组删除并加入新的元素。&lt;br /&gt;[语法]       arrayObj.splice(index,number,ele1,ele2...)。index为索引位置，必须为数字，代表从哪个位置插入或者删除元素。number，代表从index位置往后删除的元素个数，如果为“0”则表示在index插入新元素，不删除往后的数组元素。（说得太混了~~~直接看代码实例）&lt;br /&gt;[实例]&lt;br /&gt;    &lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("c","a","d","b");&lt;br /&gt;    array1.splice(0,0,"m")&lt;br /&gt;    document.write(array1+"&lt;br /&gt;");&lt;br /&gt;    array1.splice(0,2,"n")&lt;br /&gt;    document.write(array1);&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;9、toString方法&lt;br /&gt;[作用] 使用率非常高的方法，直接将数组类型对象转换成字符串类型对象。&lt;br /&gt;[语法] arrayObj.toString()&lt;br /&gt;[实例]&lt;br /&gt;&lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("c","a","d","b");&lt;br /&gt;    strObj = array1.toString();&lt;br /&gt;    document.write(strObj+"&lt;br /&gt;");&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;注意：新的字符串是原数组连接而成，但是中间有“,”分隔，如想去掉“,”，可以这样写：&lt;br /&gt;&lt;div class="UBBPanel" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(252, 252, 252); overflow-x: auto; overflow-y: auto; width: 612px; border-left-width: 2px; border-left-style: solid; border-left-color: rgb(165, 165, 165); background-position: initial initial; "&gt;&lt;div class="UBBTitle" style="padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px; font-weight: bold; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(227, 227, 227); border-bottom-color: rgb(41, 41, 41); border-bottom-width: 1px; border-bottom-style: dotted; background-position: initial initial; "&gt;&lt;img src="http://cssrain.cn/images/code.gif" alt="程序代码" style="max-width: 100%; height: auto; margin-top: 0px; margin-right: 2px; margin-bottom: -3px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 2px; border-bottom-width: 2px; border-left-width: 2px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(238, 238, 238); border-right-color: rgb(238, 238, 238); border-bottom-color: rgb(238, 238, 238); border-left-color: rgb(238, 238, 238); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; " /&gt; 程序代码&lt;/div&gt;&lt;div class="UBBContent" style="padding-right: 6px; padding-left: 6px; padding-bottom: 6px; line-height: 19px; padding-top: 6px; "&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;    var array1 = new Array("c","a","d","b");&lt;br /&gt;    strObj = array1.toString().replace(/,/g,"");&lt;br /&gt;    document.write(strObj.replace+"&lt;br /&gt;");&lt;br /&gt;    &lt;/script&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="Content-body" style="margin-top: 8px; margin-right: 2px; margin-bottom: 2px; margin-left: 8px; overflow-x: hidden; overflow-y: hidden; text-align: left; width: 681px; line-height: 19px; background-image: url(http://cssrain.cn/skins/tim/layout.css); background-repeat: repeat-y; color: rgb(41, 41, 41); background-position: 100% 50%; "&gt;作者：admin&lt;br /&gt;时间：2008-01-18&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-5268950187854423976?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/5268950187854423976/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascript_22.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5268950187854423976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5268950187854423976'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascript_22.html' title='javascript实用技巧--数组.'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-2729337826116555775</id><published>2009-06-18T14:04:00.000+08:00</published><updated>2009-06-18T14:05:47.651+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google chrome'/><title type='text'>初体验Google Chrome 2——优点和失望之处</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/p&gt;&lt;h1 id="" style="font-size: 2em; "&gt;&lt;span class="Apple-style-span" mce_name="strong" mce_fixed="1" style="font-size: 12px; "&gt;关键词：&lt;a href="http://tag.csdn.net/Google/"&gt;Google&lt;/a&gt;  | 感谢&lt;a href="http://hi.csdn.net/ydj9931"&gt;ydj9931&lt;/a&gt;的提供&lt;cite style="border-bottom-width: 1px; border-bottom-style: dashed; border-bottom-color: blue; "&gt;&lt;/cite&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="newscon" id=""&gt;&lt;div&gt;&lt;div id="controladsty"&gt;&lt;/div&gt;&lt;div id="vogate_ad_area"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;五月二十一日，Google发布了新版Chrome，声称做了一些实质性的改进，速度也有所提高。我从Chrome v2发布以来就在使用它，总体上还是很喜欢它，但是也有某些方面令人失望。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;img src="http://news.csdn.net/a/uploads/2009/06/16/20090616-003120-pic1.jpg" alt="" width="442" height="348" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;新特性&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;这一版的Chrome有一些我们没注意到的新特性--表单自动填充特性，这意味着你在访问某个页面的时候无需每次都输入用户名和密码（要确保整个站点完全载入了--否则你的细节信息不会被记录下来），全屏模式（按F11）对于上网本用户尤其方便，还有一个选项可以让你移除新标签页上的缩略图，这样就没人知道你在工作时磨洋工或者是在看什么...哦...某些不合适的东西。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;我很高兴Chrome正在迎头赶上FireFox和IE--它们都有全屏和表单自动填充功能。从新标签页上移除缩略图这一功能很方便，可以在不想让界面显得凌乱和不想让某个网站显示出来的时候使用它。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;界面没有改变，这一点在我看来很好，因为我喜欢最小化的方式。如果你在期待某些界面变化，或许你要失望了。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;高速但安全吗？&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Google Chrome 2运行JavaScript的速度比上一版更快。它甚至采用了内置高速缓存这样的优化技术，它会直接查找调用点来记录上一个方法的结果，这使得Chrome相当高速。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;不过，更快的JavaScript体验也有一些缺陷，因为这也意味着更快的恶意软件下载速度。网络安全软件提供商Websense的安全经理Stephan Chenette说，恶意软件作者在90%含有恶意脚本的网页中使用JavaScript。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;基于JavaScript的恶意软件运行的更快，JavaScript是drive-by攻击的载体，安全软件提供商ESET的技术教育主管Randy Abrams如是说。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;改善的稳定性&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;Google许诺这一版本会有更好的稳定性。我必须得说在用Chrome打开20个标签页之前，我觉得它的稳定性没什么问题。我在两台电脑上做了这个测试，结果是一样的--大约百分之七十的站点拒绝访问而有些则崩溃掉了。而当你打开如此之多的标签页的时候，界面会过于拥挤使你无法找到你要的标签。而且无法同时刷新所有标签。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;还有，很有趣的是，Google Chrome并不总是可以正常访问Google YouTube。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;失望之处&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;别误会我的意思，我很喜欢Chrome。现在它有全屏模式，这对于上网本是很理想的而速度因素使得它很适合性能不那么强大的系统。但是--仍然没有插件？没有广告拦截？老实说，离开了FireFox的某些插件我都没法活，比如Hyperwords和Shareaholic。面对现实吧，没有插件会使得很多人不会选择Chrome。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;还有一些我觉得很值得质疑的东西。安装了Chrome，GoogleUpdate.exe就会开始自动运行。这倒没什么。但是你无法关闭它，所以它就会时常连接网络，搜索更新，占用你的内存。始终保持软件为最新版固然很好，但是不允许用户关闭它或者把它设置为手动启动是有点不道德的。&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;还有一点我完全不喜欢。或许是只有我才有这个问题如果你没有遇到过这个问题，那我很高兴，但是我的两台电脑都是在安装Chrome而不是GoogleUpdate.exe之后硬盘开始狂转。卸载掉Chrome浏览器后狂转消失，再次安装之后又出现。或许是我多疑了，但是感觉好像Chrome在扫描我的硬盘。为什么呢？&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;strong&gt;总结&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;虽然很多方面仍然有待改进，但是我喜欢Chrome的快速和严肃的风格。然而，FireFox仍然是我的默认浏览器。这样说吧--喜欢速度的用Chrome，喜欢效率的用FireFox而IE就留给那些喜欢它的人吧。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-2729337826116555775?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/2729337826116555775/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-chrome-2.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/2729337826116555775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/2729337826116555775'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-chrome-2.html' title='初体验Google Chrome 2——优点和失望之处'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-1392226499801181390</id><published>2009-06-17T11:55:00.001+08:00</published><updated>2009-06-17T11:58:59.289+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>实例讲解css中的行为：expression和behavior(附DEMO下载)</title><content type='html'>&lt;div id="entrytitle"&gt; &lt;h1&gt;&lt;br /&gt;&lt;/h1&gt; &lt;div id="entrymeta"&gt;&lt;strong&gt;时间&lt;/strong&gt;:2008-07-21 23:27:38  &lt;strong&gt;来源&lt;/strong&gt;:博客园  &lt;/div&gt;&lt;/div&gt;&lt;div id="entrybody"&gt; &lt;h4&gt;结构、表现、行为，分离和联系&lt;/h4&gt; &lt;p&gt;网页三要素——结构、表现、行为。这个大家都很清楚（如果你对此不是很熟悉，这里可以这样&lt;strong&gt;狭义&lt;/strong&gt;的理解——结构就 是HTML，表现就是CSS，行为就是JavaScript）。为了能写出高内聚、低耦合、可以重复使用，符合web标准的网页，将这三层分离开来是必不 可少的，所以在HTML结构中直接写“style="……"”的做法是不提倡的。但是分开并不表示“一刀两断”，作为一个网页的三个组成部分，他们之间还 必须保持着联系。例如，结构和表现，用&lt;span style="color:#6466b3;"&gt;css选择符&lt;/span&gt;联系着，而结构和行为用事件联系着。那表现和行为用什么联系着呢？其实联系他们之间的纽带就是我们今天要讲的css中的行为。&lt;/p&gt; &lt;h4&gt;表现和行为的联系&lt;/h4&gt; &lt;p&gt;好像很多的朋友都感觉：CSS和JavaScript之间有什么关系呀？好像没有必要保持什么联系吧？ 的确，在很多情况下，他们直接很少联系，甚至在有必要联系的情况下，也可以间接的转化为结构和行为之间的联系。而且，随着最新的浏览器对css2甚至 css3的支持不断完善，结构和行为之间的联系也在不断的在弱化。但是，表现和行为之间的联系，在一些特殊处理，特别是在对IE5-IE6的特效兼容性 上，却有着非常大的应用。&lt;/p&gt; &lt;p&gt;下面让我们来看个简单的例子——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;textare&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;很简单，就是一个列表而已。现在我们想在这些列表上，实现一个用户体验更好的改变：当鼠标移到每个列表项上，这个列表的背景颜色高亮显示。对，很实用的一个改变而已。如果我没有猜错的话，你第一想到的应该是下面的代码——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseover&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="this.style.backgroundColor='pink'"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseout&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="this.style.backgroundColor='';"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseover&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="this.style.backgroundColor='pink'"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseout&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="this.style.backgroundColor='';"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseover&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="this.style.backgroundColor='pink'"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseout&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="this.style.backgroundColor='';"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseover&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="this.style.backgroundColor='pink'"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseout&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="this.style.backgroundColor='';"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseover&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="this.style.backgroundColor='pink'"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;onmouseout&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="this.style.backgroundColor='';"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;&lt;/ul&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="Apple-style-span"  style="color:#0000FF;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; white-space: normal; "&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/textare&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;没有必要感到害羞，这没有什么错，而且完全实现了效果。只是，当boss说：“麻烦把其他页面的所有列表都实现这个效果”的时候，你会比较抓狂而已。毕竟在整个项目的所有页面中找到所有的li标签，并在里面复制上两句代码绝对不是一个令人舒服的工作。&lt;/p&gt; &lt;p&gt;为什么不试试css中的expression。在公用的css样式表文件中，加入下面的样式，即可立刻实现对所有li标签的效果——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;&lt;textare&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 255); "&gt;&lt;/span&gt;&lt;!DOCTYPE&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;html&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;public&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;xmlns&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;meta&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;http-equiv&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="Content-Type"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;content&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="text/html; charset=utf-8"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;meta&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="Keywords"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;content&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="YES!B/S!,web标准,杨正祎,博客园,实例代码"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;meta&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="Description"&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;content&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;="这是一个简单YES!B/S!文章示例页面,来自杨正祎的博客,http://justinyoung.cnblogs.com/"&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;YES!B/S!文章示例页面&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;title&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;style&lt;/span&gt;&lt;/span&gt; &lt;span class="attr"&gt;&lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="kwrd"&gt;="text/css"&lt;/span&gt;&lt;span class="kwrd"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="rem"&gt;&lt;span style="color:#008020;"&gt;/*** 为了便于演示，故将样式放在前台页面上 ***/&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;li{&lt;/pre&gt; &lt;pre class="alt"&gt;    star : expression(onmouseover=function() {this.style.backgroundColor="pink"}, onmouseout=function(){this.style.backgroundColor="";})&lt;/pre&gt; &lt;pre class="alteven"&gt;}&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;style&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;head&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;我是一个列表项，来自http://justinyoung.cnblogs.com/&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;li&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;ul&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;body&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="html"&gt;&lt;span style="color:#800000;"&gt;html&lt;/span&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alteven"&gt;&lt;span class="Apple-style-span"  style="color:#0000FF;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; white-space: normal; "&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;&lt;/textare&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;对，就是一句“star : expression(onmouseover=function() {this.style.backgroundColor="pink"}, onmouseout=function(){this.style.backgroundColor="";})”就实现了刚才的效果，而且没有对前台 结构做任何改变。&lt;/p&gt; &lt;p&gt;这就是expression的作用，一个轻量级的关于样式的行为方式的实现。&lt;/p&gt; &lt;h4&gt;见鬼！又变了！&lt;/h4&gt; &lt;p&gt;上面的效果真的不错，鼠标浮上去背景高亮显示的效果受到了顾客的好评。以至于顾客说：“这个效果真的不错，能不能给所有的表格单元、引用标签、超链 接全部加上这种效果。” 为了满足顾客的兽欲，没有办法，咱只能改呀。于是，你对有td 、blockquote和a标签都加上了这玩意。这是你还多了一个心眼，为了防止顾客对li、td、blockquote和a要不同的高亮显示背景，你把 他们分开写了。于是样式表中，非常壮观的出现了下面的代码——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;li&lt;/span&gt;&lt;/span&gt;{&lt;/pre&gt; &lt;pre class="alteven"&gt;star : expression(onmouseover=function() {this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;="pink"}, onmouseout=function(){this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;="";&lt;/span&gt;&lt;/span&gt;})&lt;/pre&gt; &lt;pre class="alt"&gt;}&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;td&lt;/span&gt;&lt;/span&gt;{&lt;/pre&gt; &lt;pre class="alteven"&gt;star : expression(onmouseover=function() {this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;="pink"}, onmouseout=function(){this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;="";&lt;/span&gt;&lt;/span&gt;})&lt;/pre&gt; &lt;pre class="alt"&gt;}&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;blockquote&lt;/span&gt;&lt;/span&gt;{&lt;/pre&gt; &lt;pre class="alteven"&gt;star : expression(onmouseover=function() {this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;="pink"}, onmouseout=function(){this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;="";&lt;/span&gt;&lt;/span&gt;})&lt;/pre&gt; &lt;pre class="alt"&gt;}&lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;a{&lt;/pre&gt; &lt;pre class="alteven"&gt;star : expression(onmouseover=function() {this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;="pink"}, onmouseout=function(){this&lt;span style="color:#800000;"&gt;&lt;span class="cls"&gt;.style&lt;/span&gt;&lt;span class="cls"&gt;.backgroundColor&lt;/span&gt;&lt;/span&gt;&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;="";&lt;/span&gt;&lt;/span&gt;})&lt;/pre&gt; &lt;pre class="alt"&gt;}&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;顾客对你的反应速度赶到很满意，但是可惜的是：这个顾客只是一个小角色，真正需要的并不是他，而是他的上级BOSS点头，项目才可以验收。好在，那 个上级顾客没有提什么过分的要求，只是说：“我希望高亮显示的颜色变成绿色，高亮的文字最好能变成红色，而且鼠标的样子要变成手指的样子！”&lt;/p&gt; &lt;p&gt;虽然那个小角色顾客一开始拍着胸脯说：“绝对不会变了，这就是我们的效果”。但是真正出钱的是那个“上级BOSS顾客”。所以，没有办法，我们也只 能改了。这时候为了系统的可扩展性和可维护性，我建议你使用behavior行为。因为作为轻量级的expression解决方案已经不是最好的选择了。&lt;/p&gt; &lt;h4&gt;CSS中的behavior行为&lt;/h4&gt; &lt;p&gt;CSS中的behavior也是表现和行为相联系的纽带。只是behavior相比expression更善于解决一些重量级的任务（例如在IE6中实现对透明PNG的支持，我们将在以后的文章中讲到）。&lt;/p&gt; &lt;p&gt;所以上面的需求，如果用behavior来实现的话，将会非常轻松。&lt;/p&gt; &lt;p&gt;先建一个htc文件，名字虽然命名，这就命名为"changeColor.htc"吧，内容很简单，会JavaScript的都能看懂——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;&lt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;:attach &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;event&lt;/span&gt;&lt;/span&gt;=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"onmouseover"&lt;/span&gt;&lt;/span&gt; onevent=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"befor()"&lt;/span&gt;&lt;/span&gt; /&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;&lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;/span&gt;:attach &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;event&lt;/span&gt;&lt;/span&gt;=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"onmouseout"&lt;/span&gt;&lt;/span&gt; onevent=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"after()"&lt;/span&gt;&lt;/span&gt; /&gt;&lt;/pre&gt; &lt;pre class="alt"&gt; &lt;/pre&gt; &lt;pre class="alteven"&gt; &lt;/pre&gt; &lt;pre class="alt"&gt;&lt;script type="&lt;span" class="str"&gt;&lt;span style="color:#ff0000;"&gt;"text/javascript"&lt;/span&gt;&lt;/span&gt;&gt;&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt;&lt;/span&gt; befor(){&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.backgroundColor=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"#7FFFAA"&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.color=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"red"&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.cursor=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"pointer"&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alteven"&gt;    }&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;function&lt;/span&gt;&lt;/span&gt; after(){&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.backgroundColor=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;""&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.color=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;""&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alteven"&gt;    &lt;span class="kwrd"&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;/span&gt;.style.cursor=&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;""&lt;/span&gt;&lt;/span&gt;;&lt;/pre&gt; &lt;pre class="alt"&gt;    }&lt;/pre&gt; &lt;pre class="alteven"&gt;&lt;/script&gt;&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;然后在通用的css文件中加入下面的样式，来引入htc文件——&lt;/p&gt; &lt;div class="csharpcode-wrapper"&gt; &lt;div class="csharpcode"&gt; &lt;pre class="alt"&gt;li, td, blockquote,a  { behavior: url(&lt;span class="str"&gt;&lt;span style="color:#ff0000;"&gt;"changeColor.htc"&lt;/span&gt;&lt;/span&gt;) }&lt;/pre&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt;这样，就将样式和行为完全的分离开来了。以后那该死的顾客再要改变什么，只要在通用css或者htc文件中进行相应的修改即可。&lt;/p&gt; &lt;h4&gt;expression和behavior的重要说明&lt;/h4&gt; &lt;h5&gt;1：只有IE才可以使用&lt;/h5&gt; &lt;p&gt;css中的行为,expression和behavior只有IE才有效，FireFox无效，而且IE也只有IE5以上的版本才支持。&lt;/p&gt; &lt;h5&gt;2：不推荐使用expression和behavior&lt;/h5&gt; &lt;p&gt;在页面渲染的过程中，expression和behavior需要大量的计算，会大量地耗费客户端资源。所以不到迫不得已，请不要使用expression和behavior。&lt;/p&gt; &lt;h5&gt;3：expression和behavior的现实意义&lt;/h5&gt; &lt;p&gt;上面两点，好像已经判了expression和behavior死刑。其实，并不是，它们依然有着现实意义——就是用另外一种途径解决IE6的兼容 性问题（IE5已经基本退出市场，可以不用考虑）。例如：IE7以上的版本、FireFox、Opera、Safari都已经支持透明PNG图片，但是 IE6却不能支持。这是IE6天生的缺陷，但是为了能让IE6也能够兼容我们的设计效果，那么这时候behavior便有了用武之地。&lt;/p&gt; &lt;p&gt;总的来说，expression和behavior在逐渐的没落，但是只要IE6还是浏览器市场上占有一席之地，expression和behavior就依然有着旺盛的生命力。&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-1392226499801181390?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/1392226499801181390/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/cssexpressionbehaviordemo.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1392226499801181390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1392226499801181390'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/cssexpressionbehaviordemo.html' title='实例讲解css中的行为：expression和behavior(附DEMO下载)'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-4595245223932257964</id><published>2009-06-15T10:53:00.000+08:00</published><updated>2009-06-15T10:54:11.432+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>目标:安全纯净互联网 软件升级报38期</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 14px; line-height: 21px; "&gt;&lt;div class="fun_box"&gt;&lt;div class="fun_left"&gt;&lt;span&gt;2009-06-13 09:32:13  &lt;a href="http://www.pcpop.com/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;PCPOP&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    近日，一款名为“绿坝-花季护航软件”于前些天突然出现在了大家面前，成为了众网友热议的焦点，绿坝-花季护航软件是一款功能强大的少年儿童上网管理软 件，能够过滤网上的不良信息，控制上网时间、限制网聊交友等等。相信大家已经从网上了解到了这款上网管理软件即将预装在国内所有新售电脑的消息，一石激起 千层浪网，顿时无数网友通过各种渠道纷纷表示自己的看法。两天前小编也带大家全面体验过了绿坝这款软件的所有功能，我们众多的泡泡网友同样讨论激烈，对此 看法不一。&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/1EC5474D7AD2EE7676E50232D1159F11.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    其实像绿坝-花季护航软件这类孩子上网监管软件早已存在，安全纯净的互联网环境一直是大家追求的目标，国际知名流行的杀毒软件诺顿和卡巴斯基为用户提供强 大地安全保护的同时，也提供了家长控制功能，也许部分家长为了防止自己的孩子沉溺于网络早就使用上了这样功能的软件。只不过此次热议的焦点来源于工信部发 布的一条通知，但是根据目前国内四大门户对网友的调查显示，超八成网友表示不愿意使用该软件，关于“绿坝”的热议还将继续，我们可以一起关注。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    接下来让我们暂且跳过绿坝，因为本周值得大家关注的优秀软件还有很多，Windows 7的泄露从来没有停止过，本周接连出现了7227与7231版，最新的7231版不仅有截图还有种子，有兴趣的网友可以动手下载了。另外，本周世界知名的 安全厂商卡巴斯基发布了最新的卡巴斯基手机安全软件 8.0版，这是自卡巴斯基实验室推出专业的手机安全软件以来，第三次重大的产品升级。卡巴斯基手机安全软件8.0不仅功能强大，而且能兼容多种手机平台， 包括Symbian9.1、9.2、9.3和Windows Mobile5.0、6.0、6.1，是一款集多种领先技术于一身的手机安全软件。&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/72C7BB05ABF11E2FC65363C245689FC4.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    与此同时，世界知名苹果公司一年一度的WWDC 2009大会在圣弗朗西斯科举行，会上苹果全新产品一一亮相从桌面操作系统到移动操作系统以及新iPhone，Safari 4正式版等，给大家带来了诸多惊喜。下面将详细为大家介绍。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;一、苹果专区&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. Mac OS X 10.6 Snow Leopard九月上市&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/FD0E1876FBA9BF97B766D8A33768DE9F.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    Mac OS X以简单易用和稳定可靠著称。经过重新设计的Finder功能充分利用了 Snow Leopard 中的新科技，包括 64 位元 支持和 Grand Central Dispatch。反应更快捷灵敏。还包括了很多新功能如定制Spotlight搜索选项和增强的图标显示，你可以快速浏览多页文档或者观看 QuickTime影片。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 苹果iPhone OS 3.0将在6月17日正式上线&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/3575C11012E490107649AC7CA0F6D997.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    在全新版本的iPhone OS 3.0固件中，相比之前的2.X固件，苹果公司做了较大的升级，其中比较终要的几点是：支持彩信、支持手机全局搜索、支持复制粘贴操作、支持蓝牙点对点的 文件传输、支持转发短信、支持流媒体文件的浏览等等，总共大大小小的改建在100处以上。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. 苹果Safari 4正式版发布 华丽又快速&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/7851EFF87F65B27F444ED6B19019C0DF.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    苹果的Safari 4浏览器以速度快与界面华丽而倍受关注，采用先进的Nitro引擎，拥有世界上最先进的渲染技术，即使运行要求十分苛刻的 Web 2.0 应用程序，Safari 仍可展现极其快速的性能表现。Safari 4执行JavaScript的速度超快，速度上超越了FireFox、Internet Explorer 和 Google Chrome浏览器。同时Safari不仅拥有卓越的 JavaScript 执行性能，还具备顶级的 HTML 执行性能。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;二、Windows 7系统区&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. Windows 7 build 7231 x86泄露BT种子&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/77FA50AEA9EA2DF99928B5F97FC70AD9.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    刚刚从国外网站上发现Windows 7的又一最新版本泄露出来，Windows 7 build 7231（32位版），并且带有种子，喜欢的网友赶快下载。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. Windows 7 SP1 build 7227被泄露出来&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/F34DE81C0015D25DC1BE2D438E8028E9.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    国外P2P网站上之前泄露的Windows 7 SP1 build 7227种子，不过只有32位版本。同时，还有一些截图一起被曝光。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. Windows 7 Manager 1.0.3 Win7全能系统工具&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/0513C764BE57D5434BDF3FEC40D3CEBA.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    Windows 7 Manager是一个功能十分强大的优秀Windows 7系统工具，这款国外软件能够帮助Windows 7用户清理、优化和管理系统，提高系统安全性和运行速度，让你的Windows 7系统性能更佳。最新版Windows 7 Manager中再次添加了一些实用工具，并且对1-Click Cleaner，Process Manager，Service Manager等工具进行了版本升级。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;三、安全杀毒&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. 卡巴斯基手机安全软件8.0上市 瞄准3G市场&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/3E4651E11BC7DBC6735815D61E6E014B.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    6月9日，国际领先的信息安全解决方案提供商——卡巴斯基实验室在京发布了其最新的手机安全软件产品。卡巴斯基手机安全软件8.0支持 Symbian9.1、9.2、9.3操作系统和Windows手机版5.0、6.0、6.1，是一款专为智能手机设计的、全方位的安全解决方案。它融合 了最新的手机安全技术研发成果，包含反病毒、反盗窃、反垃圾短信和来电、隐私加密、家长控制、SIM状态监控、GPS定位等诸多功能。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 微软免费杀毒软件新品Morro即将公测&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/55F613FE70CEDE053F6AA8EBCA9127C1.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    据最新消息称，微软即将推出最新免费反病毒软件Morro的第一个公测版，Morro的到来将填补上微软One Care离开后留下的空白地带。Morro就是一个功能专一的反病毒软件而不会附带创建备份和防火墙等额外功能。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. 金山毒霸亮相&lt;终结者2018&gt;北京首映礼&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/34F63F6E7251B271844E0DC3592AEB57.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    国内知名互联网信息安全公司金山软件宣布，正式与索尼影视娱乐有限公司旗下哥伦比亚电影公司出品科幻电影《终结者2018》（又译为：《终结者4》、《终 结者：救世主》）展开合作。6月7日，金山毒霸高调亮相《终结者4》北京首映礼，为两家企业的合作拉开了划时代意义的序幕。金山也成为索尼在中国互联网信 息安全领域迄今为止唯一合作伙伴。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;四、影音播放&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. PPS网络电视 2.6版更新支持Windows 7系统&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/8F7E56BB4FEE0D033C23112E8D52CB04.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    大家熟悉的PPS网络电视2.6.86.8800版已经发布，最主要的改进就是在于支持Windows 7操作系统，现在的确已经有不少网友已经早已使用上Windows 7，而且对其是爱不释手，但是想要观看网络电视却苦于没有适合的网络电视软件能够在Windows 7上运行，现在好了，用最新版PPS就没有问题啦！【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 流行播放器KMPlayer 2.9.4更新版发布&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/CB074218A1F4D5B23DAFE081657D8ED8.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    KMPlayer作为一款当今流行的全能影音播放器，其功能强大，支持格式多种多样并且简单易用，几乎可以播放现在流行的所有影音文件，同时 KMPlayer可以支持层出不穷的新格式。KMPlayer还允许用户通过各种插件扩展增强功能，如直接使用Winamp的音频，输入，视觉效果等插 件。通过KMPlayer独有的扩展能力，用户可以选择使用不同解码器对各种格式进行解码。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. 美丽升级一百分酷我音乐盒 2.4.1新版&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/9C1307FF2F929C0BB55A561FA5BFA0FC.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    酷我音乐盒的界面以美观实用著称，上个新版本中增加的分拆式皮肤就让很多人惊艳。这次新版本中又增加了两款漂亮的皮肤界面。另外，酷我音乐盒继续精益求 精，对于内容更新技术做了进一步优化，大大提高了歌曲的更新和推荐速度，让好歌更快的直达到用户的面前。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;五、网页浏览器&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. 搜狗浏览器 1.3公测版 突破带宽限制&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/D103A65A073FF587D52CBEF90D528427.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    搜狗浏览器自推出之日起，就因高速稳定的教育网加速功能而广受用户好评，在刚刚发布的1.3 beta版中，搜狗浏览器在对教育网加速功能进行优化的同时，全面推出“全网加速”功能，将网络加速功能的覆盖范围从教育网扩大至国内所有的主流运营商网 络，包括网通、电信、教育网等。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 世界之窗浏览器 3.0 RC发布 新增多个功能&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/C2B6C58262BFB10164E5DD3705058E12.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    最新的世界之窗浏览器 3.0刚刚发布RC版，这次大更新不仅陡然增加了许多新功能，同时改进和修复大量特性，推荐世界之窗浏览器的用户更新。其中新增的功能包括保存完整图标功能、自动刷新功能、气泡提示等等。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. Google Chrome 2.0.172.31最新稳定版&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/D72024171053283C2118DE27E02EF2A1.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    Google Chrome 2.0最新稳定版，Chrome 2.0刚刚在不久前进入稳定版，稳定版中Chrome浏览器增加了全屏显示模式，能够隐藏标题栏等内容，有效增加窗口内可显示空间。Google Chrome提供的自动填写表单功能会记录用户表单的填写记录，再遇到类似的表单时自动为用户填写Chrome知道的信息。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;六、网络应用&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. 飞信新体验 飞信2008 3.5 正式版发布&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/99ECBCBC7C6839DD17F16FA49B0D9D8B.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    中国移动的飞信3.5正式版发布，飞信是一款便捷的沟通工具，通过飞信用户可以使用手机和PC用户聊天，信息交互和发送文件，只要有移动网络的地方就能与 好友保持联系。新版飞信开放飞信会员，只要成为飞信会员就能独享飞信特权，好友列表数扩充、创建、加入群数扩充、积分加速等一网打尽！更有会员特权头像、 红色昵称彰显不一样的你！【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 苹果版QQ for Mac 1.0 Beta1最新升级&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/248EEEEBB3F8A0147216F770C16B39A4.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    QQ for Mac是腾讯为苹果电脑用户推出的QQ聊天软件，简洁实用，界面优雅美观。QQ for Mac是一款Universal 应用程序，支持Intel和PowerPC硬件平台，同时兼容Tiger及全新Leopard操作系统。虽然QQ for Mac目前功能没有Windows平台的QQ功能丰富，但是它也支持自定义头像显示，大小头像显示可以随意切换，而且同样拥有高速传输文件功能，随着版本 的更新还在不断增加新功能。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. 腾讯TM2009 Beta版 专为办公一族打造&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/01CC180576FE217FB16C5E8BBE2C695F.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    腾讯TM是专为办公一族们精心打造的及时通讯工具，针对办公环境设计，侧重于熟人之间的沟通与联系，正因为这样，TM没有QQ中多种多样的附加功能，看上 去更加清爽和简洁。使用TM，可以通过文本、语音、手机甚至视频对话，与同事，客户，朋友，家人实时联机沟通。TM2009 Beta已经发布，采用了全新界面风格，更加清爽简约，同时支持QQ2009中的消息盒子，可以帮助用户将所有未读信息一网收罗。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;七、应用工具&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. QQ拼音输入法 2.1新发布 打字不再卡&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/B802EFD6A971E322CDB4DD8CC25DFCE6.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    输入速度快，占用资源小且界面精美的QQ拼音输入法最新2.1版发布，增加代理支持，优化用户登录体验，增加等级进度条，同时新添删除皮肤功能，优化相框 皮肤的显示等等。QQ拼音输入法能够绑定QQ号码让你将个人词库随身带，智能整句生成，就算打长句也得心应手。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. 诺基亚PC套件Nokia PC Suite 7.1更新&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/FA840A1EE913DED488D1101F96DC58A2.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    诺基亚PC套件（NOKIA PC Suite）是众多诺基亚手机用户都常备在手边的一款实用工具，该套件中包含了五个实用程序分别是NOKIA PC Sync、NOKIA Content Copier、NOKIA PC Composer、NOKIA PC Graphics、NOKIA Phone Editor。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. 免费流行看图器FastStone 3.90正式版&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/B60BEA3526250B4E63C11DD76F36D102.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    FastStone Image Viewer 是一款免费且小巧的看图软件，它提供使用者方便的操作界面，让使用者可以通过它的操作界面来浏览图片，且还支持了连续播放的功能，让使用者能够轻松的浏览 目录中的所有图片。该软件支持所有流行的图片格式，包括BMP, JPEG, GIF, PNG, PCX, TIFF, WMF, ICO等，同时提供了图像浏览、管理、编辑和格式转换等功能。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;strong&gt;八、手机软件&lt;/strong&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    1. 手机上网超酷体验新Opera Mobile 9.7&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/A20FAA64421576EF7094572E23B04E35.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    全能手机浏览器Opera Mobile 9.7 beta版全新发布，这是基于Windows Mobile 平台系统的一款超强手机浏览器，“极速”依然成为了本次新版Opera Mobile手机浏览器的最大卖点，同时还集合了锦上添花的Opera Widget网络应用小工具管理功能，使得手机上网变得更简单更快捷。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    2. UC浏览器 6.6正式版 热门手机浏览器&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/55F0D97EEBB4E337BEA98A4E39065A9D.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    UC浏览器是目前很多手机用户都在使用的一款流行手机浏览器，无论是WEB网站还是WAP站点都可以通过UC浏览器进行访问，同时UC浏览器推荐数百个WAP和WEB热门站点，无需输入网址，直接点击就能立即浏览网页简单便捷。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    3. Windows 7自带用于手机铃声的WMA音乐&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/633434A8BF8BE66E836B134F011721DC.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    Windows 7系统中新增了许多新颖的功能，性能也大幅提高，赢得了大量用户的好评。Windows 7系统中附带了大量精美的桌面墙纸与主题，让很多用户爱不释手，可是也许你还不知道，Windows 7系统文件夹中还隐藏了几段可以被用作手机铃声的MP3乐曲。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    4. 手机酷狗 2.04千色版 极致华丽能换肤&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/CCEAE39697455DC122AAA60966BFA425.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    手机酷狗是一款免费的手机音乐播放软件，内置支持Flac的高品质解码器，支持歌手头像智能识别功能，可以通过GPRS自动下载。并且提供了600万免费 的KRC动感歌词库，以及美观的微型播放模式。最新手机酷狗千色版发布，更是在外观上极大改善，提供多种绚丽皮肤倍受用户喜爱。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    5. 手机管理 91手机助手 for iPhone 2.5&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/681055B43761480969996866CC054C7A.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    91手机助手是一款用于智能手机管理的PC端工具软件，能够轻松帮助用户管理手机全面支持iPhone、Windows Mobile和Symbian S60三大智能手机平台，这是iPhone手机使用的版本。该软件新增了主界面中91通行证帐号的登陆国内，添加WEB备份与还原国内，同时提供了一键转 机国内模块，支持从iPhone到iPhone的数据互导。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    6. 熊猫看书 1.70流行的免费手机阅读器&lt;/p&gt;&lt;p align="center" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a title="安全纯净 软件升级报38期" href="http://it.21cn.com/album/index.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://img001.photo.21cn.com/photos/album/20090613/o/F1A26C6E3DE4D373D3EFAE734AEB3D55.jpg" alt="" style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    熊猫看书是一款全新体验式手机免费阅读软件，全面支持TXT、ZIP、CHM、HTML、NDB、NDZ等格式文件，并支持JPG、BMP、PNG、 GIF等多种格式的图像，支持大容量文件瞬间载入，多种便捷人性化操作，海量在线书库，给你一站式的前所未有的人性化阅读体验。【详细了解】&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;    网络环境的安全和净化看来将长时间作为人们热议的话题，随着3G的全面铺开，越来越多用户开始使用手机与上网本随时上网，网络与人们的生活越密切，网络环境的问题也就越发突出，不过要想创建一个安全纯净的网络环境我想是离不开所有网民的大力支持与共同努力的。■&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-4595245223932257964?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/4595245223932257964/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/38.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/4595245223932257964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/4595245223932257964'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/38.html' title='目标:安全纯净互联网 软件升级报38期'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-6730394381553354662</id><published>2009-06-15T10:52:00.000+08:00</published><updated>2009-06-15T10:53:25.437+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>Web自动化测试工具Selenium 1.0正式发布:Chrome支持+用户指南</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 14px; line-height: 21px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;Selenium 是一款开源Web自动化测试工具，最近发布了1.0版，标志着Web自动化测试领域正式加入了一名新成员。在其新版本中，除了修正了若干Bug，最引人瞩 目的就是Selenium RC增加了对Google Chrome浏览器的支持，同时Selenium官方网站上提供了完整的用户指南。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;InfoQ一直关注Selenium的成长，&lt;a href="http://www.infoq.com/cn/bycategory.action?authorName=%E8%B5%B5%E5%8A%BC" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;赵劼&lt;/a&gt; 在&lt;a id="lumw" title="《.NET平台下Web测试工具横向比较》" href="http://www.infoq.com/cn/news/2009/04/dotnet-web-test-fx-compare" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;.NET平台下Web测试工具横向比较&lt;/a&gt; 一文中对Selenium做了概括：&lt;/p&gt;&lt;blockquote style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(152, 164, 127); border-right-color: rgb(152, 164, 127); border-bottom-color: rgb(152, 164, 127); border-left-color: rgb(152, 164, 127); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(245, 245, 245); font: normal normal normal 12px/normal simsun; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; background-position: initial initial; "&gt;严格说来，&lt;a href="http://seleniumhq.org/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium&lt;/a&gt; 是一套完整的Web应用程序测试系统，它包含了测试的录制（&lt;a href="http://seleniumhq.org/projects/ide/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium IDE&lt;/a&gt; ）、编写及运行（&lt;a href="http://seleniumhq.org/projects/remote-control/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium Remote Control&lt;/a&gt; ）和测试的并行处理（&lt;a href="http://selenium-grid.openqa.org/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium Grid&lt;/a&gt; ）。Selenium的核心&lt;a href="http://seleniumhq.org/projects/core/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium Core&lt;/a&gt; 基于&lt;a href="http://jsunit.net/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;JsUnit&lt;/a&gt; ， 完全由JavaScript编写，因此可运行于任何支持JavaScript的浏览器上。Selenium Core由一种指定格式的HTML文件驱动，在一定程度上增强了测试套件（Test Suite）的可读性。Selenium Remote Control允许测试人员使用&lt;a href="http://seleniumhq.org/about/platforms.html#programming-languages" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;常见的语言&lt;/a&gt; （自然包括C#等.NET语言）编写测试代码，并支持&lt;a href="http://seleniumhq.org/about/platforms.html#operating-systems" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;不同操作系统&lt;/a&gt; 下的&lt;a href="http://seleniumhq.org/about/platforms.html#browsers" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;各种主流浏览器&lt;/a&gt; 。Selenium Grid的作用是将测试分发至多台机器，这样便可大大加快测试速度。与WatiN相同，Selenium也是一款同样使用Apache License 2.0协议发布的开源框架。&lt;/blockquote&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;从读者对上文的&lt;a id="p38n" title="回复" href="http://www.infoq.com/cn/news/2009/04/dotnet-web-test-fx-compare#view_41345" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;回复&lt;/a&gt; 中也可以看出，国内社区对Selenium的喜爱和关注也在升温。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;Selenium作为一款Web自动化测试工具，其支持的浏览器类型之多一直为社区所乐道，而在1.0版中，Selenium正式加入了对Google Chrome的&lt;a id="qq32" title="支持" href="http://jira.openqa.org/browse/SRC-520" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;支持&lt;/a&gt; ：&lt;/p&gt;&lt;blockquote style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(152, 164, 127); border-right-color: rgb(152, 164, 127); border-bottom-color: rgb(152, 164, 127); border-left-color: rgb(152, 164, 127); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(245, 245, 245); font: normal normal normal 12px/normal simsun; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; background-position: initial initial; "&gt;Selenium Remote Control采用浏览器参数googlechrome调用Google Chrome，在Windows XP/Vista上已通过测试，Chrome支持由Google人员完成。&lt;/blockquote&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;至此，除了对IE8的支持功能还在开发中，&lt;a id="f._8" title="其他所有主流浏览器" href="http://seleniumhq.org/docs/01_introducing_selenium.html#supported-browsers" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;其他所有主流浏览器&lt;/a&gt; 都可以通过Selenium来自动化驱动以测试Web应用。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;Selenium的官方网站在Selenium 1.0发布之际，正式推出了Selenium的&lt;a id="hpyg" title="用户手册" href="http://seleniumhq.org/docs/01_introducing_selenium.html#supported-browsers" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;用户指南&lt;/a&gt; 。在此之前，用户只能通过有限的文字介绍和&lt;a id="jasc" title="论坛" href="http://clearspace.openqa.org/community/selenium" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;论坛&lt;/a&gt; 来学习Selenium。现在，负责文档写作的团队完成了一份较为完整的Selenium用户指南，主要包括：&lt;/p&gt;&lt;ul style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="nyxs" title="Selenium介绍" href="http://seleniumhq.org/docs/01_introducing_selenium.html" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium介绍&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="wki1" title="Selenium基本概念" href="http://seleniumhq.org/docs/02_selenium_basics.html" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium基本概念&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="j.sq" title="使用Selenium IDE开发测试用例" href="http://seleniumhq.org/docs/03_selenium_ide.html" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;使用Selenium IDE开发测试用例&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="kqla" title="熟悉Selenium命令" href="http://seleniumhq.org/docs/04_selenese_commands.html" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;熟悉Selenium命令&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a href="http://seleniumhq.org/docs/05_selenium_rc.html" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Selenium-RC&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;除此之外，Selenium 1.0还包括了以下重要更新：&lt;/p&gt;&lt;ul style="margin-top: 5px; margin-right: 0px; margin-bottom: 5px; margin-left: 35px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; "&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="zvwd" title="支持右键/上下文菜单" href="http://jira.openqa.org/browse/SEL-381" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;支持右键/上下文菜单&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="t.aa" title="支持setSpeed" href="http://jira.openqa.org/browse/SEL-400" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;支持setSpeed&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="on71" title="大小写敏感匹配" href="http://jira.openqa.org/browse/SEL-460" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;大小写敏感匹配&lt;/a&gt;&lt;/li&gt;&lt;li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; list-style-type: disc; "&gt;&lt;a id="oaq6" title="增加deleteAllVisibleCookies命令" href="http://jira.openqa.org/browse/SEL-508" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;增加deleteAllVisibleCookies命令&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;不过在Selenium 1.0中，shutDownSeleniumServer命令由于之前的代码重构错误而不起作用，因此Selenium团队随即发布了1.0.1版本，以修正该Bug，最新版可以从&lt;a id="rxa5" title="这里" href="http://seleniumhq.org/download/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;这里&lt;/a&gt; 下载。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;令人欣喜的是，国内社区在学习和使用Selenium之余，也针对其不足提出了新的Web自动化测试框架，&lt;a id="f5lw" title="Tellurium" href="http://code.google.com/p/aost/" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;Tellurium&lt;/a&gt; 就是其中一个。目前InfoQ中文站&lt;a id="jw3-" title="张凯峰" href="http://www.infoq.com/cn/bycategory.action?authorName=%E5%BC%A0%E5%87%AF%E5%B3%B0" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;张凯峰&lt;/a&gt; 对此做了&lt;a id="tgqw" title="专门报道" href="http://www.infoq.com/cn/articles/tellurium-testing-framework" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;专题报道&lt;/a&gt; ，Tellurium的创始人方剑先生在采访中谈到了Selenium的不足：&lt;/p&gt;&lt;blockquote style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; border-top-color: rgb(152, 164, 127); border-right-color: rgb(152, 164, 127); border-bottom-color: rgb(152, 164, 127); border-left-color: rgb(152, 164, 127); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(245, 245, 245); font: normal normal normal 12px/normal simsun; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; background-position: initial initial; "&gt;我有个工作（Task）就是用Selenium去测试我们的一个应用程序（是用Dojo Javascript框架写的）。应该说在当时，Selenium是一个开创性的框架，如果用他们的复制和重播模式（record and replay）很容易产生测试脚本。但一旦我开始用Selenium，我发现它还是有一些缺点和不便之处。主要测试脚本是对代码的更新很脆弱 （Fragile）。 但是在一个敏捷开发的环境下，一般都有阶段性的用户接受测试（User Acceptance Test），由于程序一直更新，Selenium测试脚本的维护就变成一个很头痛的问题。而且，对于很多企业级应用，复制和重播模式本身就不太适用，比喻 我们有很多数据格（Data Grid），它的内容本身就是动态的。其他的问题包括Selenium测试脚本不是结构化的，你可以看到处有XPath，这更增加了维护的困难。&lt;/blockquote&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;他同时表示，Tellurium脱胎于Selenium,它的主要竞争对手还是Selenium, 毕竟Selenium已经推广好几年了。要用户用一个新的框架是要花一定的时间的。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;由此可见，Web自动化测试工具的竞争愈演愈烈。但不论是Selenium还是Tellurium，软件开发社区都是最终的评判者和受益者。读者可以在InfoQ中文站查看更多有关&lt;a id="st-n" title="测试" href="http://www.infoq.com/cn/Testing" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;测试&lt;/a&gt; 的报道。&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#444444;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-6730394381553354662?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/6730394381553354662/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/webselenium-10chrome.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6730394381553354662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6730394381553354662'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/webselenium-10chrome.html' title='Web自动化测试工具Selenium 1.0正式发布:Chrome支持+用户指南'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-4488405523047830227</id><published>2009-06-15T10:51:00.001+08:00</published><updated>2009-06-15T10:52:20.706+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaScript'/><title type='text'>JavaScript大牛：Douglas Crockford</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; color: rgb(68, 68, 68); font-size: 14px; line-height: 22px; "&gt;Douglas Crockford是JavaScript开发社区最知名的权威人士，JSON、JSLint、JSMin和ADSafe之父，《JavaScript. The Good Parts》（中文书名为《JavaScript语言精粹》）一书作者。JavaScript的创始人Brendan Eich说他是“lambda编程和JavaScript的精神领袖（Yoda of lambda programming and JavaScript）”。他同时也服务于ECMA的JavaScript2.0技术委员会（TC39）。其个人站点和Blog分别 为：http://www.crockford.com/和http://blog.360.yahoo.com/douglascrockford。&lt;br /&gt;&lt;br /&gt;Douglas Crockford为Yahoo资深JavaScript架构师。此外，他曾在Atari公司开发了办公自动化系统，同时完成了对游戏和音乐的研究；曾任 Lucasfilm电影公司技术总监；在Paramount公司担任过新媒体执行主管；在电气社区，他为人所知的是communities.com的创始 人兼首席执行官；他还创办了State软件公司，并兼任CTO，这也是他发现JSON时的所在地。他同时也对Blissymbolics这一图形及象征性 语言非常感兴趣，并研究过永久减肥（Permanent Weight Loss）。&lt;br /&gt;&lt;br /&gt;YUI团队2008年底的合影，中间的长者即为Douglas Crockford：&lt;br /&gt;&lt;img src="http://p.blog.csdn.net/images/p_blog_csdn_net/bvbook/505170/o_92ae_thumb.png" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;&lt;br /&gt;《JavaScript: The Good Parts》英、中文版图书封面：&lt;br /&gt;http://p.blog.csdn.net/images/p_blog_csdn_net/bvbook/505170/o_s2931482_3.jpg&lt;br /&gt;http://p.blog.csdn.net/images/p_blog_csdn_net/bvbook/505170/o_01-JavaScript%E8%AF%AD%E8%A8%80%E7%B2%BE%E7%B2%B9-%E5%B0%81%E9%9D%A2_1.png&lt;br /&gt;&lt;br /&gt;Douglas Crockford作为JavaScript开发社区的领袖，其在JavaScript开发方面的研究成果被广泛应用，而他的思想也深深影响了整个 JavaScript应用和发展。学习、理解、实践大师的思想，我们才可能站在巨人的肩上，才有机会超越，因此，以下列表是一个开始：&lt;br /&gt;&lt;br /&gt;1.JavaScript. TheWorld'sMost Misunderstood Programming Language（网址：http://javascript.crockford.com/javascript.html）&lt;br /&gt;参考译文：JavaScript：世界上最被误解的语言（网址：http://shiningray.cn/javascript-the-worlds-most-misunderstood-programming-language.html）&lt;br /&gt;&lt;br /&gt;2.The World’s Most Misunderstood Programming Language Has Become the World’s Most Popular Programming Language（网址：http://javascript.crockford.com/popular.html）&lt;br /&gt;参考译文：JavaScript：从最受误解的编程语言演变为最流行的语言（网址：http://www.ajaxjs.com/popular.html&lt;br /&gt;&lt;br /&gt;3.A Survey of the JavaScript. Programming Language（网址：http://www.crockford.com/javascript/survey.html）&lt;br /&gt;参考译文：纵览JavaScript语言（网址：http://svza.blogspot.com/2007/03/javascript_09.html）&lt;br /&gt;&lt;br /&gt;4.Code Conventions for the JavaScript. Programming Language（网址：http://javascript.crockford.com/code.html）&lt;br /&gt;参考译文：JavaScript程序编码规范（网址：http://www.yeeyan.com/articles/view/cloudwater/4042）&lt;br /&gt;&lt;br /&gt;5.The Little JavaScripter（网址：http://javascript.crockford.com/little.html）&lt;br /&gt;&lt;br /&gt;6.Private Members in JavaScript（网址：http://javascript.crockford.com/private.html）&lt;br /&gt;参考译文：JavaScript中的私有成员（网址：http://javascript.crockford.com/private.html）&lt;br /&gt;&lt;br /&gt;7.Prototypal Inheritance in JavaScript（网址：http://javascript.crockford.com/prototypal.html）&lt;br /&gt;参考译文：在JavaScript实现基于原型的继承（网址：http://svza.blogspot.com/2007/03/javascript_14.html）&lt;br /&gt;&lt;br /&gt;8.Classical Inheritance in JavaScript（网址：http://javascript.crockford.com/inheritance.html）&lt;br /&gt;参考译文：在JavaScript中实现基于类模式的继承（网址：http://svza.blogspot.com/2007/03/javascript_4663.html）&lt;br /&gt;&lt;br /&gt;9.Remedial JavaScript（网址：http://javascript.crockford.com/remedial.html）&lt;br /&gt;&lt;br /&gt;10.JavaScript. and HTML Script. Tags（网址：http://javascript.crockford.com/script.html）&lt;br /&gt;参考译文：JavaScript与HTML的Script标签（网址：http://www.dreamdu.com/blog/2008/08/08/script/）&lt;br /&gt;&lt;br /&gt;11.JScript. Memory Leaks（网址：http://javascript.crockford.com/memory/leak.html）&lt;br /&gt;参考译文：JScript的内存泄漏（网址：http://svza.blogspot.com/2007/06/jscript.html）&lt;br /&gt;&lt;br /&gt;12.Top Down Operator Precedence（网址：http://javascript.crockford.com/tdop/tdop.html）&lt;br /&gt;&lt;br /&gt;13.The Elements of JavaScript. Style, Parts One and Two（网址：http://javascript.crockford.com/style1.html和http: //javascript.crockford.com/style2.html）&lt;br /&gt;参考译文：JavaScript的风格要素（1）&amp;amp;（2）（网址：http://dancewithnet.com/2008/01/26 /the-elements-of-javascript-style-part-one/和http://dancewithnet.com/2008 /01/30/the-elements-of-javascript-style-part-two/）&lt;br /&gt;&lt;br /&gt;14.Minification v. Obfuscation（网址：http://yuiblog.com/blog/2006/03/06/minification-v-obfuscation/）&lt;br /&gt;&lt;br /&gt;15.Synchronous v. Asynchronous（网址：http://yuiblog.com/blog/2006/04/04/synchronous-v-asynchronous/）&lt;br /&gt;&lt;br /&gt;16.with Statement Considered Harmful（网址：http://yuiblog.com/blog/2006/04/11/with-statement-considered-harmful/）&lt;br /&gt;&lt;br /&gt;17.Global Domination, Parts One and Two（网址：http://yuiblog.com/blog/2006/06/01/global-domination/和http: //yuiblog.com/blog/2008/04/16/global-domination-part-two/）&lt;br /&gt;&lt;br /&gt;18.for in Intrigue（网址：http://yuiblog.com/blog/2006/09/26/for-in-intrigue/）&lt;br /&gt;&lt;br /&gt;19. JavaScript, We Hardly new Ya（网址：http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/）&lt;br /&gt;参考译文：JavaScript的new，好久不见啊（网址：http://ued.taobao.com/blog/2007/05/15/%E4 %BD%A0%E7%9C%9F%E7%9A%84%E4%BC%9A%E5%86%99javascript%E5%90%97%EF%BC%9F/）&lt;br /&gt;&lt;br /&gt;20.JSON and Browser Security（网址：http://yuiblog.com/blog/2007/04/10/json-and-browser-security/）&lt;br /&gt;参考译文：JSON和浏览器安全（网址：http://www.javaeye.com/topic/95569）&lt;br /&gt;&lt;br /&gt;21.I’d Rather switch Than Fight!（网址：http://yuiblog.com/blog/2007/04/25/id-rather-switch-than-fight/）&lt;br /&gt;&lt;br /&gt;22.The Only Thing We Have To Fear Is Premature Standardization（网址：http://yuiblog.com/blog/2008/08/14/premature- standardization/）&lt;br /&gt;参考译文：不成熟的标准化是我们唯一惧怕的（网址：http://ued.taobao.com/blog/2008/08/15/the_only_thing_we_have_to_fear_is_premature_standardization/）&lt;br /&gt;&lt;br /&gt;23.When You Can’t Count On Your Numbers（网址：http://yuiblog.com/blog/2009/03/10/when-you-cant-count-on-your-numbers/）&lt;br /&gt;&lt;br /&gt;24.Fixing HTML（网址：http://www.crockford.com/html/）&lt;br /&gt;参考译文（网址：http://sp42.javaeye.com/blog/145268）&lt;br /&gt;&lt;br /&gt;25.HTML4.2（网址：http://blog.360.yahoo.com/blog-TBPekxc1dLNy5DOloPfzVvFIVOWMB0li?p=978）&lt;br /&gt;&lt;br /&gt;26.Ajax security（幻灯片，网址：http://www.slideshare.net/douglascrockford/ajax-security-255587）&lt;br /&gt;&lt;br /&gt;27. JavaScript. The Good Parts&lt;br /&gt;（1）视频（网址：http://google-code-updates.blogspot.com/2009/03/doug-crockford-javascript-good-parts.html）&lt;br /&gt;（2）幻灯片（网址：http://www.slideshare.net/rajivmordani/good-parts-of-javascript-douglas-crockford-presentation）&lt;br /&gt;&lt;br /&gt;28.The Mashup Problem and Google Gears&lt;br /&gt;（视频，网址：http://video.google.com/videoplay?docid=452089494323007214）&lt;br /&gt;&lt;br /&gt;29.The JavaScript. Programming Language&lt;br /&gt;（1）视频第1部分（网址：http://video.yahoo.com/video/play?vid=111593）&lt;br /&gt;（2）视频第2部分（网址：http://video.yahoo.com/video/play?vid=111594）&lt;br /&gt;（3）视频第3部分（网址：http://video.yahoo.com/video/play?vid=111595）&lt;br /&gt;（4）视频第4部分（网址：http://video.yahoo.com/video/play?vid=111596）&lt;br /&gt;（5）幻灯片（网址：http://www.slideshare.net/guestceb98b/the-javascript-programming-language）&lt;br /&gt;&lt;br /&gt;30.An Inconvenient API: The Theory of the Dom&lt;br /&gt;（1）视频第1部分（网址：http://video.yahoo.com/video/play?vid=111582）&lt;br /&gt;（2）视频第2部分（网址：http://video.yahoo.com/video/play?vid=111583）&lt;br /&gt;（3）视频第3部分（网址：http://video.yahoo.com/video/play?vid=111584）&lt;br /&gt;（4）幻灯片（网址：http://www.slideshare.net/kavenyan/the-theory-of-the-dom）&lt;br /&gt;&lt;br /&gt;31.Advanced JavaScript&lt;br /&gt;（1）视频第1部分（网址：http://video.yahoo.com/video/play?vid=111585）&lt;br /&gt;（2）视频第2部分（网址：http://video.yahoo.com/video/play?vid=111586）&lt;br /&gt;（3）视频第3部分（网址：http://video.yahoo.com/video/play?vid=111587）&lt;br /&gt;（4）幻灯片（网址：http://www.slideshare.net/Adieu/advanced-javascript）&lt;br /&gt;&lt;br /&gt;32.Quality&lt;br /&gt;（视频，网址：http://video.yahoo.com/watch/529579/2724346）&lt;br /&gt;&lt;br /&gt;33.JavaScript. The Good Stuff&lt;br /&gt;（视频，网址：http://video.yahoo.com/watch/630959/2974197）&lt;br /&gt;&lt;br /&gt;34.The State of Ajax&lt;br /&gt;（视频，网址：http://video.yahoo.com/watch/1382941/4760685）&lt;br /&gt;&lt;br /&gt;35.Ajax Performance&lt;br /&gt;（1）视频（网址：http://video.yahoo.com/watch/4156174/11192533）&lt;br /&gt;（2）幻灯片（网址：http://www.slideshare.net/kavenyan/ajax-performance）&lt;br /&gt;（3）英文演讲词（网址：http://ericmiraglia.com/blog/?p=140）&lt;br /&gt;（4）参考译文（网址：http://blog.360.yahoo.com/blog-sOW1QOA9crUyOdXFxOeK4xc-?cq=1&amp;amp;p=200）&lt;br /&gt;&lt;br /&gt;转载自：http://dancewithnet.com/2009/03/29/douglas-crockford/&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-4488405523047830227?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/4488405523047830227/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascriptdouglas-crockford_15.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/4488405523047830227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/4488405523047830227'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascriptdouglas-crockford_15.html' title='JavaScript大牛：Douglas Crockford'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-892856843577921684</id><published>2009-06-15T10:49:00.004+08:00</published><updated>2009-06-15T10:55:11.392+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>廉价货币 昂贵楼市</title><content type='html'>&lt;span class="Apple-style-span"   style="  line-height: 18px; font-family:verdana;font-size:12px;"&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;钟伟 北京师范大学金融研究中心教授&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;楼市经历了一个不太冷的冬天之后，由次贷迅速带来了盛夏，它正在发生而众人尚未察觉，廉价货币，昂贵楼市，以后总会有人在盛宴之后赶来收拾残羹冷炙&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;博鳌21世纪房地产论坛在即，因此我在近期增加了对房地产月度数据的处理。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;如 同大多数开放式基金经理具有一定的资产配置能力，但基本不具备时机选择能力一样，开发商的宏观形势判断也相当滞后，这可能和房地产行业的集中度太低有一定 关系。在2007年下半年的博鳌，当我们尝试讨论土地囤积的风险时，一位开发商以傲慢的口气打断讨论说，我们不用浪费时间讨论不可能发生的问题。在今年3 月的杭州，当我们乐观地认为房地产市场全年价平量增持续回暖，销售面积和金额均可能接近甚至超越历史最高点的2007年时，一向乐观的任志强也用半信半疑 的眼光对我说，你这么乐观和肯定，4月份房地产统计数据出来如果又滑坡怎么办？媒体的主流看法是，楼市不过是小阳春，其中包含开发商自欺欺人的成分。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;当 前的楼市趋势如何？对不起，我倾向性的意见是：由于次贷危机带来的令人惊讶的廉价货币，一线城市的楼市调整在1季度已结束，全国楼市调整在2季度大体结 束，目前去存货化进程迅速、市场需求从刚性需求的释放，已经扩散到投资性需求的猛烈升温。预期2009年全年商品房销售量和销售金额比2007年的历史高 位分别约高出10%和15%。土地出让和房地产投资的增速不会如此惊人，但也会有一定程度的回暖。或者说，目前的楼市不是小阳春，而很可能转眼即是盛夏。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;很少有人愿意接受上述乐观判断。重要的不是观点，而是赖以得出观点的数据和逻辑。乐观的理由在哪里？&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;一 是对中国经济走势的判断。我一直坚持V型反转是宏观经济的基本趋势，考虑到不存在所谓“次贷危机第二波”，以及今年年底明年年初美国经济摆脱衰退的弱势复 苏，考虑到目前中国GDP增长中，消费和投资并举，服务业超越制造业，我们的结论是：今年GDP增速保8，明年超9，规模以上工业企业盈利增长约10%左 右，该结论比大多数判断要乐观得多。当然，我们倾向于认为今明两年摆脱通货紧缩、甚至转入通货膨胀的可能性均不大，这也许又比较悲观。在这样的宏观预期 下，楼市作为资产价格的一部分，调整行将结束。中国经济异乎寻常的强劲复苏，已充分体现在投资增速、钢铁和铜等黑色有色金属的消耗量、股市和楼市的表现 上。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;二是对廉价货币投放的理解。如果不仔细观察数据，你很难理解在过去30年，中国 投放了多么巨额的货币，目前M2/GDP的比率是全球之首。M2每年同比增长12%曾被视为保持经济平稳增长的“经验公式”，但在次贷危机后增速已翻番， 全年信贷很难不突破8万亿。从1998到2007年，城镇单位就业人员平均劳动报酬，国有企业从每年7600元上升到26100元。北京市中位数家庭人均 年收入则从9400元上升到23200元，这种货币化进程几乎是匪夷所思的。在次贷危机爆发之后，如果按经济刺激方案对GDP的占比来看，中国的经济刺激 方案力度甚至超过了美国。廉价货币的大量注入，并非使得产能过程的实体经济从中受益，而是推动股市、楼市等资产价格的上涨。股市现在牛熊之争可能渐渐失去 悬念，但对楼市的未来趋势尚无共识。考虑到目前57折的5年期以上按揭利率已低到4%，比中国中长期通货膨胀4.8还要低；考虑到中长期国债的收益率尚不 足3%，而房地产项目开发的资本金要求已降至20%，廉价货币使得本应中期深度调整的楼市，目前已草草收场，迎来转机了。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;三 是一季度的回暖指标惊人。尽管目前对发电量和GDP增长之间的背离、货币供应量和财政收入之间的背离等等存在纷争，但可能许多研究人员忽略了其他一些回暖 指标太过惊人。金融40人的内部论坛上，中金证券研究认为美国经济甚至第三季度即可摆脱深度衰退，徐刚则乐观认为V型反转导致全年资产价格逐波向上，高善 文则指出目前钢材、铜的表观消费量，已超过2007年景气巅峰时刻。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;我们观察到的房 地产行业数据显示，第一季度深圳新房和北京二手房的交易量，均是历史天量。2007年，全国商品房销售面积、竣工面积和销售金额分别为7.7亿平米、6亿 平米和2.9万亿，我们预期今年销售面积和金额均接近甚至超过2007年，而竣工面积则很可能创下历史新高。考虑到全年土地出让和房地产开发投资的相对平 稳，因此目前楼市的回暖具有两大特点，一是消费需求从刚性需求的释放向投资需求扩散，这表现为二手房交易有所降温的同时新房和别墅交易升温；二是开发供应 的去存货化速度快于预期，目前全球平均减少了3－4个月的存货，去存货化进程已完成1/3。因此楼市的回暖的确不是虚假的小阳春，而是新一轮盛夏的前兆。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;总 体上，经济刺激政策的波及效应、廉价而充沛的信贷，销售的迅猛回暖、对供应商和建筑施工企业的三角债拖欠、以及项目资本金要求的下降，都给了开发企业以巨 大的喘息之机。该出局的开发商侥幸幸存了，该以品牌、产品和服务争取购房者的又在组织客户排队了，该维持房价向理性回归的又陷入狂热冲动的迹象了。看起来 优秀房地产开发企业的股票比其开发的楼盘更有交易性机会。楼市经历了一个不太冷的冬天之后，由次贷迅速带来了盛夏，从价值判断角度，我不知道这是好是坏， 只知道它正在发生而众人尚未察觉，廉价货币，昂贵楼市，以后总会有人在盛宴之后赶来收拾残羹冷炙。（原载《南方周末》）&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-892856843577921684?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/892856843577921684/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/blog-post_4617.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/892856843577921684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/892856843577921684'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/blog-post_4617.html' title='廉价货币 昂贵楼市'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-6670648762330220729</id><published>2009-06-15T10:49:00.001+08:00</published><updated>2009-06-15T10:49:43.128+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>10个jquery动画菜单：插件和教程</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 14px; line-height: 21px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;jquery是一个非常容易使用，同时也是扩展性很好的一个javascript框架。使用jquery可以非常容易的实现一些页面的ajax效果。本文收集一批使用jquery实现很酷的动画效果菜单的插件和教程。&lt;/p&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;插件&lt;/h2&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;LavaLamp&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.gmarwaha.com/blog/category/client-side/jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/lavalamp.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;相信很多人都见过这个很酷的菜单插件，也有很多网站成功的应用了这个插件。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.gmarwaha.com/blog/category/client-side/jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;插件主页&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;jquery Kwicks 插件&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.jeremymartin.name/examples/kwicks.php?example=1" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/kwicks.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;如果你多Mootools有些了解，或许会注意到Mootools上一版主页的一个滑动菜单效果(现在已经看不到了)。这个插件就是来自于这个效果，很酷，也很容易定制。使用这个插件不仅仅可以制作非常个性的菜单，制作某些步骤演示也非常合适——比如购物流程的演示。&lt;a href="http://www.jeremymartin.name/projects.php?project=kwicks" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;插件主页&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.jeremymartin.name/examples/kwicks.php?example=1" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://www.jeremymartin.name/projects.php?project=kwicks" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;仿Mac的停靠菜单插件&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.wizzud.com/jqDock/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/jqDock.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;这是个仿苹果机的停靠菜单的一个jQuery插件，支持水平和竖直两种。&lt;a href="http://plugins.jquery.com/project/jqDock" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看插件页面&lt;/a&gt; 。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.wizzud.com/jqDock/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://plugins.jquery.com/files/jqDock.v1_2_1.zip" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;jquery滑动菜单&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.leigeber.com/2008/05/sliding-javascript-menu-highlight-1kb/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/slidingmenu.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;一个和LavaLamp很像的菜单，而且脚本只有不到1kb(lavalamp也是这么小)，也比较容易使用。该菜单的原理是，通过在当前ul元素 的下面(或者说”后面”更合适些？)添加一个额外的div，用position定位该div。然后用jquery和插件来控制这个div的大小和位置，并 实现动画效果。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.leigeber.com/2008/05/sliding-javascript-menu-highlight-1kb/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://www.leigeber.com/wp-content/uploads/2008/05/menueffect.zip" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;hr /&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;教程&lt;/h2&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;CSS Sprites2 – 使用jquery制作动画菜单&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.alistapart.com/d/sprites2/examples/example6-function.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/3.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;知名博客&lt;a href="http://www.alistapart.com/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;alistapart&lt;/a&gt; 的一个关于CSS Sprites的教程，这个网站对CSS Sprites的技术的普及起到了非常重要的作用。本文的目的是介绍基于javascript的CSS Sprites技术，只是是通过制作动画菜单的例子来讲解。非常值得一读。&lt;a href="http://www.alistapart.com/articles/sprites2" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.alistapart.com/d/sprites2/examples/example6-function.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;使用jQuery的动画菜单&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.shopdev.co.uk/blog/animated-menus-using-jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/1.jpg" alt="" width="462" height="164" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;教你如何使用CSS和jquery的animate()函数改变背景色的透明度(opacity)来实现动画菜单的一个教程，讲的很详细，如果你看不懂英文没关系，能看懂教程中的代码就OK了。&lt;a href="http://www.shopdev.co.uk/blog/animated-menus-using-jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.shopdev.co.uk/blog/animated-menus-using-jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;使用CSS和jquery创建很酷的动画导航菜单&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://nettuts.s3.amazonaws.com/009_jQueryMenu/sm/result/index.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/2.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;Nettus推出的一个教程，&lt;strong&gt;非常详细&lt;/strong&gt; 的讲解如何使用CSS和jquery制作很酷的动画效果的菜单。&lt;a href="http://nettuts.com/javascript-ajax/create-a-cool-animated-navigation-with-css-and-jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://nettuts.s3.amazonaws.com/009_jQueryMenu/sm/result/index.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://nettuts.s3.amazonaws.com/009_jQueryMenu/sm/result.zip" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载源文件&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;CSS Dock Menu&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.ndesign-studio.com/demo/css-dock-menu/css-dock.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/css_dock.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;来自&lt;a href="http://www.ndesign-studio.com/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;www.ndesign-studio.com&lt;/a&gt; 的一篇使用CSS制作停靠菜单的教程，使用了jquery机器FishEye插件。&lt;a href="http://www.ndesign-studio.com/blog/design/css-dock-menu/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://www.ndesign-studio.com/demo/css-dock-menu/css-dock.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://www.ndesign-studio.com/file/css-dock-menu.zip" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;使用jquery制作平滑的动画导航&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://buildinternet.com/live/smoothmenu/animated-menu.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/Smooth_Animated.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;一个很不错的导航效果，这个教程很详细的讲解了制作这个菜单的步骤。使用了jquery的easing组件。&lt;a href="http://buildinternet.com/2009/01/how-to-make-a-smooth-animated-menu-with-jquery/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://buildinternet.com/live/smoothmenu/animated-menu.html" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://buildinternet.com/live/smoothmenu/animated-menu.zip" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;使用jquery实现动画背景图片&lt;/h3&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://snook.ca/technical/jquery-bg/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;&lt;img src="http://www.qianduan.net/wp-content/uploads/2009/06/jQuery_Animated_Menus/jQuery_Background.jpg" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;这是一个教程，作者结合了上面提到的CSS Sprites2教程，结合&lt;a href="http://plugins.jquery.com/project/backgroundPosition-Effect" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;jquery 背景动画插件&lt;/a&gt; 来实现的一个效果。这个效果很不错，很酷。&lt;a href="http://snook.ca/archives/javascript/jquery-bg-image-animations/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看教程&lt;/a&gt; 。&lt;/p&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); "&gt;&lt;a href="http://snook.ca/technical/jquery-bg/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;查看演示&lt;/a&gt; | &lt;a href="http://www.qianduan.net/10-jquery-animation-menu-plug-ins-and-tutorials.html/comment-page-1" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;下载&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-6670648762330220729?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/6670648762330220729/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/10jquery.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6670648762330220729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6670648762330220729'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/10jquery.html' title='10个jquery动画菜单：插件和教程'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-613746677167406086</id><published>2009-06-15T10:47:00.000+08:00</published><updated>2009-06-15T10:48:59.833+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='总结'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>提高网站可用性的十个实用小技巧</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; line-height: 18px; "&gt;&lt;div id="__title" class="c_title"&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span&gt;2009-06-11 15:17&lt;/span&gt; &lt;span&gt;作者：oncoding&lt;/span&gt; &lt;span&gt;出处：天极网&lt;/span&gt; &lt;span&gt;责任编辑：盛晓莹&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div id="__ad4" class="ad580 mgb20"&gt;&lt;span id="titledown"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div id="__ad3" class="adpip"&gt;&lt;/div&gt;&lt;div class="guanggao"&gt;&lt;span id="contentAdv"&gt;&lt;/span&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　不论是企业网站、个人博客，或者购物网站、&lt;a class="fllink" href="http://game.yesky.com/" target="_bank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;游戏&lt;/a&gt; 网站，我们都希望能吸引访问者并且给他们留下愉快的访问体验。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　可用性是用户体验的一种度量，它可以用访问者完成网站功能的方便程度来描述——无论是通过自身知识还是通过学习新方式来完成这种功能。我认为Jakob Nielson的解释非常到位，他说：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　可用性是评估网站易用程度的一种属性。同时“可用性”这个词也指在设计过程中提高易用性的方法。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　在本文中我希望能够提供一个可用性清单，内容覆盖了从视觉设计，到可以用在任何项目中的简单导航提示等多个方面。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　1. 当前位置导航&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　要让用户在任何时候都知道自己身处哪个模块，或者在浏览那个分类。对任何网站来说，这都可以极大提升可用性。在这一点上，创建当前位置导航可以算是最有效的提升可用性方式。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　当前位置导航的理想方式是在服务端创建，这样可以大量节省HTML和CSS代码。如果不方便在服务端创建导航，那么使用CSS操纵你的body元素 从而直接定义每个导航标签也是一个不错的方法。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　另外，你可以方便的使用JavaScript创建当前位置导航菜单。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　要注意，你的当前位置导航最好和&lt;a class="fllink" href="http://product.yesky.com/mouse/" target="_bank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;鼠标&lt;/a&gt; 滑过样式保持不同，这是很多网站缩不注意的。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/z2y7846yw69d.jpg" alt="active and hover navigation example" width="398" height="125" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　2. 可用的表单标签和按钮&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　使用HTML的label属性，可以让用户通过点击注释标签来激活表单元素，这是HTML的一个伟大的内置功能，但不幸的是，很少有用户知道这回事。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　怎样让用户了解这个功能呢?你可以通过改变鼠标指针形状的方式来提醒用户，这只需要一两行代码就可以实现。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/0b2qwxka98ll.jpg" alt="form label with hover effect" width="398" height="130" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　做成这样之后，用户就很容易的知道这标签是可以点的，我经常觉得HTML标准里没有把这些可以点的元素统一设置为小手指针是非常不应该的，所以我通常我会这样统一定义：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　label, button, input[type="submit"]{cursor:pointer;}&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　3. 将你的LOGO链接到首页&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　我认为logo不链接到你的网站首页是一件令人沮丧的事情，恰恰有很多网站没有这样做。用户研究表明，这样做是很有必要的，用户需要它!&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　如今越来越多的网站意识到，给LOGO加链接的重要性。用户已不满足于一个标记为“主页”的文字链接，用户希望点一下logo就可以回到首页。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　拿Facebook为例，它为每一个导航元素增加了“ref”属性来跟踪用户点击。如下图：&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/57xoj314yu45.jpg" alt="facebook" width="318" height="99" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　4. 加大链接的点击面积&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　大约一年前，37Signals 的 Ryan Singer 写了一篇文章来介绍它们在 Basecamp 项目中如何增大链接的可点击面积 。这又是一个提升网站可用性的小细节，它只需要你增加链接周围的 padding 值就可以有效增大点击面积。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　对任何网站来说这都是一个值得尝试的方法，它可以方式用户误点或点不到链接。并且对于&lt;a class="fllink" href="http://mobile.yesky.com/" target="_bank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;手机&lt;/a&gt; 网页的设计更为重要，因为很多用户使用手指来点击&lt;a class="fllink" href="http://product.yesky.com/touchscreen/" target="_bank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;触摸屏&lt;/a&gt; 上的链接，增大面积可以帮他们更方便的浏览网页。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/3l40406di397.jpg" alt="iphone" width="358" height="238" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　5. 表单元素焦点显示&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　为处于激活状态的表单元素添加焦点显示，越来越成为UI设计的一种趋势。它让用户了解自己做了什么，在做什么。这是一种简单但有效的向用户传递有用细节信息的方式。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/0jhsy1qeq9fj.jpg" alt="a focused form element" width="398" height="118" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt; &lt;strong&gt;6. 提供有用的404错误页面&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　让网站呈现给用户一个大大的 Apache 错误信息会让人很不爽，创建一个友好的、有用的404错误页面是一个不错的解决方法。因为对非开发者来说，“404”这些数字没有任何意义和价值，用户只希望在网站上找到自己需要的信息。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　要建立一种可以帮助用户正确的找到他们需要的信息的错误提示页面，比如显示一些抱歉的同时，加上搜索框、推荐文章或首页链接等，努力把用户留在网站上，而不要把责任都推给用户输入了错误链接。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　这里有一些优秀的404页面欣赏： 极富创意的404错误页面欣赏&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/9go93ko23290.jpg" alt="404 error" width="286" height="233" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　7. 创造一个舒适的文字环境&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　如今，网站文案撰写已成为了一个很大的话题，做网站有越来越多的细节需要考虑。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　从古到今，关于网站文字内容的讨论从未间断并且其标准在一直变化。当年Steve Krug 曾主张缩减掉一半的文字内容，转而用列表的形式呈现它们。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　但现在不同了，我们需要用和朋友对话的方式来撰写文案，让用户感觉到一种舒适温馨的氛围。这样用户就会少一些局促感，即使他们遇到了使用上的问题，他也会心情愉悦的在网站帮助中寻找解决的办法。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/8uku9a987v59.jpg" alt="couch" width="350" height="170" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　8. 调整行距增强可读性&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　行距是可以从书报杂志等传统媒体直接过度到网页上的元素之一，这些内容的研究和改进已经进行了数百年，已经积累了大量优秀的经验。所以你下次设计之前，大可以先翻翻杂志找找灵感。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　行距是网页设计中经常被忽视或滥用的地方，我通常从1.4倍行距出发开始设计，然后根据设计和内容进行调整。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/557i24d7o936.jpg" alt="example of line height" width="308" height="187" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　9. 使用空白来区分和归类元素&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　将内容元素归类组合是显示内容的一种方式。你可以使用图片、边框或者仅仅是使用空白来归类区分。使用空白归类内容元素可以创造自然和谐的用户体验，即使是匆匆的一瞥，内容也会一目了然。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　用户一眼扫过网页(比如阅读TOP10列表时)，首先会注意标题。我们首先希望的是，我们的网站内容很有趣，能吸引用户进一步阅读。但是对用户进行正确的引导，会对内容的展示起到促进和相得益彰的作用。&lt;/p&gt;&lt;p align="center" style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　&lt;img src="http://homepage.yesky.com/imagelist/2009/162/669193t4ydt8.jpg" alt="whitespace" width="443" height="203" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　10. 无障碍浏览&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　这里并不是指“508法案” ( 即section 508，美国法律，大体上描述为：某些特殊用户群体，如残疾人，浏览某网站时，如果无法正常获得所期望的信息，那可以依据相关法规，对该网站依法起诉。 ) 这里所说的“无障碍”，指的是为你的用户考虑到方方面面，让他们轻松的找到需要的东西。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　如果说保证浏览无障碍可以让你的用户不会发怒，不会甩袖子走人，那么“快速响应”则是你留住用户的最后一道防线。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　如果有决心的话，你可以做所有你能想到的测试，然后多方参考用户的试用意见。目的就是最大限度的留住用户，因为用户个体的意识和习惯之间存在差异，很难找到让所有用户满意的方式。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　谈到“无障碍浏览”和“快速响应”，你可能会首先想到视觉障碍人士，但其含义远远超过这些。例如，你必须让你的网站适应用户的带宽限制(拨号上网，&lt;a class="fllink" href="http://mobile.yesky.com/" target="_bank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;手机&lt;/a&gt; 上网，网速慢等)和旧版本的浏览器(一些公司不会让员工升级浏览器) 。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　如果我们尽最大努力的消除网站使用的障碍，并且快速的相应网站的问题，我们就能建立一个完善的用户体验，给用户留下良好的印象并且还会再次回来。&lt;/p&gt;&lt;div style="text-indent: 28px;"&gt;&lt;span class="Apple-style-span"   style="font-size:130%;color:#444444;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-613746677167406086?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/613746677167406086/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/blog-post_15.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/613746677167406086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/613746677167406086'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/blog-post_15.html' title='提高网站可用性的十个实用小技巧'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-6539239500756905423</id><published>2009-06-15T10:46:00.000+08:00</published><updated>2009-06-15T10:47:47.947+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='RMI'/><title type='text'>十分钟学会Java RMI</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; line-height: 18px; "&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;RMI是Java平台实现远程调用的规范，下面是一个小例子，本机测试通过&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　一共有三个java类，远程接口，服务端程序，客户端程序&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　远程接口:&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;code style="font-style: normal; "&gt;import java.rmi.*;&lt;br /&gt;&lt;br /&gt;public interface HelloIn extends java.rmi.Remote{&lt;br /&gt;　String sayHello() throws RemoteException;&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　服务端程序:&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;code style="font-style: normal; "&gt;/**&lt;br /&gt;* author by http://www.bt285.cn　 http://www.5a520.cn&lt;br /&gt;*/&lt;br /&gt;import java.rmi.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import java.rmi.registry.*;&lt;br /&gt;import java.rmi.server.*;&lt;br /&gt;&lt;br /&gt;public class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn{&lt;br /&gt;　public Hello() throws RemoteException{&lt;br /&gt;　 super();&lt;br /&gt;　}&lt;br /&gt;　public String sayHello() throws RemoteException{&lt;br /&gt;　 return "Hello,World!";&lt;br /&gt;　}&lt;br /&gt;　public static void main(String[] args){&lt;br /&gt;　 //System.setSecurityManager(new java.rmi.RMISecurityManager());&lt;br /&gt;　 try{&lt;br /&gt;　&lt;br /&gt;　　　　　 Hello h=new Hello();&lt;br /&gt;　　　　　 java.rmi.Naming.rebind("hello",h);&lt;br /&gt;　　　　　 System.out.print("Ready......");&lt;br /&gt;　　 }&lt;br /&gt;　　 catch(Exception e){&lt;br /&gt;　　　 e.printStackTrace();&lt;br /&gt;　　 }&lt;br /&gt;　&lt;br /&gt;　}&lt;br /&gt;}&lt;/code&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　执行服务端程序前在命令行方式下启动rmi的注册程序:　 start rmiregistry&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　客户端程序:&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;code style="font-style: normal; "&gt;/**&lt;br /&gt;* author by http://www.bt285.cn　 http://www.5a520.cn&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.rmi.*;&lt;br /&gt;import java.rmi.registry.*;&lt;br /&gt;&lt;br /&gt;public class Helloworld{&lt;br /&gt;　public static void main(String[] args){&lt;br /&gt;　 //System.setProperty( "java.security.policy", "client.policy" );&lt;br /&gt;　 //System.setSecurityManager(new java.rmi.RMISecurityManager());&lt;br /&gt;　 try{&lt;br /&gt;　　 HelloIn hi=(HelloIn)Naming.lookup("//fengl/hello");&lt;br /&gt;　　 for(int i=0;i&lt;10;i++){&lt;br /&gt;　　　 System.out.println(hi.sayHello());&lt;br /&gt;　　 }&lt;br /&gt;　 }&lt;br /&gt;　 catch(Exception e){&lt;br /&gt;　　 e.printStackTrace();&lt;br /&gt;　 }&lt;br /&gt;　 }&lt;br /&gt;　}&lt;/code&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　执行客户端程序前先用　 rmic Hello　 生成Stub 和 Skeleton 的class，它们&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　实际上是远程调用的底层的实现。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　最后执行java Helloworld 控制台打印出 Hello,World，成功调用.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-6539239500756905423?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/6539239500756905423/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/java-rmi.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6539239500756905423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6539239500756905423'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/java-rmi.html' title='十分钟学会Java RMI'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-389425514536120291</id><published>2009-06-12T11:22:00.001+08:00</published><updated>2009-06-12T11:24:47.588+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='demo'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery实现的快速查找</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 11px; "&gt;&lt;div class="post-top" style="width: 613px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(182, 193, 194); overflow-x: hidden; overflow-y: hidden; "&gt;&lt;div class="post-title" style="width: 510px; float: left; margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "&gt;&lt;h2 style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 29px; font-family: Georgia, 'Times New Roman', Times, serif; color: rgb(0, 0, 0); font-weight: normal; "&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-weight: normal; color: rgb(123, 123, 123); font-size: 12px; font-family: Verdana, Geneva, sans-serif; "&gt; By : &lt;span style="color: rgb(247, 148, 29); font-weight: bold; text-transform: capitalize; "&gt;愚人码头&lt;/span&gt; | In : &lt;span class="post_cats" style="color: rgb(0, 0, 0); font-weight: normal; text-transform: capitalize; "&gt;&lt;a href="http://www.css88.com/archives/category/%e5%89%8d%e7%ab%af%e6%a1%86%e6%9e%b6" title="查看 前端框架 的全部文章" rel="category tag" style="color: rgb(0, 0, 0); text-decoration: none; font-weight: normal; text-transform: capitalize; "&gt;前端框架&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:7;color:#CDCDCD;"&gt;&lt;span class="Apple-style-span" style="font-size: 25px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:7;color:#CDCDCD;"&gt;&lt;span class="Apple-style-span" style="font-size: 25px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:7;color:#CDCDCD;"&gt;&lt;span class="Apple-style-span" style="font-size: 25px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 20px; "&gt;jQuery实现的快速查找就是一个列表中查找和你输入的文字相匹配的项，高亮并前置表示；&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entry" style="line-height: 20px; font-size: 13px; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; "&gt;如图：&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; "&gt;&lt;a href="http://www.css88.com/wp-content/uploads/2009/06/2009-06-04_002402.png" style="color: rgb(0, 0, 0); text-decoration: underline; font-weight: bold; "&gt;&lt;img class="alignnone size-full wp-image-1360" title="2009-06-04_002402" src="http://www.css88.com/wp-content/uploads/2009/06/2009-06-04_002402.png" alt="2009-06-04_002402" width="578" height="207" style="border-top-width: 3px; border-right-width: 3px; border-bottom-width: 3px; border-left-width: 3px; border-style: initial; border-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; max-width: 100%; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-width: initial; border-color: initial; border-top-color: rgb(51, 51, 51); border-right-color: rgb(51, 51, 51); border-bottom-color: rgb(51, 51, 51); border-left-color: rgb(51, 51, 51); " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; "&gt;jQuery代码：&lt;span id="more-1359"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="syntaxhighlighter " id="highlighter_919287" style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; padding-top: 1px !important; padding-right: 1px !important; padding-bottom: 1px !important; padding-left: 1px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(231, 229, 220) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: relative !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 613px; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;div class="bar" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;div class="toolbar" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 8px !important; padding-right: 8px !important; padding-bottom: 8px !important; padding-left: 0px !important; border-top-width: 1px !important; border-right-width: 1px !important; border-bottom-width: 1px !important; border-left-width: 1px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: absolute !important; left: auto !important; top: 0px !important; right: 0px !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1px !important; border-top-color: rgb(231, 229, 220) !important; border-right-color: rgb(231, 229, 220) !important; border-bottom-color: rgb(231, 229, 220) !important; border-left-color: rgb(231, 229, 220) !important; border-top-style: solid !important; border-right-style: solid !important; border-bottom-style: solid !important; border-left-style: solid !important; background-position: initial initial !important; "&gt;&lt;a href="http://www.css88.com/archives/1359#viewSource" title="view source" class="item viewSource" style="color: rgb(160, 160, 160) !important; text-decoration: none; display: block !important; float: left !important; margin-left: 8px !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/page_white_code.png) !important; width: 16px; height: 16px; "&gt;view source&lt;/a&gt;&lt;div class="item copyToClipboard" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 8px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; overflow-x: visible !important; overflow-y: visible !important; text-indent: 0px !important; background-position: initial initial !important; "&gt;&lt;embed width="16" height="16" id="highlighter_919287_clipboard" type="application/x-shockwave-flash" title="copy to clipboard" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_919287" menu="false" src="http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/clipboard.swf"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;a href="http://www.css88.com/archives/1359#printSource" title="print" class="item printSource" style="color: rgb(160, 160, 160) !important; text-decoration: none; display: block !important; float: left !important; margin-left: 8px !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/printer.png) !important; width: 16px; height: 16px; "&gt;print&lt;/a&gt;&lt;a href="http://www.css88.com/archives/1359#about" title="?" class="item about" style="color: rgb(160, 160, 160) !important; text-decoration: none; display: block !important; float: left !important; margin-left: 8px !important; background-repeat: no-repeat !important; overflow-x: hidden !important; overflow-y: hidden !important; text-indent: -5000px !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/help.png) !important; width: 16px; height: 16px; "&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="lines" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;01.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;$(&lt;/code&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;function&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;(){&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;02.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 7px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="comments" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 130, 0) !important; background-position: initial initial !important; "&gt;//键盘按键弹起时执行&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;03.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 7px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;$(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'#index'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;).keyup(&lt;/code&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;function&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;(){&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;04.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;var&lt;/code&gt; &lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;index = $.trim($(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'#index'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;).val().toString());&lt;/code&gt;&lt;code class="comments" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 130, 0) !important; background-position: initial initial !important; "&gt;//去掉两头空格&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;05.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;if&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;(index == &lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;''&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;){&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;06.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 21px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;$(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'li'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;).removeClass(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'on'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;);&lt;/code&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;return&lt;/code&gt; &lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;false&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;07.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;}&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;08.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="keyword" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: bold !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 102, 153) !important; background-position: initial initial !important; "&gt;var&lt;/code&gt; &lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;parent = $(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'ul'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;09.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;$(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'li'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;).removeClass(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'on'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;10.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="comments" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 130, 0) !important; background-position: initial initial !important; "&gt;//选择包含文本框值的所有加上focus类样式，并把它（们）移到ul的最前面&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;11.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 14px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;$(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;"li:contains('"&lt;/code&gt; &lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;+ index + &lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;"')"&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;).prependTo(parent).addClass(&lt;/code&gt;&lt;code class="string" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: blue !important; background-position: initial initial !important; "&gt;'on'&lt;/code&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;);&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt2" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;12.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(248, 248, 248) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 7px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;});&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="line alt1" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; background-position: initial initial !important; "&gt;&lt;code class="number" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0.3em !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: right !important; float: left !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: 3em !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; color: rgb(92, 92, 92) !important; background-position: initial initial !important; "&gt;13.&lt;/code&gt;&lt;span class="content" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 3.3em !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 3px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: rgb(255, 255, 255) !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; border-left-style: solid !important; border-left-color: rgb(108, 226, 108) !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;&lt;span class="block" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 1.5em !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: url(http://www.css88.com/wp-content/plugins/syntaxhighlighter2/files/wrapping.png) !important; background-repeat: no-repeat !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; display: block !important; text-indent: -1.5em !important; background-position: 0px 1.1em !important; "&gt;&lt;code class="plain" style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 0px !important; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-style: initial !important; border-color: initial !important; outline-width: 0px !important; outline-style: initial !important; outline-color: initial !important; background-image: none !important; background-repeat: initial !important; background-attachment: initial !important; -webkit-background-clip: initial !important; -webkit-background-origin: initial !important; background-color: initial !important; text-align: left !important; float: none !important; vertical-align: baseline !important; position: static !important; left: auto !important; top: auto !important; right: auto !important; bottom: auto !important; height: auto !important; width: auto !important; line-height: 1.1em !important; font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-weight: normal !important; font-style: normal !important; font-size: 1em !important; color: rgb(0, 0, 0) !important; background-position: initial initial !important; "&gt;});&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 15px; padding-left: 0px; "&gt;完整 DEMO:&lt;a href="http://www.css88.com/demo/jQuery/quickSearch/quickSearch.html" target="_blank" style="color: rgb(0, 0, 0); text-decoration: underline; font-weight: bold; "&gt;http://www.css88.com/demo/jQuery/quickSearch/quickSearch.html&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-389425514536120291?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/389425514536120291/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/jquery_12.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/389425514536120291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/389425514536120291'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/jquery_12.html' title='jQuery实现的快速查找'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-5319777408284369933</id><published>2009-06-11T13:36:00.001+08:00</published><updated>2009-06-11T14:04:40.221+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaScript'/><title type='text'>JavaScript 原型链</title><content type='html'>&lt;textarea style="margin-left: 0px; margin-right: 0px; width: 694px; margin-top: 1px; margin-bottom: 1px; height: 241px; "&gt;&lt;span class="Apple-style-span"   style="  white-space: pre-wrap; font-family:-webkit-monospace;font-size:13px;"&gt;&lt;script type="text/javascript"&gt;  /*    每个对象实例都有个属性成员用于指向到它的instanceof 对象(暂称为父对象)的原型(prototype)    我们把这种层层指向父原型的关系称为[原型链 prototype chian]    原型也具有父原型，因为它往往也是一个对象实例，除非我们人为地去改变它     在JavaScript中，"一切都是对象，函数是第一型。"    Function和Object都是函数的实例。    Function的父原型指向到Function的原型，Function.prototype的父原型是Object的原型    Object的父原型也指向到Function的原型，Object.prototype是所有父原型的顶层     在spiderMonkey引擎中，父原型可以通过 __proto__ 进行访问 */  Function.prototype.hi = function(){alert('hi Function');} Object.prototype.hi = function(){alert('hi Object');}  var a = function(){     this.txt = "a"; } a.prototype = {     say:function(){alert('a');} }  alert(a instanceof Function);//a是Function的实例; alert(a.__proto__ === Function.prototype);//a的父原型指向到Function的原型;  alert(Function instanceof Object);//Function是Object的实例; alert(Function.__proto__ === Function.prototype);//Function的父原型指向到Function的原型; alert(Function.prototype.__proto__ === Object.prototype);//Function的原型的父原型指向到Object的原型  alert(Object.__proto__ === Function.prototype);//Object的父原型指向到Function的原型; alert(Object.prototype.__proto__);//Object的原型是所有父原型的顶端，它不再具有父原型;   alert(a.prototype instanceof Object);//a的原型也是一个对象 alert(a.prototype.__proto__ === Object.prototype);//a的原型的父原型指向Object的原型    var A = function(){}; A.prototype = new a(); A.prototype.say = function(){     alert('A'); }  alert(A instanceof Function);//A是Function的实例 alert(A.__proto__ === Function.prototype);//A的父原型指向到Function的原型 alert(A.prototype instanceof a);//A的原型是a的实例 alert(A.prototype.__proto__ === a.prototype);//A的原型的父原型指向到a的原型   var iA = new A();//iA是A的实例,iA.__proto__ === A.prototype var iB = new a();//iB是a的实例,iB.__proto__ === a.prototype  iA.hi(); /* iA本身没有hi方法（构造中没有，自己也没有定义过）， 于是找iA.__proto__即A.prototype，也没有找到， 于是再找A.prototype.__proto__即a.prototype，仍然没有发现， 继续查找a.prototype.__proto__即Object.prototype，哇，发现了hi，于是调用它，停止查找 输出：hi Object */  iB.hi(); /* iB本身没有hi方法（构造中没有，自己也没有定义过）， 于是找iB.__proto__即a.prototype，仍然没有发现， 继续查找a.prototype.__proto__即Object.prototype，哇，发现了hi，于是调用它，停止查找 输出：hi Object */  a.hi(); /* a本身没有hi方法（构造中没有，自己也没有定义过）， 于是找a.__proto__既Function.prototype，哇，发现了hi，于是调用它，停止查找 输出：hi Function */  iA.say(); /* iA本身没有say方法（构造中没有，自己也没有定义过）， 于是找iA.__proto__即A.prototype，哇，发现了say，于是调用它，停止查找 所以，这里调用的是A.prototype.say 输出：A */  iB.say(); /* iB本身没有say方法（构造中没有，自己也没有定义过）， 于是找iB.__proto__即a.prototype，哇，发现了say，于是调用它，停止查找 所以，这里调用的是a.prototype.say 输出：a */  iA.bad(); /* iA本身没有bad方法（构造中没有，自己也没有定义过）， 于是找iA.__proto__即A.prototype，也没有找到， 于是再找A.prototype.__proto__即a.prototype，仍然没有发现， 继续查找a.prototype.__proto__即Object.prototype，终于是找不到了，停止查找 返回错误，iA.bad不是一个function */  &lt;/script&gt;  感谢simon提出的修正意见！所有实例在查找属性方法时不会去查找自己的prototype(实例的prototype不在原型链内，只能作为一个属性)！  &lt;/span&gt;&lt;/textarea&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-5319777408284369933?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/5319777408284369933/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascript.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5319777408284369933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/5319777408284369933'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/javascript.html' title='JavaScript 原型链'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-3955595807862018634</id><published>2009-06-10T17:11:00.002+08:00</published><updated>2009-06-10T17:11:57.551+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><title type='text'>Google Wave的架构</title><content type='html'>作者 Abel Avram 译者 王丽娟 发布于 2009年6月3日 上午12时54分&lt;br /&gt;社区 Architecture 主题 协作 标签 Google Wave&lt;br /&gt;Google Wave是一个工具，也是一个平台、还是一个协议。其架构的核心是操作转换（Operational Transformation，OT），这是一个支持并发控制的理论型框架。&lt;br /&gt;&lt;br /&gt;首先需要看看Google Wave的定义：&lt;br /&gt;&lt;br /&gt;Google Wave是基于托管型XML文档（称为Wave）的新型沟通、协作平台，支持并发修改和低延迟更新。&lt;br /&gt;&lt;br /&gt;工具&lt;br /&gt;&lt;br /&gt;Google Wave是一个兼备电子邮件、即时通讯、协作文档共享和编辑的工具。在Chrome、Firefox、Safari等浏览器里运行的客户端中（包括移动平台iPhone和Android），Wave使用JavaScript和HTML5，Wave在服务器端则结合使用Java和Python，但服务器端可以用用户希望的任何方式来实现。该工具用GWT构建，并使用Google Gears处理HTML 5中尚未包含的拖拽。该工具需要专门的服务器来处理并发通讯，大型团队尤其需要这样的服务器。服务器可以放在企业外的云里，也可以放置在私有企业内部，或者只是放在某人的家里。&lt;br /&gt;&lt;br /&gt;Google Wave上周在Google I/O大会期间进行了展示。&lt;br /&gt;&lt;br /&gt;平台&lt;br /&gt;&lt;br /&gt;Google Wave带有一个公共的API，Google公司承诺在产品正式上线之前会开源整个平台。作为平台，Wave允许开发人员修改基础代码、使用Gadgets和Robots对其进行扩展。Gadgets是运行在Wave中的小程序，而Robots则是“自动的Wave参与者”。Wave还可以嵌到博客等其它媒体当中。&lt;br /&gt;&lt;br /&gt;协议&lt;br /&gt;&lt;br /&gt;数据模型&lt;br /&gt;&lt;br /&gt;Google Wave数据模型的主要元素有：&lt;br /&gt;&lt;br /&gt;Wave——每个Wave都有一个全局唯一的Wave ID，并包含一组Wavelet。&lt;br /&gt;&lt;br /&gt;Wavelet——Wavelet在其所属的Wave中有一个唯一ID，Wavelet由一个参与者列表和一组文档组成。Wavelet是并发控制/操作转换请求的实体。&lt;br /&gt;&lt;br /&gt;参与者——参与者由Wave地址确定，Wave地址是文本字符串，格式与电子邮件地址相同（local-part@domain）。参与者可以是用户，也可以是组，或者是Robot。每个参与者在参与者列表中最多可出现一次。&lt;br /&gt;&lt;br /&gt;文档——文档在其所属的Wave中有一个唯一ID，由一个XML文档和一组“分离”注解组成。分离注解指向XML文档，不依赖于XML文档的结构。它们用来表示文本格式、拼写建议和超链接。文档在Wavelet中构成一棵树。&lt;br /&gt;&lt;br /&gt;Wave视图——Wave视图是特定用户在一个Wave中访问的Wavelet子集。用户只要是Wavelet的参与者，或者是参与者组的成员（组可以嵌套），都可以访问Wavelet。&lt;br /&gt;&lt;br /&gt;操作转换&lt;br /&gt;&lt;br /&gt;这是Wave技术的重要组成部分。Google Wave广泛使用了在服务器端执行的操作转换（OT）。 当用户编辑多个用户同时打开的协作文档时，客户端程序会提供一个Optimistic UI，立即显示用户输入的内容，同时将编辑操作发送给服务器，希望该操作能被服务器接收。客户端等待服务器评估该操作，在服务器应答之前会缓存其它所有的操作。服务器应答之后，所有被缓存的操作会从客户端批量发送到服务器。服务器考虑从其它客户端接收到的操作，相应地转换操作，并将该转换通知给所有的客户端，客户端相应地更新其UI。操作被发送至服务器，并由特性规则根据特性传播到各个客户端，除非该操作是批量操作。服务器是文档及其版本的管理者，其中版本被认为是“正确的”版本。最后，各个客户端会根据从服务器接收到的最终版本进行更新，该最终版本可能是很多操作转换的结果。还有很多针对通讯失败或服务器/客户端崩溃而提供的恢复措施。为了迅速地识别误传，在客户端和服务器间交换的所有XML文档只带一个总和校验码。&lt;br /&gt;&lt;br /&gt;客户端-服务器协议&lt;br /&gt;&lt;br /&gt;操作。Wave的基本组成部分Wavelet经过一系列被称为操作转换的改变。这些改变需要传播并应用到每个客户端，否则客户端就不能同步。&lt;br /&gt;&lt;br /&gt;操作队列。所有对Wavelet的操作都按照严格的顺序发送。服务器对一个操作做出响应之后，下一个操作才会被发送。服务器基于版本号给操作排序。每个客户端都要按照合适的顺序应用操作。&lt;br /&gt;&lt;br /&gt;打开Wavelet。要开始与Wavelet通讯，客户端要给服务器发送一个Open请求，里面包含Wave ID和Wavelet ID。服务器响应是一个快照——Wavelet的序列化状态，或者是相应版本的历史散列。&lt;br /&gt;&lt;br /&gt;服务器到客户端的通讯。服务器发送到客户端的内容是Delta（一或多个操作的序列）、版本号和历史散列之一。&lt;br /&gt;&lt;br /&gt;客户端到服务器的通讯。客户端发送的内容是Delta或版本号。&lt;br /&gt;&lt;br /&gt;恢复。通讯失败时，客户端通过发送先前从服务器接收到的散列历史重新打开Servlet。&lt;br /&gt;&lt;br /&gt;联盟&lt;br /&gt;&lt;br /&gt;Google Wave Federation协议允许多个实体（Wave提供者）彼此分享Waves。Wave提供者可以是在某人家里运行的服务器，为单个用户或所有家庭成员提供Wave，也可以是一家公司、或一个ISP，Google只是另一个Wave提供者。&lt;br /&gt;&lt;br /&gt;有用的链接：Google Wave、Google Wave API、Wave协议。&lt;br /&gt;&lt;br /&gt;查看英文原文：Google Wave’s Architecture&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-3955595807862018634?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/3955595807862018634/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-wave.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/3955595807862018634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/3955595807862018634'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-wave.html' title='Google Wave的架构'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-6416893179684499045</id><published>2009-06-10T16:59:00.000+08:00</published><updated>2009-06-10T17:00:47.358+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Wave'/><title type='text'>Google Wave将基于BSD协议开源</title><content type='html'>责任编辑：覃里作者：InfoQ   2009-06-09   &lt;br /&gt;文本Tag： BSD html Google&lt;br /&gt;　　【IT168资讯】在6月5日于北京举行的谷歌开发者日上，谷歌向参会者介绍了其下一代产品Google Wave以及其背后的HTML 5标准。开源代码倡导者、谷歌主管开源代码的经理Chris DiBona，他表示未来Google Wave将以BSD协议开发源代码。&lt;br /&gt;　　从谷歌移动产品团队工程主管Dave Burke的Google Wave介绍和演示中，可以看出“整合”对于互联网的作用。Google Wave所采用的技术基本都是目前所常用的，比如E-mail、IM、文档、博客和图片等。在Wave中，你可以创建一个富文本格式的邮件，然后与相关人 同时进行编辑，而且所有参与人员都可以同时看到所编辑的区域，如果你对邮件编辑的历史感兴趣，通过一个进度条样式的工具就可以回溯定位到所有修改的地方。 另外一个有意思的地方是，如果你在Wave中分享的图片被发布到博客上，那么在Wave中对这些图片的评论也会同时显示到博客上，让协作变得无处不在。&lt;br /&gt;　　Google Wave只是HTML语言下一个版本HTML 5的实验作品，在谷歌全球副总裁、大中华区总裁李开复的介绍中，他提到了HTML 5的五个主要功能：&lt;br /&gt;　　·在浏览器中直接控制图形的编辑，可以达到像素级别;&lt;br /&gt;　　·让整合和编辑视频变得非常容易，甚至可以对视频中每一帧进行修改;&lt;br /&gt;　　·可以容易地标识出每个上网者的位置，让地图应用更加精细化;&lt;br /&gt;　　·通过应用缓存和数据库技术，使得网络应用无处不在，让断网成为历史;&lt;br /&gt;　　·Web Workers提供的多线程功能可以在不影响用户界面的情况下在后台执行任务。&lt;br /&gt;　　对于谷歌最近发行的一个用于开发多媒体动画的平台O3D，李开复表示谷歌也在努力使其成为HTML 5的一部分，让在浏览器中用JavaScript开发三维图形和三维网络应用成为可能。另外，目前O3D支持的浏览器包括Chrome、Firefox、 Safari和Opera等，没有提到是否支持微软IE浏览器。&lt;br /&gt;　　在InfoQ中文站对Chris DiBona的采访中，他提到谷歌在未来将基于BSD协议开源Google Wave：&lt;br /&gt;　　选择BSD协议的原因很简单，我们就是希望能够给予希望使用Google Wave代码的人更多的自由度，他可以随意修改源代码，自由使用，基于Wave开发的应用也可以方便地作为商业产品等。而其他协议，包括GPL，都不具备这么大的灵活性。&lt;br /&gt;　　除了介绍新产品Google Wave、O3D和新标准HTML 5外，李开复还简要回顾了其他谷歌代表性产品在过去一年的进展，比如由于携程网、赶集网、大众点评网、去哪儿等数千个中文网站采用谷歌地图API，其地图 API使用量在过去一年增长了8倍;而移动设备综合平台Android目前也已覆盖12个国家，并获得10个移动运营商的支持，其中包括中国移动、中国联 通、华为等;OpenSocial标准也取得包括校内网、51.com、天涯、聚友网和一起网等5个国内主要社区的支持等。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-6416893179684499045?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/6416893179684499045/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-wavebsd.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6416893179684499045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/6416893179684499045'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/google-wavebsd.html' title='Google Wave将基于BSD协议开源'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-8494664975189788221</id><published>2009-06-04T10:46:00.000+08:00</published><updated>2009-06-04T10:51:50.214+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>JSF自定义复合组件的技巧和窍门</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 12px; line-height: 18px; "&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;JavaServer Faces(JSF)提供可扩展的组件模型，开发人员可以创建可重用的组件，使用这些自定义组件提高开发效率和降低开发成本。虽然对于定制和重用而言 JSF 的组件模型非常强大，但是开发人员普遍认为开发 JSF 自定义组件并不容易，因为通常至少需要熟悉 JSF encode/decode 和 state holder 的内部机制并覆盖相应的方法(参考“怀疑论者的 JSF: JSF 组件开发”所述)，如 encodeBegine()、decode()、saveState() 和 restoreState() 等，对于开发复杂的自定义组件，甚至需要深入理解更多的接口，如 NamingContainer、StateHolder、EditableValueHolder 和 ActionSource 等接口。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　然而，重用 JSF 标准组件的功能可以极大地简化自定义组件的开发，尤其对于自定义复合组件更是如此。在大部分情况下，我们可以重用 JSF 框架已经提供的标准渲染器、状态管理、事件监听器、&lt;a class="nounderline" title="转换器" href="http://product.it168.com/list/b/0420_1.shtml" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;转换器&lt;/a&gt;和验证器。已有的文章或书籍对如何重用这些标准功能涉及很少，本文基于重用的策略提出快速开发 JSF 自定义复合组件的原则和技巧。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　本文首先总结了 JSF 组件开发的通用原则，然后通过一个例子(Value Scroller 自定义复合组件)的开发详解说明了哪些标准功能可以重用以及如何重用，以达到简化 JSF 自定义复合组件开发的目的。原则与技巧&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt; &lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　开发 JSF 自定义复合组件主要有两个原则，一方面强调重用已有的标准组件;另一方面如何确保自定义组件易于重用。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　1.尽可能的重用标准组件的功能和实现&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　传统的自定义复合组件开发建议完全覆盖实现 encode/decode 逻辑，但这样做耗费时间而且容易出错。毫无疑问，我们可以通过重用标准组件的渲染器等机制减少甚至根本不用自行编写这部分代码。另外，为了实现灵活的配置和使用，自定义复合组件通常需要提供很多属性，我们需要写很多代码来处理这些属性的读写和状态管理。实际上，我们可以简单地把自定义复合组件的属性传递给它自身包含的标准组件，由已有的标准代码去处理这些属性，而不用重复写这些代码。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　2.清晰地分离组件类、标签类和模型类&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　JSF 的组件模型建议在组件类、标签类和模型类之间有明确清晰的责任分配，以便于重用和扩展。组件类不应该依赖于 javax.faces.component.html 包，因为组件类不仅可以用于 HTML，而且还应该可以重用于其它标记语言(如 WML)。也就是说组件类不应该直接引用 javax.faces.component.html 包内的 HTML 组件。例如，在你的组件类中创建一个 HtmlCommandButton 的实例是不可取的，你应该考虑用 javax.faces.component 包中的 UICommand 。另一方面，如果你希望你的模型类可以重用于不同的 Web 框架，那么你的模型类就不应该依赖于 JSF 的任何包，即模型类只表示业务对象而不包含任何用户界面相关的组件、数据和状态。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　基于这些原则，对比传统方式和本文介绍的技巧，我们可以发现基于重用的开发策略会极大简化 JSF 自定义复合组件的编写。开发 JSF 自定义组件通常需要如下 3 个步骤(参考“怀疑论者的 JSF: JSF 组件开发”)。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　1.扩展 UIComponent&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　·传统方式：创建一个类，扩展 UIComponent，保存组件状态，在 faces-config.xml 中注册组件&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　重用技巧：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　·选择 UIPanel 作为布局容器，重用标准组件作为复合组件的子组件。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　·实现内部动作监听器。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　2.定义渲染器或者内联实现它&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　传统方式：覆盖实现 encode/decode，在 faces-config.xml 中注册渲染器。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　重用技巧：重用标准渲染器类型。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　3.创建自定义标签，继承 UIComponentTag&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　传统方式：返回渲染器类型和组件类型，设置 JSF 表达式属性&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　重用技巧：传递属性值给作为子组件的标准组件。示例概述&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　我们通过一个自定义复合组件 Value Scroller 的开发步骤说明如何运用多种技巧重用标准组件的功能和实现，达到简化开发易于重用的目的。 Value Scroller 可以让你通过点击增值或减值按钮来输入数值，而不用手工键入，如 图 1 所示。这个示例只包含最基本的功能，如只支持整型数值输入，但对于本文要介绍的内容已经足够了。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　图 1. 测试页面中的 Value Scroller　&lt;/p&gt;&lt;div id="div5523274"&gt;&lt;img id="img5523274" src="http://image3.it168.com//2009/6/3/8e7f60f7-a7b9-4588-8294-002b6dedd462.jpg" border="0" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　图 2 说明了 Value Scroller 的基本类结构，遵循 MVC 模式。组件类 ValueScroller 扩展了 UIPanel，作为控制器(Controller)负责与用户的交互。标签类 ValueScrollerTag 继承了 UIComponentTag， 作为视图(View)处理页面显示。与 Value Scroller 绑定的值对象作为模型(Model)&lt;a class="nounderline" title="存储" href="http://storage.it168.com/" target="_blank" style="text-decoration: none; color: rgb(0, 102, 153); "&gt;存储&lt;/a&gt;用户键入的数值。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　图 2. Value Scroller 的类结构　　&lt;/p&gt;&lt;div id="div8982155"&gt;&lt;img id="img8982155" src="http://image3.it168.com//2009/6/3/f8b5734a-68ba-43ce-897f-ff2d52c43710.jpg" border="0" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　在后面章节中，本文将结合 Value Scroller 示例说明如何应用前面提到的原则和技巧快速开发 JSF 自定义复合组件。　选择 UIPanel 作为容器&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　创建 JSF 自定义复合组件的第一步就是要选择一个标准组件类进行扩展。通常我们会考虑将这个组件类作为容器，在其中嵌入子组件，从而构成复合组件。这里选择继承 UIPanel 作为 Value Scroller 的容器，以 Grid 的方式渲染生成页面，并且其中包含一个 UIInput 和两个 UICommand，分别作为数值输入框和加减值按钮，如 清单 1 所示：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 1. 扩展类 UIPanel　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class ValueScroller extends UIPanel {&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; The default constructor&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; ValueScroller() {&lt;br /&gt;&lt;br /&gt;　　super();&lt;br /&gt;&lt;br /&gt;　　addChildrenAndFaces();&lt;br /&gt;&lt;br /&gt;　　}&lt;br /&gt;&lt;br /&gt;　　}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　作为 Value Scroller 子组件的那些标准组件将在 addChildrenAndFaces 方法中加入布局容器之中。重用标准渲染器类型&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　接着，我们开始创建 Value Scroller 的子组件，并且实现渲染器的功能。按照传统方式，必须覆盖 UIComponent 的 encodeBegin() 和 decode() 方法，但是，如果我们开发的复合组件只是由多个标准组件构成，我们完全可以将不依赖于特定标记语言的标准组件基类加入到自定义组件中，并且为每个标准组件设定一个标准的渲染器类型，就可以完成复合组件要实现的渲染器功能。重用标准组件渲染器类型好处在于两方面：减少开发的工作量和可能出错的机会，对于 JSF 初学者尤为重要;不用实现与特定标记语言相关的 encode/decode 逻辑，使组件类更易于重用。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　“JavaServer Faces 实战” 这本书列出了 JSF 规范提供的标准渲染器类型。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　表 1. JSF 标准渲染器　&lt;/p&gt;&lt;div id="div8671732"&gt;&lt;img id="img8671732" src="http://image3.it168.com//2009/6/3/a88142cb-8d5c-4ed3-996d-800d65d7dcf9.jpg" border="0" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　从 表 1 可以看出，一个组件基类通常对应于多个渲染器类型(如果使用 HTML 作为标记语言，即对应于多个 HTML 元素)，因为组件基类只定义了通用的数据和行为。比如说，UICommand 有两个 HTML 子类 HtmlCommandButton 和 HtmlCommandLink，分别对应于渲染器类型 javax.faces.Link 和 javax.faces.Button 。当我们想在一个复合组件内部包含一个链接时，只需要创建一个 UICommand 实例，并将其渲染器类型设置为 javax.faces.Link，而不用从头覆盖实现 encodeBegin() 和 decode() 方法。清单 2 列出了 Value Scroller 中的子组件如何在组件类 ValueScroller 中被创建，以及渲染器等属性如何被设定。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 2. 重用标准渲染器创建自定义复合组件　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; static final &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; PANEL_GRID_RENDERER &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;javax.faces.Grid&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; static final &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; INPUT_TEXT_RENDERER &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;javax.faces.Text&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; static final &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; COMMAND_LINK_RENDERER &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;javax.faces.Link&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; static final &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; GRAPHIC_IMAGE_RENDERER &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;javax.faces.Image&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;/**&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; Add children &lt;/span&gt;&lt;span&gt;to&lt;/span&gt;&lt;span&gt; the base container&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; void addChildrenAndFaces() {&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Set&lt;/span&gt;&lt;span&gt; attributes of the base container&lt;br /&gt;&lt;br /&gt;　　this.setRendererType(PANEL_GRID_RENDERER);&lt;br /&gt;&lt;br /&gt;　　this.getAttributes().put(COLUMNS_ATTRIBUTE, &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;));&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Add the input component&lt;br /&gt;&lt;br /&gt;　　input &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UIInput();&lt;br /&gt;&lt;br /&gt;　　input.setId(INPUT_ID);&lt;br /&gt;&lt;br /&gt;　　input.setRendererType(INPUT_TEXT_RENDERER);&lt;br /&gt;&lt;br /&gt;　　this.getChildren().add(input);&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Add the container of the up &lt;/span&gt;&lt;span&gt;and&lt;/span&gt;&lt;span&gt; down links&lt;br /&gt;&lt;br /&gt;　　UIPanel linkContainer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UIPanel();&lt;br /&gt;&lt;br /&gt;　　linkContainer.setId(LINKPANEL_ID);&lt;br /&gt;&lt;br /&gt;　　linkContainer.setRendererType(PANEL_GRID_RENDERER);&lt;br /&gt;&lt;br /&gt;　　linkContainer.getAttributes().put(COLUMNS_ATTRIBUTE, &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;));&lt;br /&gt;&lt;br /&gt;　　ScrollerActionListener listener &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; ScrollerActionListener();&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Add the up link&lt;br /&gt;&lt;br /&gt;　　UICommand upLink &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UICommand();&lt;br /&gt;&lt;br /&gt;　　upLink.setId(UPLINK_ID);&lt;br /&gt;&lt;br /&gt;　　upLink.setRendererType(COMMAND_LINK_RENDERER);&lt;br /&gt;&lt;br /&gt;　　upLink.addActionListener(listener);&lt;br /&gt;&lt;br /&gt;　　UIGraphic upImage &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UIGraphic();&lt;br /&gt;&lt;br /&gt;　　upImage.setId(UPIMAGE_ID);&lt;br /&gt;&lt;br /&gt;　　upImage.setRendererType(GRAPHIC_IMAGE_RENDERER);&lt;br /&gt;&lt;br /&gt;　　upImage.setUrl(UPIMAGE_URL);&lt;br /&gt;&lt;br /&gt;　　upLink.getChildren().add(upImage);&lt;br /&gt;&lt;br /&gt;　　linkContainer.getChildren().add(upLink);&lt;br /&gt;&lt;br /&gt;　　&lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Add the down link&lt;br /&gt;&lt;br /&gt;　　UICommand downLink &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UICommand();&lt;br /&gt;&lt;br /&gt;　　downLink.setId(DOWNLINK_ID);&lt;br /&gt;&lt;br /&gt;　　downLink.setRendererType(COMMAND_LINK_RENDERER);&lt;br /&gt;&lt;br /&gt;　　downLink.addActionListener(listener);&lt;br /&gt;&lt;br /&gt;　　UIGraphic downImage &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; UIGraphic();&lt;br /&gt;&lt;br /&gt;　　downImage.setId(DOWNIMAGE_ID);&lt;br /&gt;&lt;br /&gt;　　downImage.setRendererType(GRAPHIC_IMAGE_RENDERER);&lt;br /&gt;&lt;br /&gt;　　downImage.setUrl(DOWNIMAGE_URL);&lt;br /&gt;&lt;br /&gt;　　downLink.getChildren().add(downImage);&lt;br /&gt;&lt;br /&gt;　　linkContainer.getChildren().add(downLink);&lt;br /&gt;&lt;br /&gt;　　this.getChildren().add(linkContainer);&lt;br /&gt;&lt;br /&gt;　　}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;将属性值传递给标准组件&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　我们先看一下标签描述文件(TLD)中定义的 Value Scroller 提供的属性。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 3. 在 TLD 中定义自定义复合组件的属性　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;tag&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;valueScroller&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;tag&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;component.taglib.ValueScrollerTag&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;tag&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;JSP&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;content&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;ValueScroller ID&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;ValueScroller value&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;Input field size&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;min&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;Minimum value&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;max&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;Maximum value&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;step&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;Scrolling step&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;description&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;attribute&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;tag&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　我们看到，除了 min/max/step 是自定义的属性之外，其他的都属于 JSF 标准组件的属性，可以直接传递给构成 Value Scroller 的标准组件处理，完全不用为这些标准组件的属性覆盖实现方法 saveState() 和 restoreState() 。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　通常有两种方法传递属性值。当你需要对属性进行一些额外的操作(如验证或者转换等)，可以在标签类 ValueScrollerTag 中将属性传递给自定义组件类，如下所示：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 4. 传递自定义属性　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; Override the setProperties method&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;span&gt;&lt;br /&gt;protected void setProperties(UIComponent component) {&lt;br /&gt;    super.setProperties(component);&lt;br /&gt;  &lt;br /&gt;    ValueScroller vs &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (ValueScroller)component;&lt;br /&gt;  &lt;br /&gt;    Application app &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; FacesContext.getCurrentInstance().getApplication();&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Set&lt;/span&gt;&lt;span&gt; value attribute&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (value !&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;) {&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (isValueReference((&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;)value)) {&lt;br /&gt;            ValueBinding vb &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; app.createValueBinding((&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;)value);&lt;br /&gt;            vs.setValueBinding(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;, vb);&lt;br /&gt;        } &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;br /&gt;            throw &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; IllegalArgumentException(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;The value property must be a value &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;binding expression that points to a bean property.&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;  &lt;br /&gt;    &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Set&lt;/span&gt;&lt;span&gt; id attribute&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (id !&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;) {&lt;br /&gt;        vs.setId((&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;)id);&lt;br /&gt;    }&lt;br /&gt;  &lt;br /&gt;    &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Set&lt;/span&gt;&lt;span&gt; other attributes&lt;br /&gt;    vs.setMin(min);&lt;br /&gt;    vs.setMax(max);&lt;br /&gt;    vs.setStep(step);&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　另外一种方法就是在标签类 ValueScrollerTag 中直接把属性值加入相应标准组件的属性 Map 。例如，将 size 属性传递给自定义复合组件包含的 UIInput：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 5. 传递标准属性&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;　　vs.findComponent(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;input&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;).getAttributes().put(&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(size));实现内部动作监听器&lt;/span&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　在 Value Scroller 中，点击增值或减值按钮，输入框内的值会随之增大或者减小。我们可以简单地在组件类 ValueScroller 中实现一个内部动作监听器，重用 UICommand 的事件处理逻辑。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 6. 实现 Value Scroller 动作监听器　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/**&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; Internal action listener &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; Value Scroller&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; _cnnew1@author cll&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;*/&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt; class ScrollerActionListener implements ActionListener {&lt;br /&gt;    &lt;/span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; void processAction(ActionEvent e) {&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Only &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;is&lt;/span&gt;&lt;span&gt; supported &lt;/span&gt;&lt;span&gt;for&lt;/span&gt;&lt;span&gt; this demo&lt;br /&gt;        &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (input.getValue() instanceof &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;) {&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; commandId &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ((UICommand)e.getSource()).getId();&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; value &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; ((&lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;)input.getValue()).intValue();&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Increase value &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; the up link &lt;/span&gt;&lt;span&gt;is&lt;/span&gt;&lt;span&gt; clicked&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (commandId.equals(UPLINK_ID)) {&lt;br /&gt;                &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (value &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; getStep() &lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt; max) {&lt;br /&gt;                    input.setValue(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(max));&lt;br /&gt;                } &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;br /&gt;                    input.setValue(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(value &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; getStep()));&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;//&lt;/span&gt;&lt;span&gt; Decrease value &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; the down link &lt;/span&gt;&lt;span&gt;is&lt;/span&gt;&lt;span&gt; clicked&lt;br /&gt;            &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (commandId.equals(DOWNLINK_ID)) {&lt;br /&gt;                &lt;/span&gt;&lt;span&gt;if&lt;/span&gt;&lt;span&gt; (value &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; getStep() &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt; min) {&lt;br /&gt;                    input.setValue(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(min));&lt;br /&gt;                } &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;br /&gt;                    input.setValue(&lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt;(value &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; getStep()));&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        } &lt;/span&gt;&lt;span&gt;else&lt;/span&gt;&lt;span&gt; {&lt;br /&gt;            throw &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; IllegalArgumentException(&lt;br /&gt;          &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;Unsupported binding type, &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;br /&gt;          &lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;and only Integer instance allowed for this demo.&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　最后，在调用 addChildrenAndFaces 方法创建添加子组件的时候，将这个自定义动作监听器添加到增值和减值组件中去。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 7. 注册 Value Scroller 动作监听器　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;ScrollerActionListener listener &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; ScrollerActionListener();&lt;br /&gt;&lt;br /&gt;　　upLink.addActionListener(listener);&lt;br /&gt;&lt;br /&gt;　　downLink.addActionListener(listener);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　使用 Value Scroller&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　Value Scroller 的开发已经完成，使用也非常简单，首先在 faces-config.xml 中声明引用 Value Scroller，如下所示：&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 8. 在 faces-config.xml 中声明引用 Value Scroller　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;xyz.ValueScroller&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;type&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;    component.ValueScroller&lt;br /&gt;  &lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;component&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　然后，在测试 JSP 页面 Test.jsp 上包含 Value Scroller 的标签描述文件。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 9. 在 JSP 中包含 Value Scroller 的 TLD　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;%@ taglib uri&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;/WEB-INF/lib/ValueScroller.tld&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; prefix&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;xyz&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　最后，在 Test.jsp 页面上使用 Value Scroller 的标签，并且指定 size/min/max/step 属性值，部署运行，就可以看到 图 1 所示的结果了。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　清单 10. 在 JSP 中创建 Value Scroller 并设置属性　　&lt;/p&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;&lt;/span&gt;&lt;span&gt;xyz:valueScroller value&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;#{pc_Test.itemCount}&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; min&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;-50&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; max&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;10000&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt; step&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;"&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/&lt;/span&gt;&lt;span&gt;xyz:valueScroller&lt;/span&gt;&lt;span&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;&lt;strong&gt;　　结束语&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;　　我们可以看到，本文介绍的自定义复合组件 Value Scroller 的实现没有编写 encode/decode 和 state/event 管理相关的逻辑，简单、快速、并且易于重用。本文总结的 JSF 自定义复合组件的开发技巧在很大程度上降低了复杂度和工作量，优于传统的开发方式。&lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt; &lt;/p&gt;&lt;p style="text-indent: 2em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; color: rgb(68, 68, 68); line-height: 22px; font-size: 14px; "&gt;作者：&lt;strong class="red"&gt;IBM 陈荔龙 Ealine Zhan 齐克科&lt;/strong&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-8494664975189788221?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/8494664975189788221/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/jsf.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/8494664975189788221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/8494664975189788221'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/jsf.html' title='JSF自定义复合组件的技巧和窍门'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-1419271515418155362</id><published>2009-06-04T09:18:00.001+08:00</published><updated>2009-06-04T09:44:06.581+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='other'/><title type='text'>digu and adobe online</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; "&gt;&lt;div class="hh"&gt;&lt;div id="gn8_6" class="x"&gt;今晚无聊，发现2个好玩的小游戏。。。这里和大家分享下。。&lt;br /&gt;&lt;/div&gt;&lt;div class="x"&gt;邀请朋友－嘀咕网&lt;/div&gt;&lt;div mce_style="clear: left;" style="clear: left; "&gt;&lt;a id="gn8_7" class="jh" href="http://digu.com/jump?aid=invite_notMatchListContacts&amp;amp;mode=qq&amp;amp;from=&amp;amp;nobody=1" mce_href="http://digu.com/jump?aid=invite_notMatchListContacts&amp;amp;mode=qq&amp;amp;from=&amp;amp;nobody=1"&gt;digu.com/jump?aid=invite_notMatchListContacts&amp;amp;m...&lt;/a&gt;&lt;div id="gn8_10" class="ai fb"&gt;2009年6月3日&lt;/div&gt;&lt;div id="gn8_11" class="ci"&gt;09-6-3&lt;/div&gt;&lt;/div&gt;&lt;div id="gn8_1" class="oh" mce_style="display: block;" style="display: block; "&gt;&lt;div id="gn8_9" class="ph" title="修改标签"&gt;&lt;img mce_src="http://lh5.ggpht.com/_cpAysU-3LSM/SiZ1Z6mHQtI/AAAAAAAAAMA/OP-qdfQSNUE/s640/%E6%9C%AA%E5%91%BD%E5%90%8Dd.JPG" src="http://lh5.ggpht.com/_cpAysU-3LSM/SiZ1Z6mHQtI/AAAAAAAAAMA/OP-qdfQSNUE/s640/%E6%9C%AA%E5%91%BD%E5%90%8Dd.JPG" width="640" height="400" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/div&gt; &lt;/div&gt;&lt;/div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a id="gn11_4" class="pi" tabindex="-1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="ni"&gt;&lt;/div&gt;&lt;div id="gn11_6" class="x"&gt;Untitled -- Acrobat.com Labs&lt;/div&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a id="gn11_7" class="jh" href="https://labs1.acrobat.com/#d=MCLsq2PSw-dKANt9HusbfA" mce_href="https://labs1.acrobat.com/#d=MCLsq2PSw-dKANt9HusbfA"&gt;labs1.acrobat.com/#d=MCLsq2PSw-dKANt9HusbfA&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;img mce_src="http://lh6.ggpht.com/_cpAysU-3LSM/SiZ1Z7kYCcI/AAAAAAAAAL8/UX7GT9k3yg8/s640/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG" src="http://lh6.ggpht.com/_cpAysU-3LSM/SiZ1Z7kYCcI/AAAAAAAAAL8/UX7GT9k3yg8/s640/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-1419271515418155362?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/1419271515418155362/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/digu-and-adobe-online_04.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1419271515418155362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/1419271515418155362'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/digu-and-adobe-online_04.html' title='digu and adobe online'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_cpAysU-3LSM/SiZ1Z6mHQtI/AAAAAAAAAMA/OP-qdfQSNUE/s72-c/%E6%9C%AA%E5%91%BD%E5%90%8Dd.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-8273020325292575454</id><published>2009-06-03T17:12:00.000+08:00</published><updated>2009-06-03T17:16:31.975+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>感受JS的魅力——网页版超级玛丽</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; "&gt;&lt;div style="color: rgb(0, 0, 0); font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-top: 8px; margin-right: 8px; margin-bottom: 8px; margin-left: 8px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(255, 255, 255); background-position: initial initial; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;/p&gt;&lt;p id="" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;新闻来源:&lt;br /&gt;说起超级玛丽，相信很多人都不会不知道吧。作为童年时代的美好回忆，你也是不是想再一次重温呢？哈哈，这次不用再玩红白机了，来个更猛的。&lt;strong&gt;今天介绍的超级玛丽使用JavaScript写的网页游戏，没错，是JavaScript，在这里就不多说了，直接附上地址，大家去玩吧。&lt;/strong&gt;&lt;/p&gt;&lt;p id="" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;img alt="" src="http://img.cnbeta.com/newsimg/090203/11525701160674844.jpg" title="在新窗口打开图片" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;br /&gt;&lt;br /&gt;相信大家不会不知道超级玛丽的玩法吧？记住这个网页版的按“回车”键开始游戏，“左右键”控制前后方向， A 射击， S 跳。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jsmario.com.ar/"&gt;JavaScript版超级玛丽&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4063452417742388327-8273020325292575454?l=vanessally.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vanessally.blogspot.com/feeds/8273020325292575454/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://vanessally.blogspot.com/2009/06/js.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/8273020325292575454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4063452417742388327/posts/default/8273020325292575454'/><link rel='alternate' type='text/html' href='http://vanessally.blogspot.com/2009/06/js.html' title='感受JS的魅力——网页版超级玛丽'/><author><name>Liyuan Li</name><uri>https://profiles.google.com/114653682192307636026</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-9VE9cEZV9tY/AAAAAAAAAAI/AAAAAAAAAPs/ryldz7sSZtE/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4063452417742388327.post-1685665468383210823</id><published>2009-06-02T09:59:00.000+08:00</published><updated>2009-06-02T10:00:45.761+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='总结'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>设计漂亮的样式表是一门艺术(译)</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Tahoma; color: rgb(41, 41, 41); font-size: 12px; "&gt;&lt;div class="Content-top" style="height: 20px; text-align: left; padding-top: 8px; padding-right: 2px; padding-bottom: 2px; padding-left: 0px; background-color: rgb(227, 227, 227); position: relative; "&gt;&lt;span class="Apple-style-span"    style="font-family:Georgia;font-size:130%;color:#1BA6B2;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; font-weight: 800;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Content-Info" style="margin-top: 0px; margin-right: 4px; margin-bottom: 6px; margin-left: 4px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;div class="InfoAuthor" style="text-align: left; "&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="logPanel" class="Content-body" style="margin-top: 8px; margin-right: 2px; margin-bottom: 2px; margin-left: 8px; overflow-x: hidden; overflow-y: hidden; text-align: left; width: 681px; line-height: 19px; background-image: url(http://www.cssrain.cn/skins/tim/layout.css); background-repeat: repeat-y; color: rgb(41, 41, 41); background-position: 100% 50%; "&gt;&lt;div id="vad" class="paper01" style="float: right; width: 130px; "&gt;　　&lt;div class="aditem_paper01"&gt;&lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p style="border-right-color: rgb(206, 207, 208); border-right-width: 1px; border-right-style: solid; padding-right: 5px; border-top-color: rgb(206, 207, 208); border-top-width: 1px; border-top-style: solid; padding-left: 5px; padding-bottom: 5px; border-left-color: rgb(206, 207, 208); border-left-width: 1px; border-left-style: solid; width: 520px; padding-top: 5px; border-bottom-color: rgb(206, 207, 208); border-bottom-width: 1px; border-bottom-style: solid; background-color: rgb(240, 240, 240); "&gt;作者：珊瑚&lt;br /&gt;大家好， 我是珊瑚。 和66一样工作2+年了，在经过第一年的PHP开发之后， 对前端开发的喜爱被挖掘出来，并且一发不可收拾。 同时也迷恋平面设计， 可用性设计。 在CssRain这个平台上， 我希望把国外优秀的前端开发， 互联网设计方面的文章介绍给大家， 希望可以给大家带来设计灵感，分享开发经验。 翻译的拙劣之处请大家见谅， 我会持续改进。&lt;br /&gt;我的城堡:&lt;a href="http://corababy.7to13.com/" target="_blank" style="color: rgb(108, 140, 55); text-decoration: none; "&gt;Little Fox's Candy Castle&lt;/a&gt;&lt;/p&gt;&lt;h1 style="padding-left: 10px; font-size: 16px; background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(153, 204, 0); width: 520px; color: rgb(39, 39, 39); line-height: 30px; height: 30px; background-position: initial initial; "&gt;设计漂亮的样式表是一门艺术&lt;/h1&gt;&lt;p style="width: 520px; "&gt;设计漂亮的样式表不是一门暗黑艺术(如果用艺术家的眼光来看待这门艺术的话，那更多表现的是种对幸福的生活渴望和完美人生的追求. PS: 这是译者找到的最靠谱的解释.). 它需要持久的练习和全身心的投入, 但是, 有一些小窍门来帮你快速提升, 让你也成为一个CSS高手.&lt;br /&gt;再接下来的文章里，我会演示一些自己在设计可读性强, 维护性强, 并容易调试的样式表时用到的技术.&lt;br /&gt;&lt;span class="Apple-style-span" style="word-spacing: 0px; font: normal normal normal 16px/normal Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter
