﻿<?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>为之漫笔 &#187; 译作支持</title>
	<atom:link href="http://www.cn-cuckoo.com/category/support/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cn-cuckoo.com</link>
	<description>本博客专注于Web前后端技术和技术翻译。目前正在翻译《JavaScript高级程序设计（第2版）》。新浪微博（t.sina.com.cn/lisf），Twitter（@cncuckoo，仅仅用于跟踪国外牛人；我翻不了墙，无法接受各位朋友的follow，抱歉！）</description>
	<lastBuildDate>Sun, 28 Feb 2010 03:16:54 +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>经典名著，精选样章</title>
		<link>http://www.cn-cuckoo.com/2010/02/06/professional-javascript-developers-wrox-programmer-sample-chapter-1411.html</link>
		<comments>http://www.cn-cuckoo.com/2010/02/06/professional-javascript-developers-wrox-programmer-sample-chapter-1411.html#comments</comments>
		<pubDate>Sat, 06 Feb 2010 14:16:27 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[好书]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/?p=1411</guid>
		<description><![CDATA[在一年一度的新春佳节即将到来之际，应热心读者的要求，为满足大家先睹为快的愿望，也为了答谢朋友们对本博客长期以来的支持，即日起到春节前夕，本站将发布尚未出版的《JavaScript高级程序设计（第2版）》一书的样章（暂定为3章，约115页）。
申请办法
1、发邮件到：lisf@turingbook.com。
2、邮件主题：《JavaScript高级程序设计（第2版）》样章；邮件内容：您的Email地址。
3、24小时内收到样章，先睹为快！
备注：样章格式为PDF，托管在“Google文件”，可以在线查看（无须登录），也可以下载和打印。希望在线查看PDF的朋友，请在邮件正文中注明“希望接收Google文件”字样，即可收到样章的链接（也可以下载）；否则，将收到PDF文件（*请确保有5M以上的空余邮箱空间）。
样章列表（详细目录）
第3章 基本概念
第4章 变量、作用域及内存问题
第5章 引用类型
《JavaScript高级程序设计（第2版）》简介
本书是人民邮电出版社图灵公司引进出版的大畅销书、JavaScript权威著作《JavaScript高级程序设计》的最新升级版。《JavaScript高级程序设计》自2006年11月出版以来，已经累计销售逾30000册，而且至今仍然十分畅销。这一点可以通过北京新华文化发展有限公司（新华书店）近期的店面销售数据看出来（大家可以自行比较一下其他畅销书的销量）。应该说，在Web 2.0革命爆发的同时，人民邮电出版社图灵公司引进出版的本书成就了计算机图书市场上难得一见的奇迹。
本书作者尼古拉斯·扎卡斯（Nicholas C. Zakas）现为Yahoo!公司首席前端工程师，世界顶级Web技术专家。原书第1版曾被选为Yahoo!公司YUI（Yahoo! User Interface Library，Yahoo!用户界面库）团队的内部培训教材。
2009年初，本书第2版面世（《Professional JavaScript for Web developers, 2nd Edition》）。新版本不仅篇幅由原来的600多页增加到800页，而且几乎全部更新、重写了上一版的内容，删除了上一版中与今天的职业需求无关的主题，新增了大量比上一版更有价值、更能反映JavaScript最新发展成果的内容。从颇具深度的JavaScript语言基础到作用域（链），从JavaScript引用类型到面向对象编程的最佳实践，从极其灵活的匿名函数到闭包的内部机制，从浏览器对象模型（BOM）到客户端检测，从文档对象模型（DOM）到基于事件的Web脚本编程，从错误处理到前端调试，从XML（E4X）到Ajax及JSON，从高级前端开发技术到前沿的客户端存储，从最佳编程实践到展望即将成为现实的API，直至JavaScript未来的发展。全书彻底涵盖了JavaScript技术的各个方面，几乎涉及到了Web前端开发的每一处细节。可以预见，这部著作一定会成为Web前端开发人员不可多得的又一部经典。
目前，《JavaScript高级程序设计（第2版）》的翻译工作已经进入后期阶段（全书22章，所剩不到5章）。而且，为确保新版及时上市与读者见面，出版社采取了与译者同步翻译、同步编辑审校的特别措施。新版本预计2010年上半年可以上市；当然，在确保出版品质的前提下一定会尽量往前赶！

样章详细目录
第3章	基本概念	1
3.1	语法	1
3.1.1	区分大小写	1
3.1.2	标识符	1
3.1.3	注释	2
3.1.4	语句	2
3.2	关键字和保留字	3
3.3	变量	4
3.4	数据类型	5
3.4.1	typeof操作符	5
3.4.2	Undefined类型	6
3.4.3	Null类型	7
3.4.4	Boolean类型	7
3.4.5	Number类型	8
3.4.6	String类型	14
3.4.7	Object类型	16
3.5	操作符	17
3.5.1	一元操作符	17
3.5.2	位操作符	20
3.5.3	布尔操作符	26
3.5.4	乘性操作符	29
3.5.5	加性操作符	30
3.5.6	关系操作符	32
3.5.7	相等操作符	34
3.5.8	条件操作符	35
3.5.9	赋值操作符	36
3.5.10	逗号操作符	36
3.6	语句	37
3.6.1	if语句	37
3.6.2	do-while语句	38
3.6.3	while语句	38
3.6.4	for语句	38
3.6.5	for-in语句	40
3.6.6	label语句	40
3.6.7	break和continue语句	41
3.6.8	with语句	42
3.6.9	switch语句	43
3.7	函数	45
3.7.1	理解参数	47
3.7.2	没有重载	48
3.8	小结	49
第4章	变量、作用域和内存问题	1
4.1	基本类型和引用类型的值	1
4.1.1	动态属性	2
4.1.2	复制变量值	3
4.1.3	传递参数	4
4.1.4	检测类型	6
4.2	执行环境及作用域	6
4.2.1	延长作用域链	9
4.2.2	没有块级作用域	10
4.2.3	声明变量	10
4.2.4	查询标识符	11
4.3	垃圾收集	12
4.3.1	标记清除	12
4.3.2	引用计数	13
4.3.3	性能问题	14
4.3.4	管理内存	15
4.4	小结	15
第5章	引用类型	1
5.1	Object类型	1
5.2	Array类型	3
5.2.1	转换方法	6
5.2.2	栈方法	7
5.2.3	队列方法	8
5.2.4	重排序方法	9
5.2.5	操作方法	11
5.3	Date类型	12
5.3.1	继承的方法	14
5.3.2	日期格式化方法	15
5.3.3	日期/时间组件方法	15
5.4	RegExp类型	17
5.4.1	RegExp实例属性	19
5.4.2	RegExp实例方法	19
5.4.3	RegExp构造函数属性	21
5.4.4	模式的局限性	23
5.5	Function类型	23
5.5.1	没有重载（深入理解）	25
5.5.2	函数声明与函数表达式	25
5.5.3	作为值的函数	26
5.5.4	函数内部属性	27
5.5.5	函数属性和方法	29
5.6	基本包装类型	31
5.6.1	Boolean类型	32
5.6.2	Number类型	33
5.6.3	String类型	35
5.7	内置对象	42
5.7.1	Global对象	43
5.7.2	Math对象	46
5.8	小结	49
]]></description>
			<content:encoded><![CDATA[<p>在一年一度的新春佳节即将到来之际，应热心读者的要求，为满足大家先睹为快的愿望，也为了答谢朋友们对本博客长期以来的支持，即日起到春节前夕，本站将发布尚未出版的《JavaScript高级程序设计（第2版）》一书的样章（暂定为3章，约115页）。</p>
<div style="background: #eee; padding: .3em; font-size: 1.5em;">申请办法</div>
<p>1、发邮件到：lisf@turingbook.com。<br />
2、邮件主题：《JavaScript高级程序设计（第2版）》样章；邮件内容：您的Email地址。<br />
3、24小时内收到样章，先睹为快！</p>
<div style="border: 1px dashed #333; color: #555; padding: .5em;">备注：样章格式为PDF，托管在“Google文件”，可以在线查看（无须登录），也可以下载和打印。<span style="text-decoration: line-through;">希望在线查看PDF的朋友，请在邮件正文中注明“希望接收Google文件”字样，即可收到样章的链接（也可以下载）；否则，将收到PDF文件（*请确保有5M以上的空余邮箱空间）</span>。</div>
<div style="background: #eee; padding: .3em; font-size: 1.5em; margin-top: .5em;">样章列表（<a href="#contents">详细目录</a>）</div>
<p>第3章 基本概念<br />
第4章 变量、作用域及内存问题<br />
第5章 引用类型</p>
<div style="background: #eee; padding: .3em; font-size: 1.5em;">《JavaScript高级程序设计（第2版）》简介</div>
<p>本书是<a title="人民邮电出版社图灵公司" href="http://www.turingbook.com" target="_blank">人民邮电出版社图灵公司</a>引进出版的大畅销书、JavaScript权威著作《<a title="互动网：JavaScript高级程序设计(AJAX程序员必备)" href="http://www.china-pub.com/31282" target="_blank">JavaScript高级程序设计</a>》的最新升级版。《JavaScript高级程序设计》自2006年11月出版以来，已经累计销售逾30000册，而且至今仍然十分畅销。这一点可以通过<a title="北京新华书店店面销售数据：近期销售走势" href="http://www.xhsd.com.cn/books/views.asp?PLUCODE=711515209" target="_blank">北京新华文化发展有限公司（新华书店）近期的店面销售数据</a>看出来（大家可以自行比较一下其他畅销书的销量）。应该说，在Web 2.0革命爆发的同时，人民邮电出版社图灵公司引进出版的本书成就了计算机图书市场上难得一见的奇迹。</p>
<p>本书作者<a title="http://www.nczonline.net/" href="http://www.nczonline.net/" target="_blank">尼古拉斯·扎卡斯（Nicholas C. Zakas）</a>现为Yahoo!公司首席前端工程师，世界顶级Web技术专家。原书第1版曾被选为Yahoo!公司<a title="YUI" href="http://developer.yahoo.com/yui/" target="_blank">YUI（Yahoo! User Interface Library，Yahoo!用户界面库）</a>团队的内部培训教材。</p>
<p>2009年初，本书第2版面世（<a title="Professional JavaScript for Web developers, 2nd Edition" href="http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X/" target="_blank">《Professional JavaScript for Web developers, 2nd Edition》</a>）。新版本不仅篇幅由原来的600多页增加到800页，而且几乎全部更新、重写了上一版的内容，删除了上一版中与今天的职业需求无关的主题，新增了大量比上一版更有价值、更能反映JavaScript最新发展成果的内容。从颇具深度的JavaScript语言基础到作用域（链），从JavaScript引用类型到面向对象编程的最佳实践，从极其灵活的匿名函数到闭包的内部机制，从浏览器对象模型（BOM）到客户端检测，从文档对象模型（DOM）到基于事件的Web脚本编程，从错误处理到前端调试，从XML（E4X）到Ajax及JSON，从高级前端开发技术到前沿的客户端存储，从最佳编程实践到展望即将成为现实的API，直至JavaScript未来的发展。全书彻底涵盖了JavaScript技术的各个方面，几乎涉及到了Web前端开发的每一处细节。可以预见，这部著作一定会成为Web前端开发人员不可多得的又一部经典。</p>
<p>目前，《JavaScript高级程序设计（第2版）》的翻译工作已经进入后期阶段（全书22章，所剩不到5章）。而且，为确保新版及时上市与读者见面，出版社采取了与译者同步翻译、同步编辑审校的特别措施。新版本预计2010年上半年可以上市；当然，在确保出版品质的前提下一定会尽量往前赶！</p>
<p><a name="contents"></a></p>
<div style="background: #eee; padding: .3em; font-size: 1.5em;">样章详细目录</div>
<p>第3章	基本概念	1<br />
3.1	语法	1<br />
3.1.1	区分大小写	1<br />
3.1.2	标识符	1<br />
3.1.3	注释	2<br />
3.1.4	语句	2<br />
3.2	关键字和保留字	3<br />
3.3	变量	4<br />
3.4	数据类型	5<br />
3.4.1	typeof操作符	5<br />
3.4.2	Undefined类型	6<br />
3.4.3	Null类型	7<br />
3.4.4	Boolean类型	7<br />
3.4.5	Number类型	8<br />
3.4.6	String类型	14<br />
3.4.7	Object类型	16<br />
3.5	操作符	17<br />
3.5.1	一元操作符	17<br />
3.5.2	位操作符	20<br />
3.5.3	布尔操作符	26<br />
3.5.4	乘性操作符	29<br />
3.5.5	加性操作符	30<br />
3.5.6	关系操作符	32<br />
3.5.7	相等操作符	34<br />
3.5.8	条件操作符	35<br />
3.5.9	赋值操作符	36<br />
3.5.10	逗号操作符	36<br />
3.6	语句	37<br />
3.6.1	if语句	37<br />
3.6.2	do-while语句	38<br />
3.6.3	while语句	38<br />
3.6.4	for语句	38<br />
3.6.5	for-in语句	40<br />
3.6.6	label语句	40<br />
3.6.7	break和continue语句	41<br />
3.6.8	with语句	42<br />
3.6.9	switch语句	43<br />
3.7	函数	45<br />
3.7.1	理解参数	47<br />
3.7.2	没有重载	48<br />
3.8	小结	49</p>
<p>第4章	变量、作用域和内存问题	1<br />
4.1	基本类型和引用类型的值	1<br />
4.1.1	动态属性	2<br />
4.1.2	复制变量值	3<br />
4.1.3	传递参数	4<br />
4.1.4	检测类型	6<br />
4.2	执行环境及作用域	6<br />
4.2.1	延长作用域链	9<br />
4.2.2	没有块级作用域	10<br />
4.2.3	声明变量	10<br />
4.2.4	查询标识符	11<br />
4.3	垃圾收集	12<br />
4.3.1	标记清除	12<br />
4.3.2	引用计数	13<br />
4.3.3	性能问题	14<br />
4.3.4	管理内存	15<br />
4.4	小结	15</p>
<p>第5章	引用类型	1<br />
5.1	Object类型	1<br />
5.2	Array类型	3<br />
5.2.1	转换方法	6<br />
5.2.2	栈方法	7<br />
5.2.3	队列方法	8<br />
5.2.4	重排序方法	9<br />
5.2.5	操作方法	11<br />
5.3	Date类型	12<br />
5.3.1	继承的方法	14<br />
5.3.2	日期格式化方法	15<br />
5.3.3	日期/时间组件方法	15<br />
5.4	RegExp类型	17<br />
5.4.1	RegExp实例属性	19<br />
5.4.2	RegExp实例方法	19<br />
5.4.3	RegExp构造函数属性	21<br />
5.4.4	模式的局限性	23<br />
5.5	Function类型	23<br />
5.5.1	没有重载（深入理解）	25<br />
5.5.2	函数声明与函数表达式	25<br />
5.5.3	作为值的函数	26<br />
5.5.4	函数内部属性	27<br />
5.5.5	函数属性和方法	29<br />
5.6	基本包装类型	31<br />
5.6.1	Boolean类型	32<br />
5.6.2	Number类型	33<br />
5.6.3	String类型	35<br />
5.7	内置对象	42<br />
5.7.1	Global对象	43<br />
5.7.2	Math对象	46<br />
5.8	小结	49</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2010/02/06/professional-javascript-developers-wrox-programmer-sample-chapter-1411.html/feed</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>《jQuery基础教程》第3次印刷译者附注</title>
		<link>http://www.cn-cuckoo.com/2009/07/14/the-translators-note-forlearning-jquery-chinese-edition-959.html</link>
		<comments>http://www.cn-cuckoo.com/2009/07/14/the-translators-note-forlearning-jquery-chinese-edition-959.html#comments</comments>
		<pubDate>Tue, 14 Jul 2009 13:45:07 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/?p=959</guid>
		<description><![CDATA[注：最近，陆续收到读者来信，询问《jQuery基础教程》目前是第几次印刷。今在此一并回复：目前市面上销售的《jQuery基础教程》均为第4次印刷。为方便第1次印刷的读者，下面将第3次印刷时添加的“译者附注”公布于下，希望能对读者朋友有所帮助。
第3次印刷译者附注
本书自出版以来，受到了广大读者的热烈欢迎。本次印刷对第1次印刷中发现的错误和不妥之处进行了修订。同时，针对读者反馈中比较有代表性的问题，特作如下说明。
1. jQuery版本变化对本书的影响
本书英文原版在写作时，jQuery的最新版本是1.1。到了中文版出版时，jQuery 1.2已经发布了。由于新版本中的一些特性发生了变化，导致本书少量内容与新版本不一致，而且个别示例在新版本下不能运行。其中，主要是jQuery 1.2取消了对XPath选择符的支持（原因是XPath选择符可能会导致性能问题）。为确保使用新版本jQuery的读者能正常运行本书相关示例，现给出两种解决方案：第一种是继续使用XPath选择符，但必须下载Basic XPath插件，下载地址是http://plugins.jquery.com/project/xpath。插件实际上也是一段jQuery脚本，使用时把它贴到你自己编写的jQuery代码前面即可。这样，你的jQuery代码就可以支持XPath选择符了。第二种就是避免使用XPath选择符。对于本书个别示例中使用的XPath选择符，可以尝试把它们修改为其他等效的选择符——例如，把$(&#8216;tr:not([th])&#8217;)修改为$(&#8216;tr:not(:has(th))&#8217;)。
2. 阅读本书的背景知识
本书作为介绍流行JavaScript库——jQuery的全球第一部著作，内容丰富、通俗易懂，深受广大读者的喜爱，是学习jQuery的必读图书。但是，由于少数读者对HTML、CSS、JavaScript以及DOM的相关知识掌握还不十分全面，造成了在理解本书个别示例时的困难。如果读者感觉自身还缺少某方面的基础知识，可以结合相关技术书籍和本书共同学习，互为参考，以达到齐头并进的学习效果。在此，推荐人民邮电出版社出版的下列图书。

《HTML XHTML CSS基础教程》
《写给大家看的CSS书》
《JavaScript基础教程》
《JavaScript DOM编程艺术》

3. 推荐两个实用的小技巧
（1）有读者反映，在将示例中的提示换成中文时，在某些浏览器中显示不正常——显示乱码。这是一个在学习外版书时普遍存在的问题。由于国外作者保存示例代码文件（.js）或网页文件（.html）时，通常默认采用ANSI编码，而这种编码只支持西方字符。因此，如果要在代码或示例中使用中文，一定要记住把这个文件另存为UTF-8编码格式。
（2）从jQuery 1.2开始，Google为jQuery提供了CDN（Content Delivery Network，内容分发网络）支持，以便用户的浏览器从位于全球各地的Google服务器上就近加载jQuery。这是目前使用JavaScript库的一种最流行、最方便、最快捷的方式。如果读者在试验本书示例时不想把jQuery库下载到本地，也可以使用这种远程加载方式——只要把本书示例页面中的下面这行代码：&#60;script src=&#8221;jquery.js&#8221;&#62;&#60;/script&#62;
替换成以下代码即可：
&#60;script src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js&#8221; type=&#8221;text/javascript&#8221;&#62;&#60;/script&#62;
当然，还有个前提，就是你的电脑必须连接到了互联网。
你在阅读和学习过程中，有任何问题，欢迎致信contact@turingbook.com。
最后，祝你阅读愉快！
]]></description>
			<content:encoded><![CDATA[<p style="border:1px dotted red;background:orange;padding:1em;">注：最近，陆续收到读者来信，询问《jQuery基础教程》目前是第几次印刷。今在此一并回复：目前市面上销售的《jQuery基础教程》均为第4次印刷。为方便第1次印刷的读者，下面将第3次印刷时添加的“译者附注”公布于下，希望能对读者朋友有所帮助。</p>
<h1>第3次印刷译者附注</h1>
<p>本书自出版以来，受到了广大读者的热烈欢迎。本次印刷对第1次印刷中发现的错误和不妥之处进行了修订。同时，针对读者反馈中比较有代表性的问题，特作如下说明。</p>
<p>1. jQuery版本变化对本书的影响</p>
<p>本书英文原版在写作时，jQuery的最新版本是1.1。到了中文版出版时，jQuery 1.2已经发布了。由于新版本中的一些特性发生了变化，导致本书少量内容与新版本不一致，而且个别示例在新版本下不能运行。其中，主要是jQuery 1.2取消了对XPath选择符的支持（原因是XPath选择符可能会导致性能问题）。为确保使用新版本jQuery的读者能正常运行本书相关示例，现给出两种解决方案：第一种是继续使用XPath选择符，但必须下载Basic XPath插件，下载地址是http://plugins.jquery.com/project/xpath。插件实际上也是一段jQuery脚本，使用时把它贴到你自己编写的jQuery代码前面即可。这样，你的jQuery代码就可以支持XPath选择符了。第二种就是避免使用XPath选择符。对于本书个别示例中使用的XPath选择符，可以尝试把它们修改为其他等效的选择符——例如，把$(&#8216;tr:not([th])&#8217;)修改为$(&#8216;tr:not(:has(th))&#8217;)。</p>
<p>2. 阅读本书的背景知识</p>
<p>本书作为介绍流行JavaScript库——jQuery的全球第一部著作，内容丰富、通俗易懂，深受广大读者的喜爱，是学习jQuery的必读图书。但是，由于少数读者对HTML、CSS、JavaScript以及DOM的相关知识掌握还不十分全面，造成了在理解本书个别示例时的困难。如果读者感觉自身还缺少某方面的基础知识，可以结合相关技术书籍和本书共同学习，互为参考，以达到齐头并进的学习效果。在此，推荐人民邮电出版社出版的下列图书。</p>
<ul>
<li>《<a title="http://www.china-pub.com/35336&amp;ref=ps" href="http://www.china-pub.com/35336&amp;ref=ps" target="_blank">HTML XHTML CSS基础教程</a>》</li>
<li>《<a title="http://www.china-pub.com/195098&amp;ref=ps" href="http://www.china-pub.com/195098&amp;ref=ps" target="_blank">写给大家看的CSS书</a>》</li>
<li>《<a title="http://www.china-pub.com/195373&amp;ref=ps" href="http://www.china-pub.com/195373&amp;ref=ps" target="_blank">JavaScript基础教程</a>》</li>
<li>《<a title="http://www.china-pub.com/32981&amp;ref=ps" href="http://www.china-pub.com/32981&amp;ref=ps" target="_blank">JavaScript DOM编程艺术</a>》</li>
</ul>
<p>3. 推荐两个实用的小技巧</p>
<p>（1）有读者反映，在将示例中的提示换成中文时，在某些浏览器中显示不正常——显示乱码。这是一个在学习外版书时普遍存在的问题。由于国外作者保存示例代码文件（.js）或网页文件（.html）时，通常默认采用ANSI编码，而这种编码只支持西方字符。因此，如果要在代码或示例中使用中文，一定要记住把这个文件另存为UTF-8编码格式。</p>
<p>（2）从jQuery 1.2开始，Google为jQuery提供了CDN（Content Delivery Network，内容分发网络）支持，以便用户的浏览器从位于全球各地的Google服务器上就近加载jQuery。这是目前使用JavaScript库的一种最流行、最方便、最快捷的方式。如果读者在试验本书示例时不想把jQuery库下载到本地，也可以使用这种远程加载方式——只要把本书示例页面中的下面这行代码：&lt;script src=&#8221;jquery.js&#8221;&gt;&lt;/script&gt;</p>
<p>替换成以下代码即可：</p>
<p>&lt;script src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p>当然，还有个前提，就是你的电脑必须连接到了互联网。</p>
<p>你在阅读和学习过程中，有任何问题，<a href="mailto:%E6%AC%A2%E8%BF%8E%E8%87%B4%E4%BF%A1contact@turingbook.com">欢迎致信contact@turingbook.com</a>。</p>
<p>最后，祝你阅读愉快！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2009/07/14/the-translators-note-forlearning-jquery-chinese-edition-959.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>《Flex3实战》样章及源代码下载</title>
		<link>http://www.cn-cuckoo.com/2009/03/23/flex3-in-action-sample-chapters-download-540.html</link>
		<comments>http://www.cn-cuckoo.com/2009/03/23/flex3-in-action-sample-chapters-download-540.html#comments</comments>
		<pubDate>Mon, 23 Mar 2009 02:00:00 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/?p=540</guid>
		<description><![CDATA[本书中文版(《Flex3实战》)将由人民邮电清华大学出版社出版。经出版方许可，现公开本书5章内容（篇幅相当于全书1/5），供读者预览。
这些“样章”均为未经编辑加工的译稿原件。虽经译者审校，但囿于时间精力所限，其中错误和问题在所难免。如果读者朋友发现了译稿中的错误和问题，麻烦您明确指出，经核实我们一定尽量及时纠正。
对反映问题最多的前3位读者，译者将于本书出版后第一时间，赠送新书一册，以为答谢。


可下载的样章
说明：想先睹为快的朋友，请留言，然后我会把下载地址通过邮件发给您。

第1章 认识Flex（PDF,1391KB）
第4章 布局和容器（PDF,919KB）
第8章 DateGrid、列表和树（PDF,793KB）
第11章 应用程序导航（PDF,1033KB）
第20章 使用效果（PDF,746KB）
目录（简明）
目录（详细）

源代码下载

全书源代码（ZIP,2125KB）


Adobe Flex 3是开发富Web应用的完整平台，有着简单易用的开发环境（Flex Builder）和酷似JavaScript的编程模型。Flex 3内置了企业级的数据和服务组件，可以与Java、PHP及Rails轻松整合。而且，Flex的绝大部分组件都已经开源，因此使用成本为零！
本书开篇介绍了Flex 3的入门知识和ActionScript。接着，又从实用的角度出发，耐心细致地讲解了Flex的每一个重要组件。精心挑选的示例、精准到位的阐释，把读者的注意力完全集中在了相关标签或类的关键属性、方法和事件上面。本书以Flex事件为轴心，毫无保留地展示了调试事件驱动应用程序的各种技巧。读者的JavaScript或ActionScript知识会有所帮助，但并不是必需的。而且，可以没有任何Flex经验。
本书特色

充分利用读者现有的各种Web开发技能
透视交互式表单、拖放、数据驱动的内部奥秘
全面展示Flex 3新特性，如内存和性能分析程序、AdvancedDataGrid、重构
手把手教会读者如何有效地在多个项目间共享代码

本书宗旨
Flex是事件驱动、面向对象的应用程序框架和编程语言，使用它可以构建引人注目且容易扩展的RIA（Rich Internet Application，富因特网应用程序），这种应用程序运行于Adobe Flash环境中。
历史上看，Web应用程序的优势在于快速开发和及时响应市场需求，但这一优势往往以牺牲最终用户的易用性为代价。Flex则既确保了集中部署的快速转换模型，又为开发人员提供了实现易用性的强大支持。
初次接触Flex的人往往面临不同的挑战。首先，许多开发人员不熟悉事件驱动技术。虽然他们大致了解事件驱动的概念，但却缺乏长期的使用经验。在这种情况下，很难充分发挥这种技术的长处；更重要的，是无法让自己的工作更富有成效。
第二个挑战源于许多开发人员长期固守当前技术领域。由于人们习惯于既有的思维方式，因此这些人往往会将自己对HTML的经验移植到Flex中。这种借鉴虽然有一定意义，但却会让自己的创造力受到约束。
第三个挑战是由Flex本身的强大所导致的复杂性。尽管Flex本质上并不复杂，但毕竟很多Web应用程序技术都是过程式、非事件驱动的，因此某些读者很可能在接触简单示例时感觉比较容易，而一旦深入下去，就会发现还有很多需要理解的概念。
本书将面对这些挑并给出解决方案，而这也是本书的独到之处。对第一个挑战，本书会通过不断提醒读者该如何利用事件对象，来强化Flex的事件驱动本质。而且，还将就完成同一任务给出多种实现方式，并辅之以对每种方式利弊的分析，以加速读者的理解。
至于第二个挑战，我们不会否定读者已有的技能，也明白你可能拥有另一种技术背景。我们也有同样的经历，体验过摆脱业已习惯的思维模式时的心理转换。本书时不时会对如何利用某个特性给出建议。
谈到第三个挑战——复杂性，本书的使命就是让读者在短时间内成为一位高效的Flex开发人员。为此，我们综合运用了一些技巧，包括设计一些容易理解的小例子。而且，我们也会尽量利用你现有的技能，将使用其他技术和使用Flex解决同一个问题联系起来。另外，本书所有章节都是按构建应用程序的逻辑顺序组织的，先介绍简单的内容，然后循序渐进地讨论新知识。
放心，这本书你选对了。我们就是你的技能和职业生涯更上一层楼的引路人。不过，有一个问题我们解决不了。那就是当用户因感激而对你大加赞赏时该怎么办——这个问题必须由你自己来回答！
本书结构
第1章介绍Flex。其中，讨论了Flex适合解决的问题及解决方法。之后，为读者提供了说服所在部门、消费者或客户接受Flex的重要理由。本章还讲述了Flex的工作原理和事件的概念，明确了Flex在Adobe产品套件中所处的位置。
第2章介绍构建Flex应用程序涉及到的工具、环境和语言。为了加深读者对事件的理解，本章再次提到了事件。
第3章介绍Flex的核心语言——ActionScript。ActionScript是遵循ECMAScript标准实现的一门面向对象的语言，它成就了Flex。本章讨论了数据类型、运算符、循环、条件等概念。熟悉ActionScript是必需的，因此读者有必要提前掌握这门语言。
第4章介绍应用程序的布局。讨论了如何定位显示对象和使用容器对视觉对象分组。
第5章介绍如何通过表单捕获用户输入。Flex具有类似HTML的表单输入控件，但也包含很多HTML中没有的控件。
第6章接着第5章的主题，继续讨论如何使用Flex的验证程序验证用户输入。从易用性角度讲，事先验证可以节省用户的时间和省去不必要的麻烦。
第7章转而介绍使用格式化程序来格式化原始信息。经常与验证程序一起使用的格式化程序，解决了手工格式化数据的大问题。
第8章探索Flex中最常用的结构——基于列表的组件。列表是一种数据驱动的组件，它能够以列表形式自动呈现数据源中的数据。
第9章继续讨论列表，但专门介绍创建自定义列表的方法，包括简单的方法和使用全功能的项目渲染器自定义显示。本章也介绍了支持就地编辑的编辑器。
第10章专题讨论事件。这一章将介绍如何最低限度地使用事件；但是，本章通过深入介绍事件的工作机制把事件的应用提升到了一个新的层次。
第11章展示如何在应用程序中添加导航组件，以便用户在不同功能间切换。
第12章讨论扩展应用程序导航功能的弹出式窗口。探索了应用程序与弹出式控件间交换信息的通信机制。
第13章介绍应用程序流的概念并讨论Flex中被称为视图状态的独有特性。通过这种机制在应用程序中配置不同的视图，可以节省很多开发时间，同时也提供了在视图间切换的便捷方式。
第14章开始讨论有关数据操作的主题，尤其是在应用程序与后台服务间实现数据交换。包括通过HTTP连接到支持Flex本地二进制协议（AMF）和XML的服务器及Web服务。
第15章深入讨论处理XML。XML是一种应用广泛的语言；但Flex率先支持了E4X语法，因而可以像操作本地Flex对象一样处理XML。
第16章介绍对象和类。毕竟，Flex是一种面向对象的语言。虽然基于标签的MXML语言同样优秀，但熟悉创建和使用ActionScript对象的方法只会提升你的开发技能。
第17章详细介绍如何将占用大量开发时间的程序转换为自定义组件。自定义组件是把应用程序分割成小型、易管理、可重用部分的主要手段。
第18章专注于应用程序的结构，并介绍Flex的可重用特性，包括在多个项目与编译的共享功能库之间共享自定义组件。
第19章讨论自定义体验。包括使用Flex的CSS样式、皮肤和主题。还介绍了图像和字体。
第20章介绍Flex最酷的特性——效果。效果是应用程序中吸引眼球的元素。同时，本章还会讨论如何通过效果增强易用性。
第21章详细介绍拖放功能。拖放功能涉及很多组件，但从易用性的角度说，拖放通过加快工作流能为用户节省一些点击操作。
第22章讨论图表。介绍各种类型的图表并对每种类型的适用情况给出建议。此外，还讨论了图表的组成部分及如何自定义图表。
第23章讲述测试与调试。此时，我们关注的是整个项目和QA（质量保证）循环。知道怎样调试应用程序和如何隔离问题是关键。Flex内置了许多相关特性，但本章也讨论了第三方工具。
第24章专注于项目的收尾。包括添加打印功能、使用包装器加载应用程序和制定版本规划以便部署应用程序的产品构建。
在第24章之后，我们为读者提供了参考用的开发人员资源、讨论组、开源项目、Flex技术体系及北美和国际性用户组的链接。
]]></description>
			<content:encoded><![CDATA[<p style="background: #F7CC67; padding: 1em;">本书中文版(《Flex3实战》)将由<span style="text-decoration: line-through;">人民邮电</span>清华大学出版社出版。经出版方许可，现公开本书5章内容（篇幅相当于全书1/5），供读者预览。<br />
这些“样章”均为未经编辑加工的译稿原件。虽经译者审校，但囿于时间精力所限，其中错误和问题在所难免。如果读者朋友发现了译稿中的错误和问题，麻烦您明确指出，经核实我们一定尽量及时纠正。<br />
<span style="text-decoration: line-through;">对反映问题最多的<span style="font-weight: bold; color: red;">前3位读者</span>，译者将于本书出版后第一时间，<span style="font-weight: bold; color: red;">赠送新书一册</span>，以为答谢。</span></p>
<p><span id="more-540"></span></p>
<div style="background: url(http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2009/03/png-1270.png) no-repeat bottom right;">
<h2 style="font-size: 2em; margin-bottom: 1em; font-weight: bold;">可下载的样章</h2>
<h2 style="color: red; font-weight: bold;">说明：想先睹为快的朋友，请留言，然后我会把下载地址通过邮件发给您。</h2>
<ul>
<li style="list-style-type: square;">第1章 认识Flex（PDF,1391KB）</li>
<li style="list-style-type: square;">第4章 布局和容器（PDF,919KB）</li>
<li style="list-style-type: square;">第8章 DateGrid、列表和树（PDF,793KB）</li>
<li style="list-style-type: square;">第11章 应用程序导航（PDF,1033KB）</li>
<li style="list-style-type: square;">第20章 使用效果（PDF,746KB）</li>
<li style="list-style-type: square;"><a title="点击下载" href="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2009/03/flex3inaction_toc_compact.txt" target="_blank">目录（简明）</a></li>
<li style="list-style-type: square;"><a title="点击下载" href="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2009/03/flex3inaction_toc_details.txt" target="_blank">目录（详细）</a></li>
</ul>
<h2>源代码下载</h2>
<ul>
<li style="list-style-type: square;"><a title="源代码" href="http://cn.ziddu.com/download/303918/flex3sourcecode.zip.html" target="_blank">全书源代码（ZIP,2125KB）</a></li>
</ul>
</div>
<p><img style="float: left; margin: 0 2em 1em 0;" src="http://ecx.images-amazon.com/images/I/51KwlF3AYCL._SL500_AA240_.jpg" alt="Flex 3 in Action" width="240" height="240" />Adobe Flex 3是开发富Web应用的完整平台，有着简单易用的开发环境（Flex Builder）和酷似JavaScript的编程模型。Flex 3内置了企业级的数据和服务组件，可以与Java、PHP及Rails轻松整合。而且，Flex的绝大部分组件都已经开源，因此使用成本为零！</p>
<p>本书开篇介绍了Flex 3的入门知识和ActionScript。接着，又从实用的角度出发，耐心细致地讲解了Flex的每一个重要组件。精心挑选的示例、精准到位的阐释，把读者的注意力完全集中在了相关标签或类的关键属性、方法和事件上面。本书以Flex事件为轴心，毫无保留地展示了调试事件驱动应用程序的各种技巧。读者的JavaScript或ActionScript知识会有所帮助，但并不是必需的。而且，可以没有任何Flex经验。</p>
<h2 style="font-weight: bold;">本书特色</h2>
<ul>
<li style="list-style-type: square;">充分利用读者现有的各种Web开发技能</li>
<li style="list-style-type: square;">透视交互式表单、拖放、数据驱动的内部奥秘</li>
<li style="list-style-type: square;">全面展示Flex 3新特性，如内存和性能分析程序、AdvancedDataGrid、重构</li>
<li style="list-style-type: square;">手把手教会读者如何有效地在多个项目间共享代码</li>
</ul>
<h2 style="font-weight: bold;">本书宗旨</h2>
<p>Flex是事件驱动、面向对象的应用程序框架和编程语言，使用它可以构建引人注目且容易扩展的RIA（Rich Internet Application，富因特网应用程序），这种应用程序运行于Adobe Flash环境中。</p>
<p>历史上看，Web应用程序的优势在于快速开发和及时响应市场需求，但这一优势往往以牺牲最终用户的易用性为代价。Flex则既确保了集中部署的快速转换模型，又为开发人员提供了实现易用性的强大支持。</p>
<p>初次接触Flex的人往往面临不同的挑战。首先，许多开发人员不熟悉事件驱动技术。虽然他们大致了解事件驱动的概念，但却缺乏长期的使用经验。在这种情况下，很难充分发挥这种技术的长处；更重要的，是无法让自己的工作更富有成效。</p>
<p>第二个挑战源于许多开发人员长期固守当前技术领域。由于人们习惯于既有的思维方式，因此这些人往往会将自己对HTML的经验移植到Flex中。这种借鉴虽然有一定意义，但却会让自己的创造力受到约束。</p>
<p>第三个挑战是由Flex本身的强大所导致的复杂性。尽管Flex本质上并不复杂，但毕竟很多Web应用程序技术都是过程式、非事件驱动的，因此某些读者很可能在接触简单示例时感觉比较容易，而一旦深入下去，就会发现还有很多需要理解的概念。</p>
<p>本书将面对这些挑并给出解决方案，而这也是本书的独到之处。对第一个挑战，本书会通过不断提醒读者该如何利用事件对象，来强化Flex的事件驱动本质。而且，还将就完成同一任务给出多种实现方式，并辅之以对每种方式利弊的分析，以加速读者的理解。</p>
<p>至于第二个挑战，我们不会否定读者已有的技能，也明白你可能拥有另一种技术背景。我们也有同样的经历，体验过摆脱业已习惯的思维模式时的心理转换。本书时不时会对如何利用某个特性给出建议。</p>
<p>谈到第三个挑战——复杂性，本书的使命就是让读者在短时间内成为一位高效的Flex开发人员。为此，我们综合运用了一些技巧，包括设计一些容易理解的小例子。而且，我们也会尽量利用你现有的技能，将使用其他技术和使用Flex解决同一个问题联系起来。另外，本书所有章节都是按构建应用程序的逻辑顺序组织的，先介绍简单的内容，然后循序渐进地讨论新知识。</p>
<p>放心，这本书你选对了。我们就是你的技能和职业生涯更上一层楼的引路人。不过，有一个问题我们解决不了。那就是当用户因感激而对你大加赞赏时该怎么办——这个问题必须由你自己来回答！</p>
<h2 style="font-weight: bold;">本书结构</h2>
<p>第1章介绍Flex。其中，讨论了Flex适合解决的问题及解决方法。之后，为读者提供了说服所在部门、消费者或客户接受Flex的重要理由。本章还讲述了Flex的工作原理和事件的概念，明确了Flex在Adobe产品套件中所处的位置。</p>
<p>第2章介绍构建Flex应用程序涉及到的工具、环境和语言。为了加深读者对事件的理解，本章再次提到了事件。</p>
<p>第3章介绍Flex的核心语言——ActionScript。ActionScript是遵循ECMAScript标准实现的一门面向对象的语言，它成就了Flex。本章讨论了数据类型、运算符、循环、条件等概念。熟悉ActionScript是必需的，因此读者有必要提前掌握这门语言。<br />
第4章介绍应用程序的布局。讨论了如何定位显示对象和使用容器对视觉对象分组。</p>
<p>第5章介绍如何通过表单捕获用户输入。Flex具有类似HTML的表单输入控件，但也包含很多HTML中没有的控件。</p>
<p>第6章接着第5章的主题，继续讨论如何使用Flex的验证程序验证用户输入。从易用性角度讲，事先验证可以节省用户的时间和省去不必要的麻烦。</p>
<p>第7章转而介绍使用格式化程序来格式化原始信息。经常与验证程序一起使用的格式化程序，解决了手工格式化数据的大问题。</p>
<p>第8章探索Flex中最常用的结构——基于列表的组件。列表是一种数据驱动的组件，它能够以列表形式自动呈现数据源中的数据。</p>
<p>第9章继续讨论列表，但专门介绍创建自定义列表的方法，包括简单的方法和使用全功能的项目渲染器自定义显示。本章也介绍了支持就地编辑的编辑器。</p>
<p>第10章专题讨论事件。这一章将介绍如何最低限度地使用事件；但是，本章通过深入介绍事件的工作机制把事件的应用提升到了一个新的层次。</p>
<p>第11章展示如何在应用程序中添加导航组件，以便用户在不同功能间切换。</p>
<p>第12章讨论扩展应用程序导航功能的弹出式窗口。探索了应用程序与弹出式控件间交换信息的通信机制。</p>
<p>第13章介绍应用程序流的概念并讨论Flex中被称为视图状态的独有特性。通过这种机制在应用程序中配置不同的视图，可以节省很多开发时间，同时也提供了在视图间切换的便捷方式。</p>
<p>第14章开始讨论有关数据操作的主题，尤其是在应用程序与后台服务间实现数据交换。包括通过HTTP连接到支持Flex本地二进制协议（AMF）和XML的服务器及Web服务。</p>
<p>第15章深入讨论处理XML。XML是一种应用广泛的语言；但Flex率先支持了E4X语法，因而可以像操作本地Flex对象一样处理XML。</p>
<p>第16章介绍对象和类。毕竟，Flex是一种面向对象的语言。虽然基于标签的MXML语言同样优秀，但熟悉创建和使用ActionScript对象的方法只会提升你的开发技能。</p>
<p>第17章详细介绍如何将占用大量开发时间的程序转换为自定义组件。自定义组件是把应用程序分割成小型、易管理、可重用部分的主要手段。</p>
<p>第18章专注于应用程序的结构，并介绍Flex的可重用特性，包括在多个项目与编译的共享功能库之间共享自定义组件。</p>
<p>第19章讨论自定义体验。包括使用Flex的CSS样式、皮肤和主题。还介绍了图像和字体。</p>
<p>第20章介绍Flex最酷的特性——效果。效果是应用程序中吸引眼球的元素。同时，本章还会讨论如何通过效果增强易用性。</p>
<p>第21章详细介绍拖放功能。拖放功能涉及很多组件，但从易用性的角度说，拖放通过加快工作流能为用户节省一些点击操作。</p>
<p>第22章讨论图表。介绍各种类型的图表并对每种类型的适用情况给出建议。此外，还讨论了图表的组成部分及如何自定义图表。</p>
<p>第23章讲述测试与调试。此时，我们关注的是整个项目和QA（质量保证）循环。知道怎样调试应用程序和如何隔离问题是关键。Flex内置了许多相关特性，但本章也讨论了第三方工具。</p>
<p>第24章专注于项目的收尾。包括添加打印功能、使用包装器加载应用程序和制定版本规划以便部署应用程序的产品构建。</p>
<p>在第24章之后，我们为读者提供了参考用的开发人员资源、讨论组、开源项目、Flex技术体系及北美和国际性用户组的链接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2009/03/23/flex3-in-action-sample-chapters-download-540.html/feed</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>《Flex3实战》作者自序</title>
		<link>http://www.cn-cuckoo.com/2009/03/21/flex3-in-action-preface-532.html</link>
		<comments>http://www.cn-cuckoo.com/2009/03/21/flex3-in-action-preface-532.html#comments</comments>
		<pubDate>Sat, 21 Mar 2009 05:40:55 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[好书]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/?p=532</guid>
		<description><![CDATA[多年来，我一直都在找寻一种方式，一种能够带给用户更好的在线体验的方式。而且，这个找寻历程从Google革命性的Google Maps站点引起轰动之前就已经开始了。我的意思是说，Web用户在很长一段时间里，都不知道还能有什么更好的在线体验。
在把Web当作文档发布系统使用的若干年里，用户体验曾一度在强大的本地桌面应用和乏善可陈的HTML应用之间摇来摆去。但是，贫乏的用户体验并没有对HTML和Web构成冲击——Web作为平台中立的文档发布系统，事实上是非常名符其实的。开发人员和公司专注于Web是因为它支持快速应用程序开发，而用户之所以接受眼前的一切则是由于——嗨！Web应用程序就是这个样子的。真的就是这个样子吗？
有件事曾令我百思不得其解。每次点击都会导致后台系统执行许多代码，而结果反映到UI上却只是一点点变化。而比这更糟的则是对数据库服务器频繁密集的访问。对一名技术人员来说，解决这个问题最简便的办法就是多加内存、使用虚拟机装载，或者少花钱多采购一些杂牌服务器，然后大功告成。但是，我更关心用户要为此付出什么代价。他们会对Web应用程序中常见的点击加等候习以为常；而且，对UI也没有多大的操作自由。不错，可以使用JavaScript；然而，这只是在掌握更高级技术之前的选择。从投入产出角度讲，这样做往往得不偿失。
这时候，Java Applet和Flash问世了，而且乍一看它们正是我要找寻的东西。实际上，Applet作为一个解决方案并不合适，它的体积太大，下载也很慢，况且不能跨平台使用。Flash挺有希望的，可是在设计师的工作环境中创建企业级应用程序，仍然不免有缘木求鱼的味道。
我在eBay的知识管理部门工作期间，也遇到了相同的问题。我需要找到一种方式，能够抽象出数据的复杂性，并且能让用户在可视的环境中方便地操作这些数据。
既而，Flex在2004年发布了（最初是V1，很快就是V1.5）。我当时有权作出采用它的决定，我们的团队也因使用它而感受到了完全不一样的体验。当时，我就知道Flex前途无量。因为Flex应用程序既具有桌面应用程序的强大特性，又能满足软件团队快速开发的需求。
作为Flex支持者，我把推动Flex社区发展当作自己的一项使命。我创建了CFLEX.Net（www.cflex.net），并坚信这个社区的规模越大，通过知识和代码共享产生的反推力也将越大，借此就可以促进这项技术的更快普及。毕竟，强有力的支持网络可以降低在组织中引入新技术的风险。
作为较早采用Flex的人，我在学习Flex的过程中走过不少弯路。主要原因是当时缺少相关书籍和参考资料。这种局面在Flex 2发布后得到了改观，大量的学习资源开始涌现。
我在2005年底离开eBay加入Amcom Computer Services，并在那里创建和管理一个开发团队。同学习任何新技术一样，要熟练掌握Flex也不容易。因此，最好的办法就是不断提升技能。在培训开发人员使用Flex的过程中，我发现市面上的某些图书常常言不及义，很多显而易见的问题都没有提到。
为了进一步推动Flex社区的发展，我决定写作本书，希望它能解决读者经常会遇到的问题。本书一反按功能特性布局谋篇的常见模式，改为按创建应用程序的自然进程组织内容。我只在必要时介绍必要的知识，不会过早地讨论复杂主题。同时，着意缩短的示例代码，也将有助于读者理解和上手。另外，我还发现把新事物与已知事物联系起来，可以增强学习效果。因此，在适当的情况下，我会尽可能拿其他技术的实现原理来进行类比。
希望读者通过阅读本书能够深入理解Flex，并最终加入到Flex社区中——因为届时你也能够向周围的人共享自己的知识和经验。
而现在，则是准备学习Flex的时候。随着社区逐步发展壮大，越来越多第三方厂商会发布与Flex有关的技术，Flex用户组也会在世界各地不断涌现。
随着其他厂商的先后跟进，RIA领域将迅速升温——Adobe再次证明自己走在了前列。我们正处于一个令人振奋的时代！以HTML为基础的Web应用程序始终会占有一席之地；然而，现在是该把你的技能提升到一个新高度的时候了。因为，这个产业的向前发展不会以个别人的意志为转移。
现在请坐下，系好安全带，旅行就要开始了！
TARIQ AHMED

作者简介：
TARIQ AHMED是一位Web应用程序的先驱人物，先后向Bell Canada和Reuters等公司引荐了下一代Web技术。他和Jon Hirschi最早将Adobe Flex引入eBay；随后又被其他项目采用。作为Adoble Flex社区专家，Tariq始终致力于推广这一技术并通过各种项目为社区提供支持。另外，Tariq因他的Community Flex （CFLEX.Net）站点而广为人知。Tariq目前是位于美国于旧金山湾区的Amcom Technology公司的产品开发经理。
JON HIRSCHI自第一个版本开始就致力于Flex的改进。作为Adobe Flex社区专家，他一直通过自己的博客、技术杂志文章和用户组共享其具有专家视角的观点。Jon不仅向eBay引荐了Flex，而且也是eBay负责管理服务器的前沿控制中心的一员。Jon目前是位于美国于旧金山湾区的Kadoink Inc.公司的技术经理。
FAISAL ABID是一名在加拿大多伦多求学的软件工程专业的学生，他拥有自己的RIA咨询公司G-uniX Technologies。他曾为很多客户撰写了RIA方案，包括基于互联网的创业型公司Buzzspot和RazorCom。Faisal的社区业绩包括在各类杂志上发表文章，他也因自己的技术经验而小有名气。

]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 170px"><a href="http://www.adobe.com/communities/experts/members/tariq_ahmed.html" target="_blank"><img class="   " style="margin: 0 0 10px 10px;" title="Tariq Ahmed" src="http://www.adobe.com/communities/experts/members/images/TariqAhmed.png" alt="Tariq Ahmed" width="160" height="160" /></a><p class="wp-caption-text">Tariq Ahmed</p></div>
<p>多年来，我一直都在找寻一种方式，一种能够带给用户更好的在线体验的方式。而且，这个找寻历程从Google革命性的Google Maps站点引起轰动之前就已经开始了。我的意思是说，Web用户在很长一段时间里，都不知道还能有什么更好的在线体验。</p>
<p>在把Web当作文档发布系统使用的若干年里，用户体验曾一度在强大的本地桌面应用和乏善可陈的HTML应用之间摇来摆去。但是，贫乏的用户体验并没有对HTML和Web构成冲击——Web作为平台中立的文档发布系统，事实上是非常名符其实的。开发人员和公司专注于Web是因为它支持快速应用程序开发，而用户之所以接受眼前的一切则是由于——嗨！Web应用程序就是这个样子的。真的就是这个样子吗？</p>
<p>有件事曾令我百思不得其解。每次点击都会导致后台系统执行许多代码，而结果反映到UI上却只是一点点变化。而比这更糟的则是对数据库服务器频繁密集的访问。对一名技术人员来说，解决这个问题最简便的办法就是多加内存、使用虚拟机装载，或者少花钱多采购一些杂牌服务器，然后大功告成。但是，我更关心用户要为此付出什么代价。他们会对Web应用程序中常见的点击加等候习以为常；而且，对UI也没有多大的操作自由。不错，可以使用JavaScript；然而，这只是在掌握更高级技术之前的选择。从投入产出角度讲，这样做往往得不偿失。</p>
<p>这时候，Java Applet和Flash问世了，而且乍一看它们正是我要找寻的东西。实际上，Applet作为一个解决方案并不合适，它的体积太大，下载也很慢，况且不能跨平台使用。Flash挺有希望的，可是在设计师的工作环境中创建企业级应用程序，仍然不免有缘木求鱼的味道。</p>
<p>我在eBay的知识管理部门工作期间，也遇到了相同的问题。我需要找到一种方式，能够抽象出数据的复杂性，并且能让用户在可视的环境中方便地操作这些数据。</p>
<p>既而，Flex在2004年发布了（最初是V1，很快就是V1.5）。我当时有权作出采用它的决定，我们的团队也因使用它而感受到了完全不一样的体验。当时，我就知道Flex前途无量。因为Flex应用程序既具有桌面应用程序的强大特性，又能满足软件团队快速开发的需求。</p>
<p><a href="http://www.adobe.com/cn/products/flex/" target="_blank"><img class="alignleft" style="margin:0 10px 10px 0" src="http://www.adobe.com/images/store/product_boxshots/150x150/box_flexbuilderstandard3_150x150.jpg" alt="" width="150" height="150" /></a>作为Flex支持者，我把推动Flex社区发展当作自己的一项使命。我创建了<a title="http://www.cflex.net/" href="http://www.cflex.net/" target="_blank">CFLEX.Net（www.cflex.net）</a>，并坚信这个社区的规模越大，通过知识和代码共享产生的反推力也将越大，借此就可以促进这项技术的更快普及。毕竟，强有力的支持网络可以降低在组织中引入新技术的风险。</p>
<p>作为较早采用Flex的人，我在学习Flex的过程中走过不少弯路。主要原因是当时缺少相关书籍和参考资料。这种局面在Flex 2发布后得到了改观，大量的学习资源开始涌现。</p>
<p>我在2005年底离开eBay加入Amcom Computer Services，并在那里创建和管理一个开发团队。同学习任何新技术一样，要熟练掌握Flex也不容易。因此，最好的办法就是不断提升技能。在培训开发人员使用Flex的过程中，我发现市面上的某些图书常常言不及义，很多显而易见的问题都没有提到。</p>
<p>为了进一步推动Flex社区的发展，我决定写作本书，希望它能解决读者经常会遇到的问题。本书一反按功能特性布局谋篇的常见模式，改为按创建应用程序的自然进程组织内容。我只在必要时介绍必要的知识，不会过早地讨论复杂主题。同时，着意缩短的示例代码，也将有助于读者理解和上手。另外，我还发现把新事物与已知事物联系起来，可以增强学习效果。因此，在适当的情况下，我会尽可能拿其他技术的实现原理来进行类比。</p>
<p>希望读者通过阅读本书能够深入理解Flex，并最终加入到Flex社区中——因为届时你也能够向周围的人共享自己的知识和经验。</p>
<p>而现在，则是准备学习Flex的时候。随着社区逐步发展壮大，越来越多第三方厂商会发布与Flex有关的技术，Flex用户组也会在世界各地不断涌现。</p>
<p>随着其他厂商的先后跟进，RIA领域将迅速升温——Adobe再次证明自己走在了前列。我们正处于一个令人振奋的时代！以HTML为基础的Web应用程序始终会占有一席之地；然而，现在是该把你的技能提升到一个新高度的时候了。因为，这个产业的向前发展不会以个别人的意志为转移。</p>
<p>现在请坐下，系好安全带，旅行就要开始了！</p>
<p>TARIQ AHMED</p>
<div style="background:#eee; border:1px dotted gray;padding:1em;">
<h3>作者简介：</h3>
<p>TARIQ AHMED是一位Web应用程序的先驱人物，先后向Bell Canada和Reuters等公司引荐了下一代Web技术。他和Jon Hirschi最早将Adobe Flex引入eBay；随后又被其他项目采用。作为Adoble Flex社区专家，Tariq始终致力于推广这一技术并通过各种项目为社区提供支持。另外，Tariq因他的Community Flex （CFLEX.Net）站点而广为人知。Tariq目前是位于美国于旧金山湾区的Amcom Technology公司的产品开发经理。</p>
<p>JON HIRSCHI自第一个版本开始就致力于Flex的改进。作为Adobe Flex社区专家，他一直通过自己的博客、技术杂志文章和用户组共享其具有专家视角的观点。Jon不仅向eBay引荐了Flex，而且也是eBay负责管理服务器的前沿控制中心的一员。Jon目前是位于美国于旧金山湾区的Kadoink Inc.公司的技术经理。</p>
<p>FAISAL ABID是一名在加拿大多伦多求学的软件工程专业的学生，他拥有自己的RIA咨询公司G-uniX Technologies。他曾为很多客户撰写了RIA方案，包括基于互联网的创业型公司Buzzspot和RazorCom。Faisal的社区业绩包括在各类杂志上发表文章，他也因自己的技术经验而小有名气。
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2009/03/21/flex3-in-action-preface-532.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《Flex3实战》序</title>
		<link>http://www.cn-cuckoo.com/2009/03/20/flex3-in-action-foreword-by-ryan-stewart-522.html</link>
		<comments>http://www.cn-cuckoo.com/2009/03/20/flex3-in-action-foreword-by-ryan-stewart-522.html#comments</comments>
		<pubDate>Fri, 20 Mar 2009 05:05:58 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[好书]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/?p=522</guid>
		<description><![CDATA[创建RIA（Rich Internet Applications，富因特网应用程序）的技术早于这个概念很久就出现了；Flash Platform是从v8开始支持RIA的。然而，Flash最初的定位只是一种发挥设计人员创意的环境，并不适合开发人员使用。
如果读者使用Flash开发应用程序，那么仍然需要跨越很大的障碍。首先，以高效快捷的方式发布囊括众多功能的富应用程序，就是一项严峻的挑战。因为，你必须亲手完成其中的绝大部分工作。
问题其实很简单：最好是有一个纯粹的开发环境，既能利用业已受到广泛支持、性能优越的Flash，又能直接满足开发人员及其系统开发的需求。为开发人员提供一个得力的工具，再配备一个能替他们完成大多数繁琐工作的框架，从而让他们把注意力集中到应用程序的逻辑上来。这个问题的解决方案就是Flex。
Adobe FlexFlex自2004年3月由Macromedia发布起，已经过了多年的发展。而且，紧随第一版之后发布的1.5版，同年就取得了更好的销售业绩。Flex最早是作为一种服务器产品开发的，广告里也把它作为在Flash Platform上创建应用程序的一种工具来宣传。
这个工具的推出开启了一个新时代，也点燃了RIA的燎原之火。随着基于Flex的RIA日益受到人们关注，事实已经证明确实存在对RIA的需求，而这种技术手段赖以发展的基础也已具备。下一步就是把RIA推向规模化。
后来，在Adobe的品牌下，这个产品以2006年6月发布的Flex 2为标志取得了巨大的飞跃。主要表现在对语言（ActionScript 3）的重新实现和对Flash Player（V9）的重要升级，极大的提升了它的性能。
而且，开发环境转换到Eclipse平台，也坚定了程序员们的信心。Flex 2关注的是基础开发与服务器端数据管理的衔接问题。我们也知道，首次以免费方式发布的用于编译Flex应用程序的SDK还处在IDE外部。最终，服务器端组件发展成了Flex Data Services，即目前的LiveCycle Data Services，该服务支持实时数据共享。
这些改变都有助于形成更明确的RIA思想，即在浏览器中提供一种桌面应用程序般的体验。而此时，RIA最需要的就是社区支持。
Tariq AhmedTariq也发现了社区支持的重要性，并走在了前列。为此，他创建了第一个专注于Flex的门户社区，即Community Flex （CFLEX.Net）。
CFLEX.Net中汇集了引导人们学习这个新框架的大量经验、技巧、博客、新闻和技术文章。Tariq是社区发展初期上述内容的主要发布者，而我就从他那里学到了很多Flex技能。
Tariq很早就认识到了数据服务及实时数据对于RIA的重要性。他构建了很多Flex应用程序，从企业内部以业务为核心的系统，到面向外部用户的各种项目。他几乎理解并使用了这个平台提供的所有特性，而这也决定了他非常适合成为一本Flex书的作者。我相信，这本由业内专家亲自捉刀撰写的书，正是读者朋友们期待已久的。
Flex 3的发布，把我们带到了这个框架和这门技术的新阶段。Adobe对Flex平台的很多组件开源，目的就是让Flex尽可能透明化，从而有利于接收来自社区的有价值的反馈（当然，也包括有价值的代码）。
随着Adobe AIR的发布，开发人员现在又可以使用Flex部署桌面和基于浏览器的应用程序了。
Adobe过去曾以其伟大的设计工具而闻名。Flex 3是允许设计人员与开发人员紧密协作的第一个工具，可以为设计出漂亮美观的Flex应用程序提供强大支持。此外，这个框架和Flex Builder中包含的大量有助于提高效率的增强，降低了新开发人员使用Flex的门槛，也有助于他们开发出容易扩展的应用程序。
无论你有什么样的开发背景，也不管你对Flex了解多少，相信本书一定会成为你的得力助手。应该说，任何人都可以从本书中学习到有用的东西。Tariq与另外两位作者Jon和Faisal，为我们奉献了一本必备的Flex佳作。别忘了，本书出自深受人们喜爱、拥有许多必知必会资源的Flex社区——CFLEX.Net的头号人物之手。
Adobe Systems, Inc. 平台推广专家
Ryan Stewart
]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 114px"><a href="http://blog.digitalbackcountry.com/" target="_blank"><img style="margin:0 10px 10px 0" title="Ryan Stewart" src="http://tbn3.google.cn/images?q=tbn:Fk3fQaEUocLI2M:" alt="Ryan Stewart" width="104" height="104" /></a><p class="wp-caption-text">Ryan Stewart</p></div>
<p>创建RIA（Rich Internet Applications，富因特网应用程序）的技术早于这个概念很久就出现了；Flash Platform是从v8开始支持RIA的。然而，Flash最初的定位只是一种发挥设计人员创意的环境，并不适合开发人员使用。</p>
<p>如果读者使用Flash开发应用程序，那么仍然需要跨越很大的障碍。首先，以高效快捷的方式发布囊括众多功能的富应用程序，就是一项严峻的挑战。因为，你必须亲手完成其中的绝大部分工作。</p>
<p>问题其实很简单：最好是有一个纯粹的开发环境，既能利用业已受到广泛支持、性能优越的Flash，又能直接满足开发人员及其系统开发的需求。为开发人员提供一个得力的工具，再配备一个能替他们完成大多数繁琐工作的框架，从而让他们把注意力集中到应用程序的逻辑上来。这个问题的解决方案就是Flex。</p>
<p><a href="http://www.adobe.com/cn/products/flex/" target="_blank"><img class="alignright" style="margin: 0 0 10px 10px;" title="Adobe Flex" src="http://tbn1.google.cn/images?q=tbn:sFfdTFvnL5EYbM:" alt="Adobe Flex" width="118" height="118" /></a>Adobe FlexFlex自2004年3月由Macromedia发布起，已经过了多年的发展。而且，紧随第一版之后发布的1.5版，同年就取得了更好的销售业绩。Flex最早是作为一种服务器产品开发的，广告里也把它作为在Flash Platform上创建应用程序的一种工具来宣传。<br />
这个工具的推出开启了一个新时代，也点燃了RIA的燎原之火。随着基于Flex的RIA日益受到人们关注，事实已经证明确实存在对RIA的需求，而这种技术手段赖以发展的基础也已具备。下一步就是把RIA推向规模化。</p>
<p>后来，在Adobe的品牌下，这个产品以2006年6月发布的Flex 2为标志取得了巨大的飞跃。主要表现在对语言（ActionScript 3）的重新实现和对Flash Player（V9）的重要升级，极大的提升了它的性能。</p>
<p>而且，开发环境转换到Eclipse平台，也坚定了程序员们的信心。Flex 2关注的是基础开发与服务器端数据管理的衔接问题。我们也知道，首次以免费方式发布的用于编译Flex应用程序的SDK还处在IDE外部。最终，服务器端组件发展成了Flex Data Services，即目前的LiveCycle Data Services，该服务支持实时数据共享。</p>
<p>这些改变都有助于形成更明确的RIA思想，即在浏览器中提供一种桌面应用程序般的体验。而此时，RIA最需要的就是社区支持。</p>
<div class="wp-caption alignleft" style="width: 114px"><a href="http://www.dopejam.com/" target="_blank"><img class=" " style="margin: 0 10px 10px 0;" title="Tariq Ahmed" src="http://www.adobe.com/communities/experts/members/images/TariqAhmed.png" alt="Tariq Ahmed" width="104" height="104" /></a><br />
<a href="http://twitter.com/tahmed/" target="_blank">Twitter</a><p class="wp-caption-text">Tariq Ahmed</p></div>
<p>Tariq AhmedTariq也发现了社区支持的重要性，并走在了前列。为此，他创建了第一个专注于Flex的门户社区，即<a title="http://www.cflex.net/" href="http://www.cflex.net/" target="_blank">Community Flex （CFLEX.Net）</a>。</p>
<p>CFLEX.Net中汇集了引导人们学习这个新框架的大量经验、技巧、博客、新闻和技术文章。Tariq是社区发展初期上述内容的主要发布者，而我就从他那里学到了很多Flex技能。</p>
<p>Tariq很早就认识到了数据服务及实时数据对于RIA的重要性。他构建了很多Flex应用程序，从企业内部以业务为核心的系统，到面向外部用户的各种项目。他几乎理解并使用了这个平台提供的所有特性，而这也决定了他非常适合成为一本Flex书的作者。我相信，这本由业内专家亲自捉刀撰写的书，正是读者朋友们期待已久的。</p>
<p>Flex 3的发布，把我们带到了这个框架和这门技术的新阶段。Adobe对Flex平台的很多组件开源，目的就是让Flex尽可能透明化，从而有利于接收来自社区的有价值的反馈（当然，也包括有价值的代码）。</p>
<p>随着Adobe AIR的发布，开发人员现在又可以使用Flex部署桌面和基于浏览器的应用程序了。</p>
<p>Adobe过去曾以其伟大的设计工具而闻名。Flex 3是允许设计人员与开发人员紧密协作的第一个工具，可以为设计出漂亮美观的Flex应用程序提供强大支持。此外，这个框架和Flex Builder中包含的大量有助于提高效率的增强，降低了新开发人员使用Flex的门槛，也有助于他们开发出容易扩展的应用程序。</p>
<p><a href="http://www.amazon.com/dp/1933988746/" target="_blank"><img class="alignright" style="margin:0 0 0 10px" src="http://www.cflex.net/books/fia.jpg" alt="" width="145" height="145" /></a>无论你有什么样的开发背景，也不管你对Flex了解多少，相信本书一定会成为你的得力助手。应该说，任何人都可以从本书中学习到有用的东西。Tariq与另外两位作者Jon和Faisal，为我们奉献了一本必备的Flex佳作。别忘了，本书出自深受人们喜爱、拥有许多必知必会资源的Flex社区——CFLEX.Net的头号人物之手。</p>
<p>Adobe Systems, Inc. 平台推广专家<br />
Ryan Stewart</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2009/03/20/flex3-in-action-foreword-by-ryan-stewart-522.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>读《中文的常态与变态》</title>
		<link>http://www.cn-cuckoo.com/2008/12/23/impression-of-one-article-of-on-translation-by-yu-guangzhong-267.html</link>
		<comments>http://www.cn-cuckoo.com/2008/12/23/impression-of-one-article-of-on-translation-by-yu-guangzhong-267.html#comments</comments>
		<pubDate>Tue, 23 Dec 2008 02:41:47 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/12/23/impression-of-one-article-of-on-translation-by-yu-guangzhong-267.html</guid>
		<description><![CDATA[最近，重读了《中文的常态的变态》，余光忠先生在这篇文章里谈到了名词、连词、介词、副词、形容词、动词等西化之病，并告诫译者要知所防范，并希望能举一反三。
重读斯文，触动最大的是形容词那一节，因为该节正击中了我在翻译中的“要害”——形容词前置过多，后饰不足。余先生原文有言：
“形容词或修饰语（modifier）可以放在名词之前，谓之前饰，也可以跟在名词之后，谓之后饰。……”
“目前的白话文，不知何故，几乎一律前饰，似乎不懂后饰之道。例如……‘我见到一个长得像您兄弟的男人。’（I saw a man who looked like your brother）却很少人会说：‘我见到一个男人，长得像你兄弟。’如果句短，前饰也无所谓。如果句长，前饰就太生硬了。例如下面这句：‘我见到一个长得像你兄弟说话也有点像他的陌生男人。’就冗长得尾大不掉了。要是改为后饰，就自然得多：‘我见到一个陌生男人，长得像你兄弟，说话也有点像他。’……”
“后饰句可以一路加下去，虽长而不失自然，富于弹性。前饰句以名词压底，一长了，就显得累赘、紧张、不胜负担，所以前饰句是关闭句，后饰句是开放句。”
几句话，完全点到了我在英译汉过程中最常犯的错误。前些天还在与人讨论英文主词之后加N多从句也不显累赘，但翻译为中文却容易捉襟见肘的问题。现在看来，形容词后置，或者从句后置，不失为解决之道。
]]></description>
			<content:encoded><![CDATA[<p>最近，重读了《中文的常态的变态》，余光忠先生在这篇文章里谈到了名词、连词、介词、副词、形容词、动词等西化之病，并告诫译者要知所防范，并希望能举一反三。</p>
<p>重读斯文，触动最大的是形容词那一节，因为该节正击中了我在翻译中的“要害”——形容词前置过多，后饰不足。余先生原文有言：</p>
<p>“形容词或修饰语（modifier）可以放在名词之前，谓之前饰，也可以跟在名词之后，谓之后饰。……”</p>
<p>“目前的白话文，不知何故，几乎一律前饰，似乎不懂后饰之道。例如……‘我见到一个长得像您兄弟的男人。’（I saw a man who looked like your brother）却很少人会说：‘我见到一个男人，长得像你兄弟。’如果句短，前饰也无所谓。如果句长，前饰就太生硬了。例如下面这句：‘我见到一个长得像你兄弟说话也有点像他的陌生男人。’就冗长得尾大不掉了。要是改为后饰，就自然得多：‘我见到一个陌生男人，长得像你兄弟，说话也有点像他。’……”</p>
<p>“后饰句可以一路加下去，虽长而不失自然，富于弹性。前饰句以名词压底，一长了，就显得累赘、紧张、不胜负担，所以前饰句是关闭句，后饰句是开放句。”</p>
<p>几句话，完全点到了我在英译汉过程中最常犯的错误。前些天还在与人讨论英文主词之后加N多从句也不显累赘，但翻译为中文却容易捉襟见肘的问题。现在看来，形容词后置，或者从句后置，不失为解决之道。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/12/23/impression-of-one-article-of-on-translation-by-yu-guangzhong-267.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dojo 1.2 发版说明</title>
		<link>http://www.cn-cuckoo.com/2008/12/18/dojo-1-2-release-notes-265.html</link>
		<comments>http://www.cn-cuckoo.com/2008/12/18/dojo-1-2-release-notes-265.html#comments</comments>
		<pubDate>Thu, 18 Dec 2008 01:59:41 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/12/18/dojo-1-2-release-notes-265.html</guid>
		<description><![CDATA[原文链接：http://dojotoolkit.org/book/dojo-1-2-release-notes
向后兼容
Dojo1.2中添加了一些新特性，也修改和废弃了一些原有特性。不过，最重要的是，Dojo1.2的主体仍然保持与Dojo1.0和Dojo1.2向后兼容。对此，“迁移问题”中会详细介绍。
 Core及相关的库
键盘事件
为防止将可打印字符键错误地识别为功能键（例如，在IE中，左括号与向下箭头键的keyCode相同），新增了charOrCode属性，不推荐使用keyChar。
浏览器检测
消除了dojo.isIE、dojo.isFF、dojo.isSafari等属性“错误的”返回值。在用户代理不是指定浏览器的情况下，这些属性现在的返回值是undefined而不再是0，但在条件正确的情况仍然会返回版本号。
dojo.cldr
dojo.cldr已经从CLDR1.5.1更新为1.6。由于地区表已经更新，因此格式化字符串或使用dojo.date.locale、dojo.number、dojo.currency等包解析的用户字符串有可能与以前版本不一样。
djConfig.addOnLoad
通过dojo.addOnLoad添加了一个新回调函数。
在djConfig.isDebug=true的情况下，try/catch行为将发生变化
以前，当Core中某些模块（XHR、Deferred、dojo.addOnLoad回调代码）发生的错误被捕获后，要么通过控制台进行报告，要么另行抛出，导致难以追踪错误的起因。虽然这样有利于代码稳定，但从开发角度看，却不利于发现错误。现在，相关模块会让最初的异常向上冒泡，并在djConfig.isDebug设置为true的情况下停止JavaScript的执行。如果diConfig.isDebug被设置为false（或undefined），则使用try/catch结构并通过控制台记录错误。
dojo.fx.easing
以前的dojo.fx.easing已经被提升到Core中，并可以通过dojo.require(&#8220;dojo.fx.easing&#8221;)加载。
dojo.html.set()
新增特性，用于在ContentPane外部使用类似ContentPane的功能。
 Dijit方面的增强
易用性及观感的增强
在Dojo1.2中，Dijit的外观和易用性获得了较大增强。
_Widget.attributeMap
现在，attributeMap也可以处理innerHTML和类名了。可以把attributeMap的作用想象成绑定部件属性与DOM节点。
_Widget.placeAt
placeAt()是一个新的domNode操作方法，用于简化对部件的domNode的连缀和放置操作（或通过addChild()将部件的domNode添加到其他部件中）。
动画
加快了部件中默认的动画执行时间。现在，可以通过dojo.config.defaultDuration控制动画了。
BorderContainer
修正了窗格布局中缺失边框或出现双边框的问题。通过新的参数gutters=true/false（默认为true）可以为所有窗格添加“外边距”（包括不可调整大小的窗格），从而使窗格与窗格、窗格与BorderContainer之间保持一定距离。
Button
修正了垂直对齐及各种显示问题。
CheckBox
突出显示搜索结果。
FilteringSelect
不必为了让用户能清除下拉列表中的值而放入空值了，用户现在可以使用退格或删除键清除该值。
突出显示搜索结果。
表单验证
增强后的表单部件不会再因为用户输入的值不完整而变黄了。但是，如果用户输入的值无效（哪怕再继续输入更多字符也仍然无效），仍然会变黄……这样用户就不会再感到它们“慌报军情”了。
另外，还为dijit.form.Form部件新增了onValidStateChange连接点，以便能够创建像禁用提交按钮（在表单无效时）之类的行为。
Menu
新增了CheckableMenuItem类。使用这个类，用户在选择菜单项时会伴随一个对勾图标出现或消息（有点类似切换按钮）。
RadioButton
在FF和Safari中实现了类似IE中的获取焦点的效果（标签四周会出现带阴影的线框）。
Tree
解决了水平滚动的问题，而且为每一行都设置了white-space:nowrap，确保标签不会折行显示。
同时还修正了图标与文本垂直的对齐问题。
TimeTextBox
自动滚动
键盘支持
更佳的外观
Tooltip
缩小了箭头图标
Util
util/buildscripts
通过一个新的构建选项可以去掉构建过程中所有JavaScript文件内包含的console.*调用。
stripConsole=normal将去掉除console.warn和console.error之外的所有console.*调用
stripConsole=all将去掉所有console.*调用
警告：如果在使用这个选项时导致了OutOfMemoryError，请参考http://trac.dojotoolkit.org/ticket/7698。
DOH：单元测试框架
新增了一个doh.robot包，以方便为DnD和部件等视觉组件编写单元测试。
在dijit/tests/form/robot中也可以找到一些类似的测试。
迁移问题
在从Dojo1.1迁移到Dojo1.2时，需要对已有应用程序作如下更新：
下载文件或执行JavaScript的链接（dojo.addOnUnload()与dojo.addOnWindowUnload()）
通过dojo.addOnUnload()注册的回调函数以前不能在IE中被触发。现在这个问题虽然已经修正，但是也出现了一个问题。用户在单击下载文件或执行JavaScript代码（即href属性值为javascript:开头）的链接时，会触发window.onbeforeunload事件，而该事件又会触发dojo.addOnUnload回调函数。但是，上述链接通常不会影响页面。因此，如果要在dojo.addOnUnload()中执行破坏性操作，请务必格外小心。
如果需要清理循环引用以避免内存泄漏（除了有用的Dojo代码外），那么可以使用Dojo1.2中新增的dojo.addOnWindowUnload方法，该方法基于window.onunload触发回调函数。dojo.addOnWindowUnload与dojo.addOnUnload的原理相同，但只基于window.onunload事件发生（即页面真正缷载）而触发。在dojo.addOnWindowUnload()回调函数中操作DOM和JavaScript属性时要小心，因为页面的状态不一定可靠。
Editor
出于安全原因，不推荐使用TEXTAREA；而使用DIV。
Widget.arrt()
Widget.arrt()是用于设置/取得所有部件属性的标准接口。旧方法setValue()、setAttribute()和setTitle()仍然存在，但已经不推荐使用。基本上，Widget.attr()与dojo.attr()相似，详细内容请参考http://blog.dojotoolkit.org/2008/08/19/widget-attr。
dijit._Widget.destroy()
对_Widget的.destroy()方法从技术上作了修改。以前，这个方法有一个“已定案的（finalize）”什么也不做的参数。但现在，这个参数被改为了“保护DOM（preserveDom）”，是一个布尔值，表示destory()是否删除与_Widget(this.domNode)关联的domNode。传入“true”，则保留DOM。
dojo.isGears转移到dojo.gears.available
检测Gears的特性转移到了dojo.gears模块中。要检测Gears是否已经安装，首先执行dojo.require(&#8220;dojo.gears&#8221;)，然后根据dojo.gears.available返回的布尔值确定。
在调用dojo.xhr时，不再推荐使用handleAs: &#8220;json-comment-filtered&#8221;
如果再使用handleAs: &#8220;json-comment-filtered&#8221;，会在控制台中看到一条警告消息。
要取消该警告，可以将djConfig.useCommentedJson设置为true。
同时，这也意味着删除了djConfig.usePlainJson标签，因为普通的JSON是优先考虑的，目前使用普通的JSON不会产生警告。
dijit.layout.BorderContainer在所有窗格四周添加了外边距

新参数“gutters”的默认值为true，因此会在所有窗格周围添加“外边距”（即使是大小不可调整的窗格），从而使窗格与窗格、窗格与BorderContainer之间保持一定距离。
 
]]></description>
			<content:encoded><![CDATA[<p>原文链接：<a href="http://dojotoolkit.org/book/dojo-1-2-release-notes">http://dojotoolkit.org/book/dojo-1-2-release-notes</a><a href="http://dojotoolkit.org/book/dojo-1-2-release-notes"></a><a href="http://dojotoolkit.org/book/dojo-1-2-release-notes"></a><span class="Apple-style-span" style="font-family: 黑体; font-weight: bold"></span></p>
<p><span class="Apple-style-span" style="font-family: 黑体; font-weight: bold">向后兼容</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">中添加了一些新特性，也修改和废弃了一些原有特性。不过，最重要的是，</span><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">的主体仍然保持与</span><span lang="EN-US">Dojo1.0</span><span style="font-family: 宋体">和</span><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">向后兼容。对此，“迁移问题”中会详细介绍。</span></p>
<p> <span class="Apple-style-span" style="font-weight: bold"><span lang="EN-US">Core</span><span style="font-family: 黑体">及相关的库</span></span><span class="Apple-style-span" style="font-weight: bold"><span style="font-family: 黑体"></span></span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">键盘事件</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">为防止将可打印字符键错误地识别为功能键（例如，在</span><span lang="EN-US">IE</span><span style="font-family: 宋体">中，左括号与向下箭头键的</span><span lang="EN-US">keyCode</span><span style="font-family: 宋体">相同），新增了</span><span lang="EN-US">charOrCode</span><span style="font-family: 宋体">属性，不推荐使用</span><span lang="EN-US">keyChar</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">浏览器检测</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">消除了</span><span lang="EN-US">dojo.isIE</span><span style="font-family: 宋体">、</span><span lang="EN-US">dojo.isFF</span><span style="font-family: 宋体">、</span><span lang="EN-US">dojo.isSafari</span><span style="font-family: 宋体">等属性“错误的”返回值。在用户代理不是指定浏览器的情况下，这些属性现在的返回值是</span><span lang="EN-US">undefined</span><span style="font-family: 宋体">而不再是</span><span lang="EN-US">0</span><span style="font-family: 宋体">，但在条件正确的情况仍然会返回版本号。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dojo.cldr</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">dojo.cldr</span><span style="font-family: 宋体">已经从</span><span lang="EN-US">CLDR1.5.1</span><span style="font-family: 宋体">更新为</span><span lang="EN-US">1.6</span><span style="font-family: 宋体">。由于地区表已经更新，因此格式化字符串或使用</span><span lang="EN-US">dojo.date.locale</span><span style="font-family: 宋体">、</span><span lang="EN-US">dojo.number</span><span style="font-family: 宋体">、</span><span lang="EN-US">dojo.currency</span><span style="font-family: 宋体">等包解析的用户字符串有可能与以前版本不一样。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">djConfig.addOnLoad</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">通过</span><span lang="EN-US">dojo.addOnLoad</span><span style="font-family: 宋体">添加了一个新回调函数。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">在</span><span lang="EN-US">djConfig.isDebug=true</span><span style="font-family: 宋体">的情况下，</span><span lang="EN-US">try/catch</span><span style="font-family: 宋体">行为将发生变化</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">以前，当</span><span lang="EN-US">Core</span><span style="font-family: 宋体">中某些模块（</span><span lang="EN-US">XHR</span><span style="font-family: 宋体">、</span><span lang="EN-US">Deferred</span><span style="font-family: 宋体">、</span><span lang="EN-US">dojo.addOnLoad</span><span style="font-family: 宋体">回调代码）发生的错误被捕获后，要么通过控制台进行报告，要么另行抛出，导致难以追踪错误的起因。虽然这样有利于代码稳定，但从开发角度看，却不利于发现错误。现在，相关模块会让最初的异常向上冒泡，并在</span><span lang="EN-US">djConfig.isDebug</span><span style="font-family: 宋体">设置为</span><span lang="EN-US">true</span><span style="font-family: 宋体">的情况下停止</span><span lang="EN-US">JavaScript</span><span style="font-family: 宋体">的执行。如果</span><span lang="EN-US">diConfig.isDebug</span><span style="font-family: 宋体">被设置为</span><span lang="EN-US">false</span><span style="font-family: 宋体">（或</span><span lang="EN-US">undefined</span><span style="font-family: 宋体">），则使用</span><span lang="EN-US">try/catch</span><span style="font-family: 宋体">结构并通过控制台记录错误。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dojo.fx.easing</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">以前的</span><span lang="EN-US">dojo.fx.easing</span><span style="font-family: 宋体">已经被提升到</span><span lang="EN-US">Core</span><span style="font-family: 宋体">中，并可以通过</span><span lang="EN-US">dojo.require(&#8220;dojo.fx.easing&#8221;)</span><span style="font-family: 宋体">加载。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dojo.html.set()</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">新增特性，用于在</span><span lang="EN-US">ContentPane</span><span style="font-family: 宋体">外部使用类似</span><span lang="EN-US">ContentPane</span><span style="font-family: 宋体">的功能。</span></p>
<p><span style="font-weight: bold" class="Apple-style-span"> </span><span lang="EN-US"><span style="font-weight: bold" class="Apple-style-span">Dijit</span></span><span><span style="font-weight: bold" class="Apple-style-span">方面的增强</span></span><span style="font-weight: bold" class="Apple-style-span"><span style="font-family: 黑体"></span></span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">易用性及观感的增强</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">在</span><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">中，</span><span lang="EN-US">Dijit</span><span style="font-family: 宋体">的外观和易用性获得了较大增强。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">_Widget.attributeMap</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">现在，</span><span lang="EN-US">attributeMap</span><span style="font-family: 宋体">也可以处理</span><span lang="EN-US">innerHTML</span><span style="font-family: 宋体">和类名了。可以把</span><span lang="EN-US">attributeMap</span><span style="font-family: 宋体">的作用想象成绑定部件属性与</span><span lang="EN-US">DOM</span><span style="font-family: 宋体">节点。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">_Widget.placeAt</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">placeAt()</span><span style="font-family: 宋体">是一个新的</span><span lang="EN-US">domNode</span><span style="font-family: 宋体">操作方法，用于简化对部件的</span><span lang="EN-US">domNode</span><span style="font-family: 宋体">的连缀和放置操作（或通过</span><span lang="EN-US">addChild()</span><span style="font-family: 宋体">将部件的</span><span lang="EN-US">domNode</span><span style="font-family: 宋体">添加到其他部件中）。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">动画</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">加快了部件中默认的动画执行时间。现在，可以通过</span><span lang="EN-US">dojo.config.defaultDuration</span><span style="font-family: 宋体">控制动画了。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">BorderContainer</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">修正了窗格布局中缺失边框或出现双边框的问题。通过新的参数</span><span lang="EN-US">gutters=true/false</span><span style="font-family: 宋体">（默认为</span><span lang="EN-US">true</span><span style="font-family: 宋体">）可以为所有窗格添加“外边距”（包括不可调整大小的窗格），从而使窗格与窗格、窗格与</span><span lang="EN-US">BorderContainer</span><span style="font-family: 宋体">之间保持一定距离。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Button</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">修正了垂直对齐及各种显示问题。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">CheckBox</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">突出显示搜索结果。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">FilteringSelect</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">不必为了让用户能清除下拉列表中的值而放入空值了，用户现在可以使用退格或删除键清除该值。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">突出显示搜索结果。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">表单验证</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">增强后的表单部件不会再因为用户输入的值不完整而变黄了。但是，如果用户输入的值无效（哪怕再继续输入更多字符也仍然无效），仍然会变黄……这样用户就不会再感到它们“慌报军情”了。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">另外，还为</span><span lang="EN-US">dijit.form.Form</span><span style="font-family: 宋体">部件新增了</span><span lang="EN-US">onValidStateChange</span><span style="font-family: 宋体">连接点，以便能够创建像禁用提交按钮（在表单无效时）之类的行为。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Menu</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">新增了</span><span lang="EN-US">CheckableMenuItem</span><span style="font-family: 宋体">类。使用这个类，用户在选择菜单项时会伴随一个对勾图标出现或消息（有点类似切换按钮）。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">RadioButton</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">在</span><span lang="EN-US">FF</span><span style="font-family: 宋体">和</span><span lang="EN-US">Safari</span><span style="font-family: 宋体">中实现了类似</span><span lang="EN-US">IE</span><span style="font-family: 宋体">中的获取焦点的效果（标签四周会出现带阴影的线框）。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Tree</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">解决了水平滚动的问题，而且为每一行都设置了</span><span lang="EN-US">white-space:nowrap</span><span style="font-family: 宋体">，确保标签不会折行显示。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">同时还修正了图标与文本垂直的对齐问题。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">TimeTextBox</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">自动滚动</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">键盘支持</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">更佳的外观</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Tooltip</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">缩小了箭头图标</span></p>
<p><span style="font-weight: bold" class="Apple-style-span">U</span>til</p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">util/buildscripts</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">通过一个新的构建选项可以去掉构建过程中所有</span><span lang="EN-US">JavaScript</span><span style="font-family: 宋体">文件内包含的</span><span lang="EN-US">console.*</span><span style="font-family: 宋体">调用。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">stripConsole=normal</span><span style="font-family: 宋体">将去掉除</span><span lang="EN-US">console.warn</span><span style="font-family: 宋体">和</span><span lang="EN-US">console.error</span><span style="font-family: 宋体">之外的所有</span><span lang="EN-US">console.*</span><span style="font-family: 宋体">调用</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">stripConsole=all</span><span style="font-family: 宋体">将去掉所有</span><span lang="EN-US">console.*</span><span style="font-family: 宋体">调用</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">警告：如果在使用这个选项时导致了</span><span lang="EN-US">OutOfMemoryError</span><span style="font-family: 宋体">，请参考</span><span lang="EN-US">http://trac.dojotoolkit.org/ticket/7698</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">DOH</span><span style="font-family: 宋体">：单元测试框架</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">新增了一个</span><span lang="EN-US">doh.robot</span><span style="font-family: 宋体">包，以方便为</span><span lang="EN-US">DnD</span><span style="font-family: 宋体">和部件等视觉组件编写单元测试。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">在</span><span lang="EN-US">dijit/tests/form/robot</span><span style="font-family: 宋体">中也可以找到一些类似的测试。</span></p>
<p><span style="font-family: 黑体; font-weight: bold" class="Apple-style-span">迁移问题</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">在从</span><span lang="EN-US">Dojo1.1</span><span style="font-family: 宋体">迁移到</span><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">时，需要对已有应用程序作如下更新：</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">下载文件或执行</span><span lang="EN-US">JavaScript</span><span style="font-family: 宋体">的链接（</span><span lang="EN-US">dojo.addOnUnload()</span><span style="font-family: 宋体">与</span><span lang="EN-US">dojo.addOnWindowUnload()</span><span style="font-family: 宋体">）</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">通过</span><span lang="EN-US">dojo.addOnUnload()</span><span style="font-family: 宋体">注册的回调函数以前不能在</span><span lang="EN-US">IE</span><span style="font-family: 宋体">中被触发。现在这个问题虽然已经修正，但是也出现了一个问题。用户在单击下载文件或执行</span><span lang="EN-US">JavaScript</span><span style="font-family: 宋体">代码（即</span><span lang="EN-US">href</span><span style="font-family: 宋体">属性值为</span><span lang="EN-US">javascript:</span><span style="font-family: 宋体">开头）的链接时，会触发</span><span lang="EN-US">window.onbeforeunload</span><span style="font-family: 宋体">事件，而该事件又会触发</span><span lang="EN-US">dojo.addOnUnload</span><span style="font-family: 宋体">回调函数。但是，上述链接通常不会影响页面。因此，如果要在</span><span lang="EN-US">dojo.addOnUnload()</span><span style="font-family: 宋体">中执行破坏性操作，请务必格外小心。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">如果需要清理循环引用以避免内存泄漏（除了有用的</span><span lang="EN-US">Dojo</span><span style="font-family: 宋体">代码外），那么可以使用</span><span lang="EN-US">Dojo1.2</span><span style="font-family: 宋体">中新增的</span><span lang="EN-US">dojo.addOnWindowUnload</span><span style="font-family: 宋体">方法，该方法基于</span><span lang="EN-US">window.onunload</span><span style="font-family: 宋体">触发回调函数。</span><span lang="EN-US">dojo.addOnWindowUnload</span><span style="font-family: 宋体">与</span><span lang="EN-US">dojo.addOnUnload</span><span style="font-family: 宋体">的原理相同，但只基于</span><span lang="EN-US">window.onunload</span><span style="font-family: 宋体">事件发生（即页面真正缷载）而触发。在</span><span lang="EN-US">dojo.addOnWindowUnload()</span><span style="font-family: 宋体">回调函数中操作</span><span lang="EN-US">DOM</span><span style="font-family: 宋体">和</span><span lang="EN-US">JavaScript</span><span style="font-family: 宋体">属性时要小心，因为页面的状态不一定可靠。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Editor</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">出于安全原因，不推荐使用</span><span lang="EN-US">TEXTAREA</span><span style="font-family: 宋体">；而使用</span><span lang="EN-US">DIV</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">Widget.arrt()</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span lang="EN-US">Widget.arrt()</span><span style="font-family: 宋体">是用于设置</span><span lang="EN-US">/</span><span style="font-family: 宋体">取得所有部件属性的标准接口。旧方法</span><span lang="EN-US">setValue()</span><span style="font-family: 宋体">、</span><span lang="EN-US">setAttribute()</span><span style="font-family: 宋体">和</span><span lang="EN-US">setTitle()</span><span style="font-family: 宋体">仍然存在，但已经不推荐使用。基本上，</span><span lang="EN-US">Widget.attr()</span><span style="font-family: 宋体">与</span><span lang="EN-US">dojo.attr()</span><span style="font-family: 宋体">相似，详细内容请参考</span><span lang="EN-US">http://blog.dojotoolkit.org/2008/08/19/widget-attr</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dijit._Widget.destroy()</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">对</span><span lang="EN-US">_Widget</span><span style="font-family: 宋体">的</span><span lang="EN-US">.destroy()</span><span style="font-family: 宋体">方法从技术上作了修改。以前，这个方法有一个“已定案的（</span><span lang="EN-US">finalize</span><span style="font-family: 宋体">）”什么也不做的参数。但现在，这个参数被改为了“保护</span><span lang="EN-US">DOM</span><span style="font-family: 宋体">（</span><span lang="EN-US">preserveDom</span><span style="font-family: 宋体">）”，是一个布尔值，表示</span><span lang="EN-US">destory()</span><span style="font-family: 宋体">是否删除与</span><span lang="EN-US">_Widget(this.domNode)</span><span style="font-family: 宋体">关联的</span><span lang="EN-US">domNode</span><span style="font-family: 宋体">。传入“</span><span lang="EN-US">true</span><span style="font-family: 宋体">”，则保留</span><span lang="EN-US">DOM</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dojo.isGears</span><span style="font-family: 宋体">转移到</span><span lang="EN-US">dojo.gears.available</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">检测</span><span lang="EN-US">Gears</span><span style="font-family: 宋体">的特性转移到了</span><span lang="EN-US">dojo.gears</span><span style="font-family: 宋体">模块中。要检测</span><span lang="EN-US">Gears</span><span style="font-family: 宋体">是否已经安装，首先执行</span><span lang="EN-US">dojo.require(&#8220;dojo.gears&#8221;)</span><span style="font-family: 宋体">，然后根据</span><span lang="EN-US">dojo.gears.available</span><span style="font-family: 宋体">返回的布尔值确定。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span style="font-family: 宋体">在调用</span><span lang="EN-US">dojo.xhr</span><span style="font-family: 宋体">时，不再推荐使用</span><span lang="EN-US">handleAs: &#8220;json-comment-filtered&#8221;</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">如果再使用</span><span lang="EN-US">handleAs: &#8220;json-comment-filtered&#8221;</span><span style="font-family: 宋体">，会在控制台中看到一条警告消息。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">要取消该警告，可以将</span><span lang="EN-US">djConfig.useCommentedJson</span><span style="font-family: 宋体">设置为</span><span lang="EN-US">true</span><span style="font-family: 宋体">。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm 6pt 21pt"><span style="font-family: 宋体">同时，这也意味着删除了</span><span lang="EN-US">djConfig.usePlainJson</span><span style="font-family: 宋体">标签，因为普通的</span><span lang="EN-US">JSON</span><span style="font-family: 宋体">是优先考虑的，目前使用普通的</span><span lang="EN-US">JSON</span><span style="font-family: 宋体">不会产生警告。</span></p>
<p class="LSF0Ctrl0" style="margin: 6pt 0cm"><span lang="EN-US">dijit.layout.BorderContainer</span><span style="font-family: 宋体">在所有窗格四周添加了外边距</span></p>
<p><span style="font-family: 宋体; font-size: 14px" class="Apple-style-span"></span></p>
<p style="margin: 7.8pt 0cm 7.8pt 21pt" class="LSF0Ctrl0"><span style="font-family: 宋体">新参数“</span><span lang="EN-US">gutters</span><span style="font-family: 宋体">”的默认值为</span><span lang="EN-US">true</span><span style="font-family: 宋体">，因此会在所有窗格周围添加“外边距”（即使是大小不可调整的窗格），从而使窗格与窗格、窗格与</span><span lang="EN-US">BorderContainer</span><span style="font-family: 宋体">之间保持一定距离。</span></p>
<p style="margin: 7.8pt 0cm" class="LSF0Ctrl0"><span lang="EN-US"><o:p> </o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/12/18/dojo-1-2-release-notes-265.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>《CSS Web站点设计手册》原书勘误</title>
		<link>http://www.cn-cuckoo.com/2008/08/25/errata-for-css-web-site-design-258.html</link>
		<comments>http://www.cn-cuckoo.com/2008/08/25/errata-for-css-web-site-design-258.html#comments</comments>
		<pubDate>Mon, 25 Aug 2008 06:55:12 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/08/25/errata-for-css-web-site-design-258.html</guid>
		<description><![CDATA[CSS Web Site Design（《CSS Web站点设计手册》）发布了原书勘误，今天翻译出来并补充到了“勘误页面”，供读者参考。
 
]]></description>
			<content:encoded><![CDATA[<p><strong><em><a href="http://www.amazon.com/Site-Design-Hands-Training-Hands/dp/0321293916/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1219647540&amp;sr=8-1" title="http://www.amazon.com/Site-Design-Hands-Training-Hands/dp/0321293916/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1219647540&amp;sr=8-1" target="_blank">CSS Web Site Design</a></em></strong>（《<a href="http://www.china-pub.com/39720" title="http://www.china-pub.com/39720" target="_blank">CSS Web站点设计手册</a>》）发布了<a href="http://www.lynda.com/info/books/css/errata.aspx" title="http://www.lynda.com/info/books/css/errata.aspx" target="_blank">原书勘误</a>，今天翻译出来并补充到了“<a href="http://www.cn-cuckoo.com/errata-for-chinese-language-edition-of-css-web-site-design" title="http://www.cn-cuckoo.com/errata-for-chinese-language-edition-of-css-web-site-design" target="_blank">勘误页面</a>”，供读者参考。</p>
<p><a href="http://www.amazon.com/Site-Design-Hands-Training-Hands/dp/0321293916/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1219647540&amp;sr=8-1" title="http://www.amazon.com/Site-Design-Hands-Training-Hands/dp/0321293916/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1219647540&amp;sr=8-1" target="_blank"><img src="http://ecx.images-amazon.com/images/I/419B2GJGDCL._SL500_AA240_.jpg" height="240" width="240" /></a> <a href="http://www.china-pub.com/39720" title="http://www.china-pub.com/39720" target="_blank"><img src="http://images.china-pub.com/ebook35001-40000/39720/zcover.jpg" height="240" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/08/25/errata-for-css-web-site-design-258.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《jQuery基础教程》的Q&amp;A</title>
		<link>http://www.cn-cuckoo.com/2008/08/21/learing-jquery-qa-256.html</link>
		<comments>http://www.cn-cuckoo.com/2008/08/21/learing-jquery-qa-256.html#comments</comments>
		<pubDate>Thu, 21 Aug 2008 09:42:29 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/08/22/learing-jquery-qa-256.html</guid>
		<description><![CDATA[近来，有几位购买了我翻译的《jQuery基础教程》的读者朋友来信，询问了一些问题。本着有信必复的原则，同时也避免“重复劳动”，我把问题和答复放在这里，供广大读者朋友参考。
目前的主要问题有3个：
Q1：关于DOM文档。查看
这个问题是读者对JavaScript与DOM的关系理解不透造成的。
Q2：关于XPath选择符。查看
这个问题是因为jQuery1.2之后不再内置支持XPath选择符造成的。
Q3：jQuery版本。查看
这个问题与Q2类似，因为《jQuery基础教程》基于jQuery1.1，而很多读者下载的则是更高版本。
 
 Q3：jQuery版本
读者hcq989 ：我是您的读者，在运行随书的源代码时，发现第四章节的代码有问题，在单击Style Switcher时不能实现报控制文字大小的两个按钮向右移动！
错误提示：行5044
Char:5
错误：参数无效
译者： 根据“错误提示：行5044”，我判断是jQuery版本造成的问题。因为只有jQuery源文件才可能有那么多行。《jQuery基础教程》出版时jQuery的版本是1.1，因此如果要运行书中的例子，请读者下载jQuery 1.1。

Q2：关于XPath选择符
读者jamsonwoo：我有一问题请教，请帮看一下哪里错了.&#60;html&#62;
&#60;head&#62;
&#60;meta  http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=gb2312&#8243;&#62;
&#60;title&#62;Sort&#60;/title&#62;
&#60;script src=&#8221;../js/jquery.js&#8221; language=&#8221;javascript&#8221;&#62;&#60;/script&#62;
&#60;script language=&#8221;javascript&#8221;&#62;
&#60;!&#8211;
$(function(){
alert($(&#8220;table tr:not([th]))&#8221;).length);
$(&#8220;table tr:not([th])&#8221;).each(function(){
alert($(this).html());
});
});
//&#8211;&#62;
&#60;/script&#62;
&#60;/head&#62;
&#60;body&#62;
&#60;table&#62;
&#60;tr&#62;&#60;th&#62;A&#60;/th&#62;&#60;/tr&#62;
&#60;tr&#62;&#60;td&#62;B&#60;/td&#62;&#60;/tr&#62;
&#60;tr&#62;&#60;th&#62;C&#60;/th&#62;&#60;/tr&#62;
&#60;tr&#62;&#60;td&#62;D&#60;/td&#62;&#60;/tr&#62;
&#60;tr&#62;&#60;td&#62;E&#60;/td&#62;&#60;/tr&#62;
&#60;/table&#62;
&#60;/body&#62;
&#60;/html&#62;
最后输出的是 5 而不是 3  。 为什么?  谢谢！
但是：
alert($(&#8220;table tr:not(:has(&#8216;th&#8217;))&#8221;).length);
这样可以正确的筛选。输出 3
您的书中P134页底部的代码是怎样做的哦？？？
$(&#8220;table.striped tbody tr:not([th]):odd&#8221;).addClass(&#8220;odd&#8221;);
$(&#8220;table.striped tbody tr:not([th]):even&#8221;).addClass(&#8220;even&#8221;);
:not([th]) 为什么我用无效？？
译者：这个问题的原因是jQuery 1.2之后不再内置支持XPath选择符；如果在1.2及以上版本中使用XPath选择符，需要下载插件：http://plugins.jquery.com/project/xpath（使用方法如下面代码所示）。
1.2版和1.1版（本书）的区别，请参考：http://www.douban.com/review/1418465/（我在china-pub上面发过）
从插件代码中可见，XPath选择符的确依赖:has()和find()。
&#60;html&#62;
&#60;head&#62;
&#60;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=gb2312&#8243;&#62;
&#60;title&#62;Sort&#60;/title&#62;
&#60;script src=&#8221;jquery-1.2.6.min.js&#8221; language=&#8221;javascript&#8221;&#62;&#60;/script&#62;
&#60;script language=&#8221;javascript&#8221;&#62;
(function(jQuery){
var find = jQuery.find;
jQuery.find = function(selector, context){
// Convert the root / into a different context
if ( !selector.indexOf(&#8220;/&#8221;) ) [...]]]></description>
			<content:encoded><![CDATA[<p>近来，有几位购买了我翻译的《jQuery基础教程》的读者朋友来信，询问了一些问题。本着有信必复的原则，同时也避免“重复劳动”，我把问题和答复放在这里，供广大读者朋友参考。</p>
<p>目前的主要问题有3个：</p>
<p><strong>Q1：关于DOM文档。</strong><a href="http://www.cn-cuckoo.com/2008/08/22/learing-jquery-qa-256.html#q1">查看</a></p>
<p>这个问题是读者对JavaScript与DOM的关系理解不透造成的。</p>
<p><strong>Q2：关于XPath选择符。</strong><a href="http://www.cn-cuckoo.com/2008/08/22/learing-jquery-qa-256.html#q2">查看</a></p>
<p>这个问题是因为jQuery1.2之后不再内置支持XPath选择符造成的。</p>
<p><strong>Q3：jQuery版本。</strong><a href="http://www.cn-cuckoo.com/2008/08/22/learing-jquery-qa-256.html#q3">查看</a><br />
这个问题与Q2类似，因为《jQuery基础教程》基于jQuery1.1，而很多读者下载的则是更高版本。<span id="more-256"></span></p>
<hr /> <a title="q3" name="q3" id="q3"></a></p>
<h3> Q3：jQuery版本</h3>
<p><strong>读者<em>hcq989 </em>：</strong>我是您的读者，在运行随书的源代码时，发现第四章节的代码有问题，在单击Style Switcher时不能实现报控制文字大小的两个按钮向右移动！</p>
<p>错误提示：行5044<br />
Char:5<br />
错误：参数无效</p>
<p>译者： 根据“错误提示：行5044”，我判断是jQuery版本造成的问题。因为只有jQuery源文件才可能有那么多行。《jQuery基础教程》出版时jQuery的版本是1.1，因此如果要运行书中的例子，请读者下载jQuery 1.1。<br />
<a title="q2" name="q2" id="q2"></a></p>
<h3>Q2：关于XPath选择符</h3>
<p><strong>读者</strong><strong><em>jamsonwoo</em></strong><strong>：</strong>我有一问题请教，请帮看一下哪里错了.&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta  http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=gb2312&#8243;&gt;<br />
&lt;title&gt;Sort&lt;/title&gt;<br />
&lt;script src=&#8221;../js/jquery.js&#8221; language=&#8221;javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
$(function(){<br />
alert(<strong><font size="4">$(&#8220;table tr:not([th]))&#8221;).length</font></strong>);<br />
$(&#8220;table tr:not([th])&#8221;).each(function(){<br />
alert($(this).html());<br />
});<br />
});<br />
//&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;&lt;th&gt;A&lt;/th&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;th&gt;C&lt;/th&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>最后输出的是 <font size="4"><strong>5</strong></font> 而不是 <font size="4"><strong>3</strong></font>  。 为什么?  谢谢！</p>
<p>但是：</p>
<p>alert(<strong><font size="4">$(&#8220;table tr:not(:has(&#8216;th&#8217;))&#8221;).length</font></strong>);</p>
<p>这样可以正确的筛选。输出 3</p>
<p>您的书中P134页底部的代码是怎样做的哦？？？</p>
<p>$(&#8220;table.striped tbody tr:not([th]):odd&#8221;).addClass(&#8220;odd&#8221;);<br />
$(&#8220;table.striped tbody tr:not([th]):even&#8221;).addClass(&#8220;even&#8221;);</p>
<p>:not([th]) 为什么我用无效？？</p>
<p><strong>译者：</strong>这个问题的原因是jQuery 1.2之后不再内置支持XPath选择符；如果在1.2及以上版本中使用XPath选择符，需要下载插件：http://plugins.jquery.com/project/xpath（使用方法如下面代码所示）。</p>
<p>1.2版和1.1版（本书）的区别，请参考：http://www.douban.com/review/1418465/（我在china-pub上面发过）</p>
<p>从插件代码中可见，XPath选择符的确依赖:has()和find()。</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&#8221;Content-Type&#8221; content=&#8221;text/html; charset=gb2312&#8243;&gt;<br />
&lt;title&gt;Sort&lt;/title&gt;<br />
&lt;script src=&#8221;jquery-1.2.6.min.js&#8221; language=&#8221;javascript&#8221;&gt;&lt;/script&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
(function(jQuery){</p>
<p>var find = jQuery.find;</p>
<p>jQuery.find = function(selector, context){</p>
<p>// Convert the root / into a different context<br />
if ( !selector.indexOf(&#8220;/&#8221;) ) {<br />
context =  context.documentElement;<br />
selector = selector.replace(/^/w*/, &#8220;&#8221;);<br />
if ( !selector )<br />
return [ context ];<br />
}</p>
<p>// Convert // to &#8221; &#8221;<br />
selector = selector.replace(////g, &#8221; &#8220;);</p>
<p>// Convert / to &gt;<br />
selector = selector.replace(///g, &#8220;&gt;&#8221;);</p>
<p>// Naively convert [elem] into :has(elem)<br />
selector = selector.replace(/[([^@].*?)]/g, function(m, selector){<br />
return &#8220;:has(&#8221; + selector + &#8220;)&#8221;;<br />
});</p>
<p>// Naively convert /.. into a new set of expressions<br />
if ( selector.indexOf(&#8220;&gt;..&#8221;) &gt;= 0 ) {<br />
var parts = selector.split(/&gt;..&gt;?/g);<br />
var cur = jQuery(parts[0], context);</p>
<p>for ( var i = 1; i &lt; parts.length; i++ )<br />
cur = cur.parent(parts[i]);</p>
<p>return cur.get();<br />
}</p>
<p>return find(selector, context);<br />
};</p>
<p>})(jQuery);</p>
<p>$(function(){<br />
alert($(&#8220;table tr:not([th])&#8221;).length);<br />
//alert($(&#8220;table tr:not([th]<span style="font-weight: bold">)</span>)&#8221;).length);         此行多了一个)。<br />
// $(&#8220;table tr:not([th])&#8221;).each(function(){<br />
//  alert($(this).html());<br />
// });<br />
});</p>
<p>&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;table&gt;<br />
&lt;tr class=&#8221;not&#8221;&gt;&lt;th&gt;A&lt;/th&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;th&gt;C&lt;/th&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p><strong>读者</strong><strong><em>jamsonwoo</em></strong><strong>：</strong>在您的译著《jQuery基础教程》第9章9.1.2节（即 P212页）上部代码中 $(&#8216;/rss//item&#8217;，data) 作何解释？特别不理解 / 的用法。望解答。</p>
<p><strong>读者<em>moluyingxing</em></strong>：你好,在买了一本jQuery基础教程的时候,遇见一个问题,请高手不惜赐教:书的212页里面,有个$(&#8216;/rss//item&#8217;,data),这个是不是有问题哟,反正我在运行这个例子的时候,数据没有显示出来.而且我加载的还是本地的那个feed.xml文件,没有用服务器的XML,请解释,谢谢!<br />
<strong>译者：</strong>$(&#8216;/rss//item&#8217;，data)中的/rss//item是一个XPath选择符，/rss中的/表示rss必须是根元素，//item表示 item元素不一定是rss的子元素（反之，如果这里仍然是/，就表示item必须是rss的子元素）。也就是说，这个XPath选择符选择data中的 以rss为根元素的所有标签名为item的后代元素。<br />
<a title="q1" name="q1" id="q1"></a></p>
<h3>Q1：关于DOM文档</h3>
<p><strong>读者</strong><strong><em>jamsonwoo</em></strong><strong>：</strong>近期我在仔细阅读您的译著《jQuery基础教程》，收益非浅。谢谢您。我有一下一个简单问题，百思不得其解，望解答。 问题如下：</p>
<p>&lt;script src=&#8221;js/jquery.js&#8221; type=&#8221;text/javascript&#8221;&gt; &lt;/script&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
var s1=&#8221;&lt;s&gt;&lt;name&gt;1&lt;/name&gt;&lt;name&gt;2&lt;/name&gt;&lt;/s&gt;&#8221;;<br />
var s2=&#8221;&lt;c&gt;&lt;name&gt;1&lt;/name&gt;&lt;name&gt;2&lt;/name&gt;&lt;/c&gt;&#8221;;<br />
$(function(){<br />
alert($(s1).find(&#8220;name&#8221;).length);<br />
alert($(s2).find(&#8220;name&#8221;).length);<br />
});<br />
//&#8211;&gt;<br />
&lt;/script&gt;</p>
<p>这个结果为什么打印出<br />
2<br />
0</p>
<p>而且在firefox里的答案和ie6中的不一样，这是为什么啊，难道不垮浏览器？随便问一下，有没有jQuery更深层次的书籍阅读？</p>
<p><strong>译者：</strong>这个问题很简单，原因是HTML中没有&lt;c&gt;这个标签，但有&lt;s&gt;标签（参考http://www.w3schools.com/tags/default.asp）。不知你为什么要这样自定义标签。另外，IE7和FF2结果是一致的。</p>
<p>据 我所知，《jQuery in Action》大概要算一本更深层次的书。该书正在翻译中（不是我，呵呵）。另据悉，人民邮电出版社还引进了一本《Practical jQuery Projects》（原著尚未出版）。（参考http://numenzq.javaeye.com/blog/202354）</p>
<p><strong>读者</strong><strong><em>jamsonwoo</em></strong><strong>：</strong>非常高兴看到您的及时回答。谢谢。您说&lt;c&gt;不是html中的标签。难道jQuery只能处理html标签的文档，那xml文档就不能用jQuery处理了？您书中的第6章 （Ajax－让网站与时俱进）6.1.3加载XML文档，P92页底部，也用了find(&#8220;entry&#8221;),难道entry也是html标签？难道xml 文档都只能用html标签？</p>
<p><strong>译者：</strong>抱歉刚才没有说清这一点。简单解释一下：</p>
<p>首先，必须知道jQuery直接操作的目标是DOM元素，而不是XHTML或XML标签——虽然 结果可能会反映在XHTML或XML标签上。在你试验的例子中，由于当前文档是XHTML文档，因此，jQuery必须先将标签集通过浏览器转换为对应的 DOM，才能完成后续操作——find(&#8230;)。但是，XHTML规范中没有&lt;c&gt;&lt;/c&gt;标签，因此浏览器无法创建与该标签 对应的DOM元素，也就不能将你的标签集转换为DOM。简而言之，JavaScript操作的并不是XHTML或XML，而是与XHTML或XML对等的 DOM。建议花时间阅读一篇文章，了解浏览器中对等模型的概念：</p>
<p>http://www.sproutcore.com/2008/05/28/understanding-the-ie-dom/</p>
<p>《jQuery基础教程》第6章讲Ajax时为什么能直接操作XML文档呢？事实上，虽然书中展示了一个XML文档，但jQuery也没有<span style="font-weight: bold">直接</span>操作那个XML文档。jQuery操作的是由服务器返回的与该XML文档对应的DOM。这是因为服务器在HTTP头部信息<span style="color: #000000">中将返回数据的MIME类型设置成了application/xhtml+</span><font style="color: #000000" color="#cc0033">xml，所以，jQuery在客户端接收到的响应是DOM，而不是XML文档。</font></p>
<p>不知道上述解释你能否理解。另外，还可以<span style="font-weight: bold">在IE中</span>试验下面的例子：</p>
<p>&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
/* sample.xml的内容如下：<br />
&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;gb2312&#8243;?&gt;<br />
&lt;c&gt;<br />
&lt;name&gt;1&lt;/name&gt;<br />
&lt;name&gt;2&lt;/name&gt;<br />
&lt;name&gt;3&lt;/name&gt;<br />
&lt;name&gt;4&lt;/name&gt;<br />
&lt;/c&gt;<br />
*/<br />
var xmlDoc;</p>
<p>xmlDoc = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);<br />
xmlDoc.async=false;<br />
xmlDoc.load(&#8220;sample.xml&#8221;);</p>
<p>$(function(){<br />
alert($(xmlDoc).find(&#8220;name&#8221;).length);<br />
});<br />
//&#8211;&gt;<br />
&lt;/script&gt;</p>
<p>最后，可以再参考下面的文章：</p>
<p>http://www.cnbruce.com/BLOG/showlog.asp?log_id=970&amp;cat_id=34</p>
<p><strong>读者</strong><strong><em>jamsonwoo</em></strong><strong>：</strong>仔细阅读了您的耐心讲解后，明白了其中的一些缘由。</p>
<p>还有以下一个问题不理解， 您的书中的第82页底部代码</p>
<p>$.get(&#8216;d.xml&#8217;, function(data) {</p>
<p>$(data).find(&#8216;entry&#8217;).each(function(){</p>
<p>&#8230;&#8230;</p>
<p>});<br />
});</p>
<p>这里的d.xml中的标签 &#8216;entry&#8217; 也不是html标签吧。这里怎么能find()操作的呢？我用刚才的例子改动了一下：</p>
<p>var xmlDoc;</p>
<p>xmlDoc = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);<br />
xmlDoc.async=false;<br />
xmlDoc.load(&#8220;sample.xml&#8221;);</p>
<p>$(function(){<br />
alert($(xmlDoc).find(&#8220;name&#8221;).length);<br />
});</p>
<p>$(function(){<br />
$.get(&#8217;sample.xml&#8217;, function(xmlDoc) {<br />
alert($(xmlDoc).find(&#8220;name&#8221;).length);<br />
});<br />
});</p>
<p>第一个输出 4 我能理解。但第二个输出 0 就不理解了 ，这个和您的例子一样啊，只是xml文档不一样，请问您的是怎样取到find(&#8216;entry&#8217;)的？望告之！</p>
<p><strong>译者：</strong>原因还是一样。<br />
第一种情况使用xmlDoc = new ActiveXObject(&#8220;Microsoft.XMLDOM&#8221;);在本地创建了DOM树；而第二种情况仍然没有创建DOM。你可以看看：<br />
$(function(){<br />
$.get(&#8217;sample.xml&#8217;, function(xmlDoc) {<br />
alert(xmlDoc);<br />
});<br />
});</p>
<p>将显示XML文档的源代码！</p>
<p>再试试下面这个例子：<br />
$(function(){<br />
$.get(&#8216;<span style="font-weight: bold">http://www.cn-cuckoo.com/sample.xml</span>&#8216;, function(xmlDoc) {<br />
alert($(xmlDoc).find(&#8216;name&#8217;).length);<br />
});<br />
})</p>
<p>此时，xmlDoc才是通过服务器返回的DOM树。顺便说一下，$(xmlDoc)的作用是创建<span style="font-weight: bold">jQuery对象</span>，以便调用find等jQuery库的函数。</p>
<p>记得书中有一段如下：<br />
<span style="font-family: 宋体">这次，帮助我们完成任务的是</span><span class="5"><span style="font-size: 9.5pt" lang="EN-US">$.get()</span></span><span style="font-family: 宋体">函数。通常，这个函数只是简单地取得由</span><span lang="EN-US">URL</span><span style="font-family: 宋体">指定的文件，然后将纯文本格式的数据提供给回调函数。<span style="text-decoration: underline">但是，在根据服务器提供的</span></span><span style="text-decoration: underline" lang="EN-US">MIME</span><span style="font-family: 宋体; text-decoration: underline">类型知道响应的是</span><span style="text-decoration: underline" lang="EN-US">XML</span><span style="font-family: 宋体; text-decoration: underline">的情况下，提供给回调函数的将是</span><span style="text-decoration: underline" lang="EN-US">XML DOM</span><span style="font-family: 宋体; text-decoration: underline">树。</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/08/21/learing-jquery-qa-256.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>读《JavaScript DOM高级程序设计》</title>
		<link>http://www.cn-cuckoo.com/2008/06/27/reading-advanced-dom-scripting-241.html</link>
		<comments>http://www.cn-cuckoo.com/2008/06/27/reading-advanced-dom-scripting-241.html#comments</comments>
		<pubDate>Fri, 27 Jun 2008 13:32:05 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[好书]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/06/27/reading-advanced-dom-scripting-241.html</guid>
		<description><![CDATA[没错，我现在又开始读这本书。虽然 《JavaScript DOM高级程序设计》的第一读者就是我，但我现在仍然要说：我要安排时间再通读它几遍！
好书啊，没办法。翻译一遍，还不够烦吗？——怎么会烦呢？尽管在翻译它时，我倾注的热情和努力已经够多，但我仍然感觉没有完全读透它！我读它读得还不够。
再读 《JavaScript DOM高级程序设计》，我体验到了什么叫享受。毫无疑问，就当前谈论和讲解JavaScript及DOM编程的技术书而言，这本书已经接近该领域的极高点了（其他几本我也知道，但在它面前只能算各有千秋吧）。读一本好书——不是入门级的书——尤其是像《JavaScript DOM高级程序设计》这样适合中高级读者的好书，读者的心态应该是与书背后的作者进行交流。在读它的过程中，跟着作者的思路去假设、去思考、去推断、去印证、去反问、去寻找答案，是之谓交流。我正是因为体验到与作者交流的愉悦，才想起来写这些文字。
事实上，老实说，我现在正抽一切可能的时间做《JavaScript DOM高级程序设计》的审校。书虽然已经出版了，但我自己深知，作为正式翻译的第5本书，我当时（2007年9～11月）的翻译水平还不够好——至少不如现在的状态；而且，对翻译技术书的认识也没有今天这么深入。现在，我已经看到第2章，也单独为它建立了勘误页面。虽然目前发现的错误很少，但却发现语言表达上犯了“的的不休”的毛病，也就是“的”字用得有点过度——这一点，请买第一次印刷的朋友们多多担待。不过，多余的“的”字，我在审校过程中都已经加了删除标记。在第二次印刷时，相信这个毛病就会得到全面、彻底纠正。
为此，我跟杨爽同学要了这本书的英文版，以便对照审校。
]]></description>
			<content:encoded><![CDATA[<p>没错，我现在又开始读这本书。虽然 《JavaScript DOM高级程序设计》的第一读者就是我，但我现在仍然要说：我要安排时间再通读它几遍！</p>
<p>好书啊，没办法。翻译一遍，还不够烦吗？——怎么会烦呢？尽管在翻译它时，我倾注的热情和努力已经够多，但我仍然感觉没有完全读透它！我读它读得还不够。</p>
<p>再读 《JavaScript DOM高级程序设计》，我体验到了什么叫享受。毫无疑问，就当前谈论和讲解JavaScript及DOM编程的技术书而言，这本书已经接近该领域的极高点了（其他几本我也知道，但在它面前只能算各有千秋吧）。读一本好书——不是入门级的书——尤其是像《JavaScript DOM高级程序设计》这样适合中高级读者的好书，读者的心态应该是与书背后的作者进行交流。在读它的过程中，跟着作者的思路去假设、去思考、去推断、去印证、去反问、去寻找答案，是之谓交流。我正是因为体验到与作者交流的愉悦，才想起来写这些文字。</p>
<p>事实上，老实说，我现在正抽一切可能的时间做《JavaScript DOM高级程序设计》的审校。书虽然已经出版了，但我自己深知，作为正式翻译的第5本书，我当时（2007年9～11月）的翻译水平还不够好——至少不如现在的状态；而且，对翻译技术书的认识也没有今天这么深入。现在，我已经看到第2章，也单独为它建立了<strong><a href="http://www.cn-cuckoo.com/errata-for-chinese-language-edition-of-advanced-dom-scripting" title="http://www.cn-cuckoo.com/errata-for-chinese-language-edition-of-advanced-dom-scripting" target="_blank">勘误页面</a></strong>。虽然目前发现的错误很少，但却发现语言表达上犯了“的的不休”的毛病，也就是“的”字用得有点过度——这一点，请买第一次印刷的朋友们多多担待。不过，多余的“的”字，我在审校过程中都已经加了删除标记。在第二次印刷时，相信这个毛病就会得到全面、彻底纠正。</p>
<p>为此，我跟杨爽同学要了这本书的英文版，以便对照审校。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/06/27/reading-advanced-dom-scripting-241.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>《JavaScript DOM高级程序设计》出版</title>
		<link>http://www.cn-cuckoo.com/2008/06/14/advanced-dom-scripting-simplified-chinese-available-for-preorder-237.html</link>
		<comments>http://www.cn-cuckoo.com/2008/06/14/advanced-dom-scripting-simplified-chinese-available-for-preorder-237.html#comments</comments>
		<pubDate>Sat, 14 Jun 2008 00:50:01 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/06/14/advanced-dom-scripting-simplified-chinese-available-for-preorder-237.html</guid>
		<description><![CDATA[
《JavaScript DOM高级程序设计》
【原 书 名】                                   AdvancED DOM Scripting：Dynamic Web Design Techniques
【原出版社】  friends of ED
【出 版 社】 人民邮电出版社
【出版日期】 2008 年7月
【页 码】 457
【定价】 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.china-pub.com/39957" title="http://www.china-pub.com/39957" target="_blank"><img src="http://images.china-pub.com/ebook35001-40000/39957/zcover.jpg" title="http://images.china-pub.com/ebook35001-40000/39957/zcover.jpg" alt="http://images.china-pub.com/ebook35001-40000/39957/zcover.jpg" align="left" height="200" hspace="10" vspace="10" width="159" /></a></p>
<p><a href="http://www.china-pub.com/39957" title="http://www.china-pub.com/39957" target="_blank">《JavaScript DOM高级程序设计》</a></p>
<p>【原 书 名】                                  <a href="http://www.amazon.com/AdvancED-DOM-Scripting-Techniques-Advanced/dp/1590598563/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1213345720&amp;sr=1-1" target="_blank"> AdvancED DOM Scripting：Dynamic Web Design Techniques</a><br />
【原出版社】 <a href="http://www.china-pub.com/search/power_search/power_search.asp?key1=friends+of+ED" target="_blank"> friends of ED</a><br />
【出 版 社】 人民邮电出版社<br />
【出版日期】 2008 年7月<br />
【页 码】 457<br />
【定价】 59.00－75折价44.25</p>
<p>DOM（Document Object Model，文档对象模型）脚本编程经常会被误解为Web上的某种脚本编程，实际上，纯粹的DOM脚本编程只包括W3C DOM规范中所涵盖的特性和方法。也就是说，不包括任何专有浏览器的特性。在理想的世界里，我们可以遵循标准，忽略专有特性，最终完成可以在任何设备中运 行的脚本。但是，这不是一个理想的世界。众所周知，并非所有设备或浏览器都与W3C标准兼容，这就给像我们这样的开发者提出了问题：什么时候需要适应每一 种设备或浏览器，怎样才能保证忠实于W3C DOM？</p>
<p>当试图回答这些问题，以及在保持真正的DOM符合性基础上处理多浏览器时，我们萌生了写这本书的想法。本书不仅对以上问题给出了答案，而且还涉及到下列主题：<br />
深入W3C DOM规范，并筛选出经常容易被误解的、仍然为非标准浏览器提供等价选项的细小问题。<br />
进一步探讨新方法，例如Ajax客户端－服务器端通信，冲破Ajax的局限性以提供更具交互性的体验。<br />
体验一些主要的第三方资源，通过它们省掉可观的日常工作量。<br />
理解并创建自己日常所用的DOM方法库。</p>
<p>这 些能力的新发现也带来了许多诱惑。由于热衷于新特性而偏离了基本常识，导致Web应用程序设计模糊的DOM脚本编程的例子太多了。因而，纵贯全书作者都会 强调最佳实践的价值，并提供很多基于可用性和可访问性的解决方案，这样对最终用户和你－－开发者或设计者而言，都是有益的。</p>
<p>你可以把这本书放在计算机旁作为参考，或者从头到尾读完它，这完全取决于你。无论采取哪种方式，只要你坚持学习完本书中的理论介绍、代码、例子和案例研究，就会深刻地发现自己已经很好地理解了书中那些高级概念的含义，不仅知其然，而且更知其所以然。</p>
<p><strong>本书读者对象</strong></p>
<p>本书适合对DOM感兴趣并希望进一步提升自己的所有Web开发者和设计者。通过本书通俗易懂的讲解，读者能够轻松地理解高级的DOM编程概念。如果读者对DOM脚本编程和Web标准有一些基本的经验，那么通过学习本书收获会更大。</p>
<p><strong>本书组织方式</strong></p>
<p>本书分为三个主要部分，通过学习全书内容，读者将能构建起属于自己的DOM实用方法库。书中的每一章都以前一章学习的概念为依托，因而本书的每一部分都是一个整体，每一章也并非完全独立。</p>
<p>第 一部分，“深入理解DOM脚本编程”，涉及W3C DOM规范的方方面面，包括非标准的浏览器支持和不支持的内容。从一开始就以最佳实践为榜样，然后你将了解到DOM2 HTML和DOM2核心规范，同时还有DOM2事件和DOM2样式规范。本部分中的每一章都会给出一些不针对特定浏览器（browser- agnostic）的例子。而且，你也将着手构建自己的脚本程序库，并往其中添加访问和操纵DOM、样式以及事件的各种方法。这些方法将不针对特定的浏览 器，因此你可以很容易地在公共方法（你将自己创建）的基础上建立自己的应用程序。第一部分最后的第六章将会完成一个案例学习，在这一章中，你将学会建立一 个交互式裁剪和调整图像大小的工具。</p>
<p>在介绍了操纵和访问文档的各个方面知识之后，第二部分，“浏览器外部通信”，将以Ajax和客户端－ 服务器端通讯为主题。在这一部分中，作者没有停留在介绍简单的做法上，而是深入解释了相应的内部工作机制，同时，也没有忘记介绍整合Ajax 界面时可能遇到的麻烦。第二部分最后把这些技能用于实战检验，综合运用传统和当前的通讯方法，创建一个带有实时进度条的文件上传程序。</p>
<p>最 后，在第三部分，“部分高级脚本编程资源”中，作者集中介绍了一批第三方脚本编程资源，包括库和API（Application Programming Interfaces，应用程序编程接口）。你将在这一部分学习到如何利用主要的 DOM 脚本库来提高自己的开发效率，也包括使用一些视觉效果，为自己的 Web 应用程序添彩。同时，你还将学习如何通过可自由使用的API来整合交互式地图和项目管理工具。这些资源将为你提供高级编程能力，同时最大限度地减少你的重 复性工作－－但只有在对第一和第二部分内容深入理解的基础上，才能更好地体会到这些资源的价值。本书以Aaron Gustafson撰写的一个案例学习作为结尾，这个案例把select元素提高到了一个全新的水平。</p>
<p>作者没有提供附录，而是向读者公布 了一个网站http://advanceddomscripting.com。在这个网站中，读者可以下载到本书的源代码和额外一些例子和参考文献。作者 将在这个网站中发布与DOM脚本编程相关的最新的重要消息，读者可以经常访问这个网站，以便与时俱进。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/06/14/advanced-dom-scripting-simplified-chinese-available-for-preorder-237.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>《jQuery基础教程》出版</title>
		<link>http://www.cn-cuckoo.com/2008/06/14/learning-jquery-simplified-chinese-available-for-order-235.html</link>
		<comments>http://www.cn-cuckoo.com/2008/06/14/learning-jquery-simplified-chinese-available-for-order-235.html#comments</comments>
		<pubDate>Sat, 14 Jun 2008 00:36:29 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/06/14/learning-jquery-simplified-chinese-available-for-order-235.html</guid>
		<description><![CDATA[
《jQuery基础教程》
【原 书 名】                                   Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques
 【原出版社】   Packt Publishing
【出 版 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.china-pub.com/40825" title="http://www.china-pub.com/40825" target="_blank"><img src="http://images.china-pub.com/ebook40001-45000/40825/zcover.jpg" title="《jQuery基础教程》" alt="《jQuery基础教程》" align="right" height="200" hspace="10" vspace="10" width="159" /></a></p>
<p><a href="http://www.china-pub.com/40825" title="http://www.china-pub.com/40825" target="_blank">《jQuery基础教程》</a></p>
<p>【原 书 名】                                  <a href="http://www.amazon.com/Learning-jQuery-Interaction-Development-JavaScript/dp/1847192505/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1212741895&amp;sr=1-1" target="_blank"> Learning jQuery: Better Interaction Design and Web Development with Simple JavaScript Techniques<br />
</a> 【原出版社】  <a href="http://www.china-pub.com/search/power_search/power_search.asp?key1=Packt+Publishing+" target="_blank"> Packt Publishing</a><br />
【出 版 社】 人民邮电出版社<br />
【出版日期】 2008 年7月<br />
【页 码】 295<br />
【定价】 45.00－75折价33.75</p>
<ul></ul>
<p>jQuery是一个强大的JavaScript库。无论你具有什么编程背景，都可以通过它来增强自己的网站。</p>
<p>由John Resig创建的jQuery，是一个开源项目，其核心团队由富有献身精神的顶尖JavaScript开发人员组成。jQuery在一个紧凑的小文件中提供了丰富多样的特性、简单易学的语法和稳定可靠的跨平台兼容性。此外，百余种为扩展jQuery功能而开发的插件，更使得它几乎成为适用于各类客户端脚本编程的必备工具。</p>
<p>《jQuery基础教程》以通俗易懂的方式介绍了jQuery的基本概念，通过学习本书，即使曾经因编写JavaScript而受过挫折的人，也能够掌握为网页添加交互性和动态效果的技术。本书将引导读者跨越AJAX、事件、效果及JavaScript语言特性中的各种陷阱。</p>
<p>本书网站http://book.learningjquery.com中，包含书中各章的在线示例。</p>
<p><strong>本书内容</strong></p>
<p>本书的第一部分是jQuery简介，用来帮助读者对jQuery建立起一个大概的印象。第1章的内容主要涉及如何下载和设置 jQuery库，同时也会示范通过jQuery编写第一个脚本。</p>
<p>本书的第二部分将深入讨论jQuery库的各个主要方面。第2章学习如何取得我们想要的一切。通过jQuery中的选择符表达式，可以在页面中的任何地方找到想要的元素。这一章，将使用各种选择符表达式为页面中的不同元素添加样式，其中一些通过纯CSS方式是做不到的。</p>
<p>第3章学习如何“扣动扳机”。本章介绍如何通过jQuery的事件处理机制，在浏览器中发生事件时触发行为。同时，还会介绍jQuery的独家秘笈——以不唐突的方式添加事件（甚至在页面加载完成之前）。</p>
<p>第4章学习如何增加操作的艺术感。这一章介绍通过jQuery实现动画的技术，从中我们能够体会到隐藏、显示和移动页面元素时那种轻松自如的感觉。</p>
<p>第5章学习如何通过指令改变页面。本章讲述的是动态修改HTML文档结构的技术。</p>
<p>第6章学习如何让你的网站跻身主流行列。在学习完本章后，你也可以做到不用像过去那样刷新页面而访问服务器端功能。</p>
<p>本书的第三部分与前两部分不同。这一部分主要以实例操作为主，即在前几章学习的基础上，通过jQuery创建常见应用的解决方案。第7章将学习排序、筛选和为信息添加样式并创建优美实用的数据布局。</p>
<p>第8章以客户端数据验证为主题。届时，将设计一个具有适应能力的表单布局，还会实现基于客户端与服务器通信的交互式表单功能，例如自动完成。</p>
<p>第9章介绍如何通过平滑地展示页面元素来增强它们的美感和实用性。其中，动态显示和隐藏信息的方式既有自动化的，也有基于用户控制的。</p>
<p>第10章学习jQuery令人叹为观止的扩展能力。读者将在理解和掌握3个优秀jQuery插件的基础上，从头开始构建自己的插件。</p>
<p>附录A提供了很多与jQuery、JavaScript以及通常的Web开发有关的内容丰富的网站信息。</p>
<p>附录B推荐了一些有用的第三方程序和实用工具，用于在个人的开发环境中编辑和调试jQuery代码。</p>
<p>附录C将讨论JavaScript中一个常见的高级特性——闭包。详细解释了如何扬长避短地发挥闭包的强大威力。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/06/14/learning-jquery-simplified-chinese-available-for-order-235.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>《CSS Web站点设计手册》戡误（陆续增加）</title>
		<link>http://www.cn-cuckoo.com/2008/06/07/css-web-site-design-errata-232.html</link>
		<comments>http://www.cn-cuckoo.com/2008/06/07/css-web-site-design-errata-232.html#comments</comments>
		<pubDate>Sat, 07 Jun 2008 10:48:58 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/06/07/css-web-site-design-errata-232.html</guid>
		<description><![CDATA[第2章 理解CSS
第10页中部，CSS声明中的属性和值原文“分号（:）隔开”，应该是“冒号（:）隔开”。
第4章 通过CSS影响页面布局
第100页，图4-2。原图多处错误，更正后的图如下所示：

]]></description>
			<content:encoded><![CDATA[<p><strong>第2章 理解CSS</strong></p>
<p>第10页中部，CSS声明中的属性和值原文“分号（:）隔开”，应该是“冒号（:）隔开”。</p>
<p><strong>第4章 通过CSS影响页面布局</strong></p>
<p>第100页，图4-2。原图多处错误，更正后的图如下所示：</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/box-model.gif" alt="box-model.gif" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/06/07/css-web-site-design-errata-232.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>《Ajax构建工具箱指南》随书光盘使用说明</title>
		<link>http://www.cn-cuckoo.com/2008/06/05/the-usage-guide-of-linux-live-cd-220.html</link>
		<comments>http://www.cn-cuckoo.com/2008/06/05/the-usage-guide-of-linux-live-cd-220.html#comments</comments>
		<pubDate>Thu, 05 Jun 2008 01:28:50 +0000</pubDate>
		<dc:creator>为之漫笔</dc:creator>
				<category><![CDATA[原创]]></category>
		<category><![CDATA[译作支持]]></category>

		<guid isPermaLink="false">http://www.cn-cuckoo.com/2008/06/05/the-usage-guide-of-linux-live-cd-220.html</guid>
		<description><![CDATA[ 6月2日，收到一封读者来信，反映不能从Linux Live CD启动。根据这位读者的描述，我发现他在光盘启动画面选的是第二项，但是，应该选第一项才对。不过，这一点书中描述的确不够准确。为此，我借邻居家的相机和电脑屏幕拍摄了一组照片，并略加说明，供读者参考。同时，也对因译文中说明不准确给读者带来的不便致歉，我在今后翻译中一定注意。另外，除了这里说明的使用光盘直接启动之外，在Windows系统中安装XAMPP并使用光盘文件的方式，不知读者是否清楚。我又看了一遍原书，感觉还算清楚，因而没有做这种使用方法的说明。
1、打开电脑，进入BIOS，设置第一启动设备为CDROM，第二启动设备为Hard Disk（这个也很重要）。

2、把随书光盘放入光驱，重新启动电脑。在此选择第一项（红对勾处所示）

3、短暂系统检测之后，就是如下加载进度界面

4、稍等片刻（10～50秒之间），即安装完成进入系统


5、双击左上角的“1 Start XAMPP”图标 （红对勾处所示），以启动Web服务器

6、 待上图中间窗口消失后（Web服务器启动完毕），双击“2 Start Projects”图标

7、结果，将打开本书应用程序的主页。下图所示为打开Chapter2 Booker的情景（这是两幅照片合成的结果，读者应该只看到一个浏览器窗口）

8、要查看或编辑源文件，单击屏幕上方中部第一个蓝色图标，启动Blue fish编辑器

读者来信原文如下：
您好，我是您的读者．《Ajax构建工具箱指南》的书中提供了一张配套光盘，但是书中附录内写的光盘使用方法不够详细．我按照您说的方法，把光盘放到光驱然后重新启动电脑，以光盘启动的方式来启动这张Linux Live CD　．然后选者直接进入系统也就是光盘启动画面的第二项，但是等待很长的时间都不能够登陆进光盘系统当中，不知道具体是如何造成的这个现象．希望您能够提供一个可行的解决办法，比如，制作一个带有声音讲解的视频光盘运行录象，也好方便使用．我本人尝试了很多次，也换了几台电脑都没有成功，对这本书的内部程序我很感兴趣，但是这张很有学习价值的光盘我也很喜欢，所以希望您能够提供一个可以直接通过光驱就能运行这张光盘的有效方法．．．尽可能的详细点．我本人也在学习Linux当中，这本书提供的系统听说也很帮．所以想在这个环境下来学习．．．希望能够得到您的帮助．谢谢!
这个是我的邮箱，请您看过后给我回复．
Mon, 2 Jun 2008 12:58:58 +0800 (CST)
当时，我随即给读者回信，全文如下：
尊敬的读者，您好！
对本书光盘使用说明不够详细给您带来的不便深表歉意。为方便您和读者研究学习，我会在本周内按您的建议重新制作一份可操作的使用说明，并放到网站上供读者下载参考。届时，我再联系您。
再次感谢您购买《Ajax构建工具箱指南》，如您在阅读过程中发现错误或翻译不当，或容易导致您迷惑不解之处，都可以随时与我联系，我会尽力协助您解决。
祝好！
Mon, 2 Jun 2008 13:43:23 +0800 (CST)
]]></description>
			<content:encoded><![CDATA[<p> 6月2日，收到一封读者来信，反映不能从Linux Live CD启动。根据这位读者的描述，我发现他在光盘启动画面选的是第二项，但是，应该选第一项才对。不过，这一点书中描述的确不够准确。为此，我借邻居家的相机和电脑屏幕拍摄了一组照片，并略加说明，供读者参考。同时，也对因译文中说明不准确给读者带来的不便致歉，我在今后翻译中一定注意。另外，除了这里说明的使用光盘直接启动之外，在Windows系统中安装XAMPP并使用光盘文件的方式，不知读者是否清楚。我又看了一遍原书，感觉还算清楚，因而没有做这种使用方法的说明。</p>
<p>1、打开电脑，进入BIOS，设置第一启动设备为CDROM，第二启动设备为Hard Disk（这个也很重要）。</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2675.gif" title="100_2675.gif" alt="100_2675.gif" align="middle" /><span id="more-220"></span></p>
<p>2、把随书光盘放入光驱，重新启动电脑。在此选择第一项（红对勾处所示）</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2677.gif" alt="100_2677.gif" /></p>
<p>3、短暂系统检测之后，就是如下加载进度界面</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2679.gif" title="100_2679.gif" alt="100_2679.gif" align="middle" /></p>
<p>4、稍等片刻（10～50秒之间），即安装完成进入系统</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2683.gif" alt="100_2683.gif" /></p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2686.gif" alt="100_2686.gif" /></p>
<p>5、双击左上角的“1 Start XAMPP”图标 （红对勾处所示），以启动Web服务器</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2687.gif" alt="100_2687.gif" /></p>
<p>6、 待上图中间窗口消失后（Web服务器启动完毕），双击“2 Start Projects”图标</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2688.gif" alt="100_2688.gif" /></p>
<p>7、结果，将打开本书应用程序的主页。下图所示为打开Chapter2 Booker的情景（这是两幅照片合成的结果，读者应该只看到一个浏览器窗口）</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2689.gif" alt="100_2689.gif" /></p>
<p>8、要查看或编辑源文件，单击屏幕上方中部第一个蓝色图标，启动Blue fish编辑器</p>
<p><img src="http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2008/06/100_2692.gif" alt="100_2692.gif" /></p>
<p><strong>读者来信原文如下：</strong></p>
<p>您好，我是您的读者．《Ajax构建工具箱指南》的书中提供了一张配套光盘，但是书中附录内写的光盘使用方法不够详细．我按照您说的方法，把光盘放到光驱然后重新启动电脑，以光盘启动的方式来启动这张Linux Live CD　．然后选者直接进入系统也就是光盘启动画面的第二项，但是等待很长的时间都不能够登陆进光盘系统当中，不知道具体是如何造成的这个现象．希望您能够提供一个可行的解决办法，比如，制作一个带有声音讲解的视频光盘运行录象，也好方便使用．我本人尝试了很多次，也换了几台电脑都没有成功，对这本书的内部程序我很感兴趣，但是这张很有学习价值的光盘我也很喜欢，所以希望您能够提供一个可以直接通过光驱就能运行这张光盘的有效方法．．．尽可能的详细点．我本人也在学习Linux当中，这本书提供的系统听说也很帮．所以想在这个环境下来学习．．．希望能够得到您的帮助．谢谢!<br />
这个是我的邮箱，请您看过后给我回复．</p>
<p>Mon, 2 Jun 2008 12:58:58 +0800 (CST)</p>
<p><strong>当时，我随即给读者回信，全文如下：</strong></p>
<p>尊敬的读者，您好！<br />
对本书光盘使用说明不够详细给您带来的不便深表歉意。为方便您和读者研究学习，我会在本周内按您的建议重新制作一份可操作的使用说明，并放到网站上供读者下载参考。届时，我再联系您。<br />
再次感谢您购买《Ajax构建工具箱指南》，如您在阅读过程中发现错误或翻译不当，或容易导致您迷惑不解之处，都可以随时与我联系，我会尽力协助您解决。<br />
祝好！</p>
<p>Mon, 2 Jun 2008 13:43:23 +0800 (CST)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cn-cuckoo.com/2008/06/05/the-usage-guide-of-linux-live-cd-220.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
