<?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>刘钢的博客 - 我是UED &#187; JavaScript脚本</title>
	<atom:link href="http://www.iamued.com/qianduan/js/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:51:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[原创]通过shtml实现重构页面模块化构建—实现交付物模块化</title>
		<link>http://www.iamued.com/qianduan/1998.html</link>
		<comments>http://www.iamued.com/qianduan/1998.html#comments</comments>
		<pubDate>Wed, 19 Oct 2011 13:39:43 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[shtml2html]]></category>
		<category><![CDATA[原创]]></category>
		<category><![CDATA[模块化]]></category>
		<category><![CDATA[重构]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1998</guid>
		<description><![CDATA[模块化思想已经不再是创新，陆续的演变成一种思维模式，在处理各种问题时都会考虑模块化思想 前端重构也已经有各种模块化的思想出现，结构模块化、样式模块化等等 今天和同事沟通视觉统一化的时候，发现流程中在产出物方面存在一个问题 如下图所示： 大家按照统一的思维过程在执行时 产出物在页面构建的环节，形成了一个聚合，从以UI组件为单位变为了以page为单位的产出物，而之后到了后端研发时，其实Template还是需要再次分拆，由于这个问题，而产生了更大的沟通成本，降低了整个团队的效率 基于这个问题 我提出了一个解决方法 还算不上解决方案，短暂的解决一下 在页面构建的环境 通过webserver的SSI Include指令 将静态页面也进行模块化，在交付产出物的时候后端研发人员是很清晰的看到module的复用代码，也降低了重构页面时对于统一的ui而产生不同html和css代码的错误率 具体实现如下： 在开发(测试环境)  建立webserver（nginx、apache均可） 然后通过配置文件开启SSI支持 Apache 开启SSI方式 http://www.uplinux.com/download/doc/apache/ApacheManual/howto/ssi.html 要使服务器允许SSI，必须在httpd.conf文件或.htaccess文件中有如下配置： Options +Includes 告诉服务器以允许解析文件中的SSI指令。注意，在多数配置中，多个Options指令会互相覆盖，所以，可能必须对需要SSI的特定目录使用Options，以确保位于最后并起作用。 并不是所有文件中的SSI指令都会被解析，所以，必须告诉Apache应该解析哪些文件。有两种方法，使Apache解析带有特定文件后缀的任何文件，比如.shtml, 配置如下： AddType text/html .shtml AddOutputFilter INCLUDES .shtml 在 Nginx 开启 SSI ，加入以下3行就OK了，可以放在 http, server, 和 location 段都行 ssi on; ssi_silent_errors on; ssi_types text/shtml; SSI Include 指令语法，我们主要用这个语法来调用相关组件文件代码 &#60;!&#8211;#include virtual=”文件路径” &#8211;&#62; 在构建页面时 目录结构可以是 [...]]]></description>
			<content:encoded><![CDATA[<p>模块化思想已经不再是创新，陆续的演变成一种思维模式，在处理各种问题时都会考虑模块化思想</p>
<p>前端重构也已经有各种模块化的思想出现，结构模块化、样式模块化等等</p>
<p>今天和同事沟通视觉统一化的时候，发现流程中在<span style="color: #ff6600;">产出物方面</span>存在一个问题<br />
如下图所示：</p>
<p><a href="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/10/Screen-Shot-2011-10-19-at-下午8.58.36.png" rel="lightbox[1998]"><img class="alignnone size-full wp-image-1999" title="Screen Shot 2011-10-19 at 下午8.58.36" src="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/10/Screen-Shot-2011-10-19-at-下午8.58.36.png" alt="" width="636" height="252" /></a></p>
<p>大家按照统一的思维过程在执行时 产出物在页面构建的环节，形成了一个聚合，从以UI组件为单位变为了以page为单位的产出物，而之后到了后端研发时，其实Template还是需要再次分拆，由于这个问题，而产生了更大的沟通成本，降低了整个团队的效率</p>
<p>基于这个问题 我提出了一个解决方法 还算不上解决方案，短暂的解决一下</p>
<p>在页面构建的环境 通过webserver的SSI Include指令 将静态页面也进行模块化，在交付产出物的时候后端研发人员是很清晰的看到module的复用代码，也降低了重构页面时对于统一的ui而产生不同html和css代码的错误率</p>
<p>具体实现如下：</p>
<p>在开发(测试环境)  建立webserver（nginx、apache均可） 然后通过配置文件开启SSI支持</p>
<h3>Apache 开启SSI方式 <a href="http://www.uplinux.com/download/doc/apache/ApacheManual/howto/ssi.html">http://www.uplinux.com/download/doc/apache/ApacheManual/howto/ssi.html</a></h3>
<blockquote><p>要使服务器允许SSI，必须在<code>httpd.conf</code>文件或<code>.htaccess</code>文件中有如下配置：</p>
<div>
<p><code>Options +Includes</code></p>
</div>
<p>告诉服务器以允许解析文件中的SSI指令。注意，在多数配置中，多个<code><a href="http://www.uplinux.com/download/doc/apache/ApacheManual/mod/core.html#options">Options</a></code>指令会互相覆盖，所以，可能必须对需要SSI的特定目录使用<code>Options</code>，以确保位于最后并起作用。</p>
<p>并不是所有文件中的SSI指令都会被解析，所以，必须告诉Apache应该解析哪些文件。有两种方法，使Apache解析带有特定文件后缀的任何文件，比如<code>.shtml</code>, 配置如下：</p>
</blockquote>
<div>
<blockquote><p><code>AddType text/html .shtml<br />
AddOutputFilter INCLUDES .shtml</code></p>
</blockquote>
</div>
<h3>在 Nginx 开启 SSI ，加入以下3行就OK了，可以放在 http, server, 和 location 段都行</h3>
<div>
<blockquote>
<div>ssi on;<br />
ssi_silent_errors on;<br />
ssi_types text/shtml;</div>
</blockquote>
</div>
<h3>SSI Include 指令语法，我们主要用这个语法来调用相关组件文件代码</h3>
<blockquote><p>&lt;!&#8211;#include virtual=”文件路径” &#8211;&gt;</p>
</blockquote>
<p>在构建页面时 目录结构可以是</p>
<pre>demoproject/ 项目文件夹
|-- aboutus.shtml  综合性页面 包含module调用
|-- index.shtml    综合性页面 包含module调用
|-- other_page.shtml 综合性页面 包含module调用
|-- module  组件文件夹
|   |-- footer.html  组件文件
|   |-- header.html  组件文件
|   `-- other_module.html 组件文件
|-- images 其他静态文件
|-- js 其他静态文件
`-- style 其他静态文件</pre>
<p>这样 我们形成的综合性页面的代码中会包含module调用，在我们每次对通用组建修改时，只需要修改组建文件即可<br />
如下图，因为我们之前在webserver配置了SSI支持，所以我们能够实时预览效果<br />
<a href="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/10/Screen-Shot-2011-10-19-at-下午9.22.28.png" rel="lightbox[1998]"><img class="alignnone size-full wp-image-2001" title="Screen Shot 2011-10-19 at 下午9.22.28" src="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/10/Screen-Shot-2011-10-19-at-下午9.22.28.png" alt="" width="533" height="296" /></a></p>
<p>这样，除了在开发时方便了我们自己，我们的交付物也能够体现模块化思想，方便后端人员处理templates</p>
<p>&nbsp;</p>
<p><span style="color: #ff0000;">同时我也用python写了一个开源项目，方便使用shtml这种方式构建页面的同事 产出传统html交付物</span></p>
<h2>shtml2html项目</h2>
<div>
<p>介绍：替换shtml中include内容为真实调用内容 并在同级目录生成.html文件 给重构团队在构建页面时使用</p>
</div>
<div>项目地址：<a href="https://github.com/iamued/shtml2html">https://github.com/iamued/shtml2html</a></div>
<h3>使用方法：</h3>
<div>必须安装python环境 2.x版本</div>
<blockquote>
<div>Usage: python shtml2html.py path 支持文件和目录（递归处理）</div>
</blockquote>
<p>这是我目前的解决方法，正在试行中，小团队还没那么智能化，希望能给大家提供一些思路</p>
<p>如果你有更好的解决方案也请告诉我，多交流</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1998.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[前端开发利器]F5，实时页面刷新工具小测</title>
		<link>http://www.iamued.com/qianduan/1968.html</link>
		<comments>http://www.iamued.com/qianduan/1968.html#comments</comments>
		<pubDate>Thu, 15 Sep 2011 05:59:26 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[f5]]></category>
		<category><![CDATA[livereload]]></category>
		<category><![CDATA[xrefresh]]></category>
		<category><![CDATA[同步刷新]]></category>
		<category><![CDATA[多屏幕开发]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1968</guid>
		<description><![CDATA[一直在mac平台下工作，一直在用LiveReload（http://livereload.com/），windows下一直在用 xrefresh（http://xrefresh.binaryage.com/）做同步刷新还是很不错的，能够解决基本问题了 解释： 同步刷新：当文件修改时 浏览器自动刷新，如果你在做多屏幕开发的时候会尤其提升开发效率 昨天在微博上看到了f5这款国人开发的软件，今天收到激活码 ，在mac下进行了简单测试，没有什么问题 相比较的话，国人开发的这款软件基于air技术，能够比较好的跨平台，但是需要激活，不知道除了验证以外会不会有其他数据的收集 总体来讲 支持一下 官方网站：http://www.getf5.com// 视频演示： 下面有几个激活码 分享一下 c65af48f80e249d198293cdf1a9ee6a9 55a365fc7d7042e5be52ad6d24b77450]]></description>
			<content:encoded><![CDATA[<p>一直在mac平台下工作，一直在用<a href="http://livereload.com">LiveReload（http://livereload.com/）</a>，windows下一直在用 <a href="http://xrefresh.binaryage.com/">xrefresh（http://xrefresh.binaryage.com/）</a>做同步刷新还是很不错的，能够解决基本问题了</p>
<p>解释：</p>
<p>同步刷新：当文件修改时 浏览器自动刷新，如果你在做多屏幕开发的时候会尤其提升开发效率</p>
<p>昨天在微博上看到了f5这款国人开发的软件，今天收到激活码 ，在mac下进行了简单测试，没有什么问题</p>
<p>相比较的话，国人开发的这款软件基于air技术，能够比较好的跨平台，但是需要激活，不知道除了验证以外会不会有其他数据的收集</p>
<p>总体来讲 支持一下</p>
<p><img class="alignnone" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2011/09/055928WAe.png" alt="" width="276" height="423" /></p>
<p>官方网站：<a href="http://www.getf5.com//?1967">http://www.getf5.com//</a></p>
<p>视频演示：<br />
<object width="520" height="430" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://player.youku.com/player.php/sid/XMzAyNzYzMTcy/v.swf" /><param name="quality" value="high" /><param name="allowscriptaccess" value="sameDomain" /><embed width="520" height="430" type="application/x-shockwave-flash" src="http://player.youku.com/player.php/sid/XMzAyNzYzMTcy/v.swf" quality="high" allowscriptaccess="sameDomain" /></object></p>
<p>下面有几个激活码 分享一下</p>
<ul>
<li>c65af48f80e249d198293cdf1a9ee6a9</li>
<li>55a365fc7d7042e5be52ad6d24b77450</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1968.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>【发布】豆瓣fm 简单扩展 支持各浏览器</title>
		<link>http://www.iamued.com/qianduan/1900.html</link>
		<comments>http://www.iamued.com/qianduan/1900.html#comments</comments>
		<pubDate>Fri, 01 Jul 2011 05:56:42 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[douban.fm]]></category>
		<category><![CDATA[sae]]></category>
		<category><![CDATA[扩展]]></category>
		<category><![CDATA[豆瓣]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1900</guid>
		<description><![CDATA[听豆瓣电台的时候 听到好歌 想看下歌词或者下载 发现很费劲 标题也不能复制 就给自己开发了这个小扩展 可以在豆瓣播放器下面显示 歌词 和 下载的 链接 效果见下图： 项目发布地址：http://dbfmshow.sinaapp.com/ 借此机会也学习了不少东西 Chrome扩展的相关知识 ，利用浏览器标签实现部分功能（云输入法也是这样实现的），同时还学习了一下SAE的部分使用方法]]></description>
			<content:encoded><![CDATA[<p>听豆瓣电台的时候 听到好歌 想看下歌词或者下载 发现很费劲 标题也不能复制 就给自己开发了这个小扩展</p>
<p>可以在豆瓣播放器下面显示 歌词 和 下载的 链接</p>
<p>效果见下图：</p>
<p><a href="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/07/dbdemo.jpg" rel="lightbox[1900]"><img title="dbdemo" src="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/07/dbdemo.jpg" alt="" width="596" height="379" /></a></p>
<p>项目发布地址：<a href="http://dbfmshow.sinaapp.com/" target="_blank">http://dbfmshow.sinaapp.com/</a></p>
<p>借此机会也学习了不少东西</p>
<p>Chrome扩展的相关知识 ，利用浏览器标签实现部分功能（云输入法也是这样实现的），同时还学习了一下SAE的部分使用方法</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1900.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用JqGrid简单实现了一个查询数据效果 基于本地静态数据</title>
		<link>http://www.iamued.com/qianduan/1894.html</link>
		<comments>http://www.iamued.com/qianduan/1894.html#comments</comments>
		<pubDate>Tue, 21 Jun 2011 15:40:40 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[jqgrid]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1894</guid>
		<description><![CDATA[截图： demo见：http://www.iamued.com/demo/Mselect/ 代码：https://github.com/iamued/Mselect 也借此机会尝试用了一下git 貌似还不错哦~]]></description>
			<content:encoded><![CDATA[<p>截图：</p>
<p><a href="http://www.iamued.com/demo/Mselect/" target="_blank"><br />
<img class="alignleft size-full wp-image-1897" title="demo" src="http://iamued-wordpress.stor.sinaapp.com/uploads/2011/06/demo1.jpg" alt="" width="566" height="357" /></a></p>
<p>demo见：<a href="http://www.iamued.com/demo/Mselect/" target="_blank">http://www.iamued.com/demo/Mselect/</a></p>
<p>代码：<a href="https://github.com/iamued/Mselect" target="_blank">https://github.com/iamued/Mselect</a></p>
<p>也借此机会尝试用了一下git 貌似还不错哦~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1894.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[转]jQuery1.5的改进细节</title>
		<link>http://www.iamued.com/qianduan/1868.html</link>
		<comments>http://www.iamued.com/qianduan/1868.html#comments</comments>
		<pubDate>Wed, 19 Jan 2011 12:39:28 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[jq]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1868</guid>
		<description><![CDATA[jQuery 1.5 beta1出来了，从学习跟进上来说，这一次已经比较晚了（我竟然不知道1.5什么时候出的alpha，就这么beta了）。 这个1.5版本最大的更新是AJAX的完全重写，提供了更强的可扩展性。但是受制于精力和篇幅，对新的AJAX的分析还是放到下回，本篇先简单介绍一下细节方面的改进。 jQuery._Deferred和jQuery.Deferred 首先不得不说这两个新生事物，因为他们是作为基础设施存在，不把这两个东西讲明白了，有些问题根本没办法解释。 首先，jQuery.Deferred是jQuery._Deferred的增强版，因此对于这个问题，从jQuery._Deferred入手，就能说明一大半的问题。 什么是Deferred？从字面上看，我的第一反应是“延迟加载”，首字母大写的应该是“类型”的定义，所以这大概是一个“透明提供延迟加载功能”的类型吧。然而实际上，虽然确实带有那么一点点“延迟”的意思，这个东西却不是用来实现延迟加载的。 简单来说，jQuery._Deferred是一个函数队列，他的作用有以下几点： 保存若干个函数。 在特定的时刻把保存着的函数全部执行掉。 执行过后，新进来的函数会立刻执行。 感觉是不是和啥东西很像？对，jQuery的ready函数就是这样的逻辑，实际中jQuery 1.5中的ready函数也确实被嫁接到这上面去了。 jQuery._Deferred提供下面的接口： done：function(fn1, fn2, &#8230;)的形式，用于把函数添加到队列中。 fire：function(context, args)的形式，使用context指定this对象，args指定参数，调用队列中所有函数。fire被调用后，_Deferred会进入 isResolved状态，未来对done的调用不会再保存函数，而是直接调用函数。 resolve：相当于调用fire(this, arguments)，一个简化的方法。 isResolved：用来判断_Deferred是否在isResolved状态，具体参考前面的fire函数的解释。 cancel：取消掉整个队列，这样不管未来是不是fire，队列中的函数都不会再被调用。 说明白了jQuery._Deferred，再来看看jQuery.Deferred。这个东西其实就是2个_Deferred组成的，第一个称为 deferred，用于保管“正常”状态下的函数；第二个称为failDeferred，用于保管“出错”状态下的函数。同时 jQuery.Deferred提供了一些新的接口： then：function(done, fail)的形式，把done添加进deferred，把fail添加进failedDeferred。 fail：相当于failDeferred的done函数。 fireReject：相当于failDeferred的fire函数。 reject：相当于failDeferred的resolve函数。 isRejected：相当于failDeferred的isResolved函数。 同时jQuery.Deferred取消了cancel函数。 那么这个是啥用的呢？有“正常”和“出错”2个状态，同时又是异步的，很容易就能想到……对，给AJAX用的，在下一篇分析中再详细说明。 jQuery.ready的变化 因为有了jQuery._Deferred这个东西，jQuery.ready函数变成依赖于函数队列，具体的变化有： 原来的readyList变量已经不再是一个数组，而变成了jQuery._Deferred对象。 原本在DOMContentLoaded时，调用readList中所有函数的逻辑，现在也使用了jQuery._Deferred中，原来的代码： while ( (fn = ready[ i++ ]) ) { fn.call( document, jQuery ); } 变成了： [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery 1.5 beta1出来了，从学习跟进上来说，这一次已经比较晚了（我竟然不知道1.5什么时候出的alpha，就这么beta了）。</p>
<p>这个1.5版本最大的更新是AJAX的完全重写，提供了更强的可扩展性。但是受制于精力和篇幅，对新的AJAX的分析还是放到下回，本篇先简单介绍一下细节方面的改进。</p>
<h3>jQuery._Deferred和jQuery.Deferred</h3>
<p>首先不得不说这两个新生事物，因为他们是作为基础设施存在，不把这两个东西讲明白了，有些问题根本没办法解释。</p>
<p>首先，jQuery.Deferred是jQuery._Deferred的增强版，因此对于这个问题，从jQuery._Deferred入手，就能说明一大半的问题。</p>
<p>什么是Deferred？从字面上看，我的第一反应是“延迟加载”，首字母大写的应该是“类型”的定义，所以这大概是一个“透明提供延迟加载功能”的类型吧。然而实际上，虽然确实带有那么一点点“延迟”的意思，这个东西却不是用来实现延迟加载的。</p>
<p>简单来说，jQuery._Deferred是一个函数队列，他的作用有以下几点：</p>
<ul>
<li>保存若干个函数。</li>
<li>在特定的时刻把保存着的函数全部执行掉。</li>
<li>执行过后，新进来的函数会立刻执行。</li>
</ul>
<p>感觉是不是和啥东西很像？对，jQuery的ready函数就是这样的逻辑，实际中jQuery 1.5中的ready函数也确实被嫁接到这上面去了。</p>
<p>jQuery._Deferred提供下面的接口：</p>
<ul>
<li>done：function(fn1, fn2, &#8230;)的形式，用于把函数添加到队列中。</li>
<li>fire：function(context,  args)的形式，使用context指定this对象，args指定参数，调用队列中所有函数。fire被调用后，_Deferred会进入 isResolved状态，未来对done的调用不会再保存函数，而是直接调用函数。</li>
<li>resolve：相当于调用fire(this, arguments)，一个简化的方法。</li>
<li>isResolved：用来判断_Deferred是否在isResolved状态，具体参考前面的fire函数的解释。</li>
<li>cancel：取消掉整个队列，这样不管未来是不是fire，队列中的函数都不会再被调用。</li>
</ul>
<p>说明白了jQuery._Deferred，再来看看jQuery.Deferred。这个东西其实就是2个_Deferred组成的，第一个称为 deferred，用于保管“正常”状态下的函数；第二个称为failDeferred，用于保管“出错”状态下的函数。同时 jQuery.Deferred提供了一些新的接口：</p>
<ul>
<li>then：function(done, fail)的形式，把done添加进deferred，把fail添加进failedDeferred。</li>
<li>fail：相当于failDeferred的done函数。</li>
<li>fireReject：相当于failDeferred的fire函数。</li>
<li>reject：相当于failDeferred的resolve函数。</li>
<li>isRejected：相当于failDeferred的isResolved函数。</li>
</ul>
<p>同时jQuery.Deferred取消了cancel函数。</p>
<p>那么这个是啥用的呢？有“正常”和“出错”2个状态，同时又是异步的，很容易就能想到……对，给AJAX用的，在下一篇分析中再详细说明。</p>
<h3>jQuery.ready的变化</h3>
<p>因为有了jQuery._Deferred这个东西，jQuery.ready函数变成依赖于函数队列，具体的变化有：</p>
<p>原来的readyList变量已经不再是一个数组，而变成了jQuery._Deferred对象。</p>
<p>原本在DOMContentLoaded时，调用readList中所有函数的逻辑，现在也使用了jQuery._Deferred中，原来的代码：</p>
<pre><code>while ( (fn = ready[ i++ ]) ) {
    fn.call( document, jQuery );
}</code></pre>
<p>变成了：</p>
<pre><code>readyList.fire( document , [ jQuery ] );</code></pre>
<h3>jQuery.parseXML函数</h3>
<p>新增了静态函数jQuery.parseXML，用于提供浏览器兼容的从字符串转为XML文档的功能。</p>
<p>该函数的逻辑网上有很多，jQuery也没有特别的地方，大致分为以下2种：</p>
<ul>
<li>对于标准浏览器，使用DOMParser对象：
<pre><code>var parser = new DOMParser();
var xml = parser.parseFromString(text, 'text/html');</code></pre>
</li>
<li>对于IE，使用Microsoft.XMLDOM对象：
<pre><code>var parser = new ActiveXObject('Microsoft.XMLDOM');
parser.async = 'false';
parser.loadXML(text);
var xml = parser.documentElement;</code></pre>
</li>
</ul>
<h3>data部分</h3>
<p>添加了jQuery.hasData函数，用于判断一个元素是否有jQuery附加上去的数据。</p>
<p>修改了jQuery.expando的实现，在原来单纯地取当前时间的基础上，添加了一个随机数：</p>
<pre><code>expando = "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" );</code></pre>
<p>这样保证在同一时间，引入多个jQuery副本，这几个副本之间的expando不会相互冲突，导致元素上的data变得错乱。一般来说，是不会引入多个jQuery副本的，但是使用SealJS等的时候，配置不当的话，也是很容易出现此类问题的。</p>
<h3>DOM操作部分</h3>
<p>原本的hasClass、addClass、removeClass函数都需要将元素的class属性分隔为数组，在1.4.4版本中，通过\n或\t进行分隔，在1.5中增加了一个\r，用于对应Windows平台下的换行符（\r\n）。</p>
<p>jQuery.fn.attr函数，1.4.4版本中拒绝从TextNode和CommentNode上获取属性，在1.5版本中添加了一个AttributeNode（noteType == 2）。</p>
<p>在1.4.4版本中，jQuery会在页面unload的时候清理掉由jQuery维护的所有DOM事件，这是为了避免IE的内存泄露问题。但是在1.5中这一段代码<em>不见了</em>，不知是出于什么考虑。</p>
<p>对于IE下使用cloneNode复制节点，会将事件也一起复制过来的问题，1.4.4中是采取复制innerHTML的方式给予解决，而在1.5中则采纳了mootools团队提供的方法，使用cloneFixAttribute函数修正该问题。</p>
<p>cloneFixAttribute函数们于jQuery 1.5 beta1源码文件的5388-5438行，处理IE的BUG的原理很简单，当然前端里一些看似简单的东西，都是很难发现的：</p>
<ol>
<li>IE中有个叫clearAttributes的函数，会清除到节点上的所有属性，顺便把和事件相关的onclick之类的属性也去掉了。在复制出来的节点上调用这个函数，就会把属性清得干干净净。</li>
<li>IE中还有一个叫mergeAttributes的函数，把一个节点的属性复制到另一个节点上，但他不会把和事件相关的属性复制过去。所以再把原始节点调用mergeAttributes，把属性重新放回复制出来的节点上，这就相当于起到了去除事件相关属性的作用。</li>
</ol>
<p>另外cloneFixAttribute函数还处理了非常多IE6-8在cloneNode上的兼容性问题，非常值得详细研究。</p>
<h3>AJAX部分</h3>
<p>AJAX已经完全重写了，只留下一点边边角角保留着1.4.4版本的风采，这里只抽取一部分进行简单的说明。</p>
<p>原来版本中$.get和$.post的实现非常相似，具体来说仅有一个method配置项不同，因此在1.5版本中被合并起来了：</p>
<pre><code>$.each(['get', 'post'], function(i, method) {
    $[method] = function() { ... };
});</code></pre>
<p>ajaxSetup函数现在加了一行<code>return this;</code>，可以链式调用了。</p>
<p>serializeArray函数现在统一将value中的换行符替换成Windows的风格（\r\n）。</p>
<p>AJAX的回调函数中，作为参数的对象不再是原生的XMLHTTPRequest，而是jQuery自己封装的称为jXHR的对象，这个对象提供了XMLHTTPRequest的常用接口。</p>
<p>原本对于“请求成功”的浏览器状态码，除200-299以及304外，还有一个1223，来自于IE的一个BUG，会将204的状态码变成 1223。现在因为有了jXHR对象，相当于中间多了一层，因此从jXHR对象获取statusCode不会出现1223的情况，已经被变回204了。</p>
<p>jQuery.ajax函数的配置项中多了一个statusCode项，其结构为map，用于指定返回特定状态码时的回调函数，大致形式如下：</p>
<pre><code>jQuery.ajax({
    url: 'xxx',
    statusCode: {
        200: function() { 处理请求成功 },
        404: function() { 处理页面未找到 },
        503: function() { 处理Service Unavailable }
    }
});</code></pre>
<p>再添加了这个回调后，jQuery.ajax函数已经有非常多的回调函数，其触发过程如下：</p>
<ol>
<li>根据返回的状态码，触发success或者error回调。</li>
<li>根据状态码，触发对应的statusCode回调。</li>
<li>触发complete回调。</li>
<li>触发全局ajaxComplete回调。</li>
<li>如果此时没有正在执行的AJAX，触发全局ajaxStop回调。</li>
</ol>
<h3>其他细节</h3>
<p>入口函数jQuery.fn.init现在多了一个参数，值始终为rootjQuery，用于加速init函数中对rootjQuery变量的查找速度（减少了一层作用域）：</p>
<pre><code>//jQuery 1.5 beta1 源码23行
jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
}</code></pre>
<p>jQuery对象支持继承了，具体的修改是将几处直接调用jQuery的代码改为了对this.constructor的调用：</p>
<pre><code>202行：return this.constructor( context ).find( selector );
253行：var ret = this.constructor();
334行：return this.prevObject || this.constructor(null);</code></pre>
<p>同时还提供了jQuery.subclass函数用于创建一个继承自jQuery的类型，由于不是很常用jQuery，更是从来没有用到过需要继承jQuery的情况，因此也不方便说这个功能的作用有多大。</p>
<p>转自:http://www.cnblogs.com/GrayZhang/archive/2011/01/18/jquery-1-5-enhanced-detail.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1868.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>一句话解决IE6 鼠标闪烁 or 抖动的问题</title>
		<link>http://www.iamued.com/qianduan/1859.html</link>
		<comments>http://www.iamued.com/qianduan/1859.html#comments</comments>
		<pubDate>Fri, 17 Dec 2010 07:15:49 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[抖动]]></category>
		<category><![CDATA[闪烁]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1859</guid>
		<description><![CDATA[做一个效果遇到的问题 据说是IE6不缓存背景图片导致的 解决方法如下]]></description>
			<content:encoded><![CDATA[<p>做一个效果遇到的问题 据说是IE6不缓存背景图片导致的 解决方法如下</p>
<pre class="brush: jscript; title: ; notranslate">
&lt;!--[if IE 6]&gt;

&lt;script&gt; document.execCommand(&quot;BackgroundImageCache&quot;, false, true); &lt;/script&gt;

&lt;![endif]--&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1859.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>页面上的快捷键Hotkey for JavaScript</title>
		<link>http://www.iamued.com/qianduan/1776.html</link>
		<comments>http://www.iamued.com/qianduan/1776.html#comments</comments>
		<pubDate>Sun, 10 Oct 2010 02:35:11 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[hotkey]]></category>
		<category><![CDATA[js快捷键]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1776</guid>
		<description><![CDATA[昨天去逛豆瓣小站（“前端攻城师”）发现了豆瓣新上了五指擒魔 有兴趣的可以去看下 之前在使用Google Reader的时候就发现了快捷键来进行操作的方式，对用户体验也是一种提升，现在基本看reader都是用快捷键 今天正好有时间就把豆瓣的实现看了一下 豆瓣团队的分享精神是我一直钦佩的 尤其是kejun 多次听他的演讲都深有感触 拿豆瓣的代码做了一个小Demo 地址是 http://www.iamued.com/demo/hotkey/]]></description>
			<content:encoded><![CDATA[<p>昨天去逛豆瓣小站（“前端攻城师”）发现了豆瓣新上了<a href="http://site.douban.com/widget/notes/22456/note/94548879/">五指擒魔</a> 有兴趣的可以去看下</p>
<p>之前在使用Google Reader的时候就发现了快捷键来进行操作的方式，对用户体验也是一种提升，现在基本看reader都是用快捷键</p>
<p>今天正好有时间就把豆瓣的实现看了一下 豆瓣团队的分享精神是我一直钦佩的 尤其是<a href="http://www.hikejun.com/">kejun</a> 多次听他的演讲都深有感触</p>
<p>拿豆瓣的代码做了一个小Demo 地址是</p>
<p><a href="http://www.iamued.com/demo/hotkey/" target="_blank">http://www.iamued.com/demo/hotkey/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1776.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[原创]简单的模板替换机制-jquery实现了局部</title>
		<link>http://www.iamued.com/qianduan/js/1718.html</link>
		<comments>http://www.iamued.com/qianduan/js/1718.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 06:01:24 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[模板]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1718</guid>
		<description><![CDATA[今天帮同事修改一个Tip提示的效果 提示中 需要用到当前元素的几个属性，就帮忙改了改之前的demo 这里是一个局部实现 可以参考 查看临时Demo 实际应用的案例：http://www.iamued.com/demo/simpletip/template/ 查看临时Demo 实际应用的案例：http://www.iamued.com/demo/simpletip/template/]]></description>
			<content:encoded><![CDATA[<p>今天帮同事修改一个Tip提示的效果 提示中 需要用到当前元素的几个属性，就帮忙改了改之前的demo<br />
这里是一个局部实现 可以参考<br />
<a href="http://www.iamued.com/demo/testReg.html" target="_blank">查看临时Demo</a><br />
<a href="http://www.iamued.com/demo/simpletip/template/" target="_blank">实际应用的案例：http://www.iamued.com/demo/simpletip/template/</a></p>
<pre class="brush: jscript; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
	&lt;title&gt;一个jquery的小模板机制-我是UED&lt;/title&gt;
	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;charset=UTF-8&quot; /&gt;
	&lt;script language=&quot;JavaScript&quot; src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a id=&quot;test&quot; price=&quot;110&quot; name=&quot;iphone&quot; onmouseover=&quot;test();&quot; href=&quot;#&quot;&gt;这是一个A元素 有2个属性 鼠标放上来看看&lt;/a&gt;

临时Demo的部分代码：
&lt;script type=&quot;text/javascript&quot;&gt;
	function test(){
		var testString=&quot;价格为{price}元，我是{name}&quot;
		alert(testString.replace(/{([^{}]+)}/g,function(word){
			var _attr=word.replace(/({|})+/g,&quot;&quot;);
			return $(&quot;#test&quot;).attr(_attr);
		}));

	}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><a href="http://www.iamued.com/demo/testReg.html" target="_blank">查看临时Demo</a><br />
<a href="http://www.iamued.com/demo/simpletip/template/" target="_blank">实际应用的案例：http://www.iamued.com/demo/simpletip/template/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/js/1718.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[转]js中匿名函数的N种写法</title>
		<link>http://www.iamued.com/qianduan/js/1715.html</link>
		<comments>http://www.iamued.com/qianduan/js/1715.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 03:44:31 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[匿名函数]]></category>
		<category><![CDATA[闭包]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1715</guid>
		<description><![CDATA[在java中有private属性，强大的功能js不能实现就矮人一截，匿名函数，发扬广大 匿名函数没有实际名字，也没有指针，怎么执行滴？ 其实大家可以看看小括号的意义就应该可以理解。小括号有返回值，也就是小括号内的函数或者表达式的返回值，所以说小括号内的function返回值等于小括号的返回值，不难理解 (function(){})()可以将没有名字的函数执行了把… 关于匿名函数写法，很发散~ Sorry ：） 刚才忘记把转载地址附上了 转自： http://blog.163.com/water_down/blog/static/1702765902010869124093/]]></description>
			<content:encoded><![CDATA[<p>在java中有private属性，强大的功能js不能实现就矮人一截，匿名函数，发扬广大<br />
匿名函数没有实际名字，也没有指针，怎么执行滴？<br />
其实大家可以看看小括号的意义就应该可以理解。小括号有返回值，也就是小括号内的函数或者表达式的返回值，所以说小括号内的function返回值等于小括号的返回值，不难理解 (function(){})()可以将没有名字的函数执行了把…<br />
关于匿名函数写法，很发散~</p>
<pre class="brush: jscript; title: ; notranslate">
//最常见的用法：
(function() {
   alert('water');
})();
//当然也可以带参数：
(function(o) {
    alert(o);
})('water');
//想用匿名函数的链式调用？很简单：
(function(o) {
    alert(o);
    return arguments.callee;
})('water')('down');

//常见的匿名函数都知道了，看看不常见的：
~(function(){
    alert('water');
})();
//写法有点酷~
void function(){
    alert('water');
}();
//据说效率最高~
+function(){
    alert('water');
}();
-function(){
    alert('water');
}();
~function(){
    alert('water');
}();
!function(){
    alert('water');
}();
(function(){
    alert('water');
}());
//有点强制执行的味道~
</pre>
<p>Sorry ：） 刚才忘记把转载地址附上了<br />
转自：<br />
<a href="http://blog.163.com/water_down/blog/static/1702765902010869124093/">http://blog.163.com/water_down/blog/static/1702765902010869124093/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/js/1715.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google HTML5+Rock Music ：《The Wilderness Downtown》</title>
		<link>http://www.iamued.com/qianduan/1701.html</link>
		<comments>http://www.iamued.com/qianduan/1701.html#comments</comments>
		<pubDate>Sun, 05 Sep 2010 11:11:01 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[JavaScript脚本]]></category>
		<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[Arcade Fire]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[rock]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1701</guid>
		<description><![CDATA[The Wilderness Downtown 如果你从没听说过互动电影，那就真的要点击这里开开眼界了。这个页面以灰白色调为主，页面上的动画效果皆由 HTML5 技术制作，官方推荐最好使用 Chrome 浏览器，经过我们的试用，IE8 与 Opera 均无法启动这个页面，而 Firefox 4.0 Beta 4 和 Safari 都能体验这个互动电影。 谷歌在间接“鄙视”IE8 与 Opera 对 HTML5 的支持度 但这两款浏览器对这个页面的 HTML5 特效处理速度奇慢无比，偶尔还会出现崩溃现象，我们不排除这一个页面为谷歌 Chrome 浏览器特别优化过，因为这种以特效体验页面来暗中贬低对手的把戏已经屡见不鲜了。 登录这个页面后你首先需要输入你小时候的住址，为什么？因为电影情节将会从这里开始，并且融合谷歌地图和谷歌街景的技术到电影中，达到非常震撼的互动效果，其他诸如 Canvas，Video，Audio 等的 HTML5 标准特效就更加不用多介绍了。 输入小时候的住址 经过好一会儿的载入等待之后，由著名作家兼导演 Chris Milk 亲自操刀的互动电影就开始了，开始的时候，一名模样十分鬼祟的白衣男子在狂奔，奔到有气无力的时候，电影会先暂停，让你用交互绘图工具绘画一张明信片，寄给小时候的你。 一双无影脚 谷歌街景视图中的是不是你儿时的家？ 你可以用鼠标乱涂乱画，也可以直接输入你想说的话，不过这张明信片，无论你的画工有多精细，画出来的都只能是错综复杂的线条，配合著名独立摇滚乐团 Arcade Fire 刚刚推出的新专辑《The Suburbs》中的歌曲 We Used to Wait 作为主题音乐，颇有剪不断理换乱的感觉。 错综复杂的明信片 写完明信片后将会是一段狂奔的视频 纸上谈兵完毕，最后送上这个HTML5 互动电影《The Wilderness [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g1.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113053GmZ.jpg" alt="The Wilderness Downtown" /></a><br />
The Wilderness Downtown</p>
<p>如果你从没听说过互动电影，那就真的要<a href="http://www.thewildernessdowntown.com/" target="_blank"><strong>点击这里</strong></a>开开眼界了。这个页面以灰白色调为主，页面上的动画效果皆由 HTML5 技术制作，官方推荐最好使用 Chrome 浏览器，经过我们的试用，IE8 与 Opera 均无法启动这个页面，而 Firefox 4.0 Beta 4 和 Safari 都能体验这个互动电影。</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g5.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113054XN5.jpg" alt="The Wilderness Downtown" /></a><br />
谷歌在间接“鄙视”IE8 与 Opera 对 HTML5 的支持度</p>
<p>但这两款浏览器对这个页面的 HTML5 特效处理速度奇慢无比，偶尔还会出现崩溃现象，我们不排除这一个页面为谷歌 Chrome 浏览器特别优化过，因为这种以特效体验页面来暗中贬低对手的把戏已经屡见不鲜了。</p>
<p>登录这个页面后你首先需要输入你小时候的住址，为什么？因为电影情节将会从这里开始，并且融合谷歌地图和谷歌街景的技术到电影中，达到非常震撼的互动效果，其他诸如 Canvas，Video，Audio 等的 HTML5 标准特效就更加不用多介绍了。</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g6.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113054m5P.jpg" alt="The Wilderness Downtown" /></a><br />
输入小时候的住址</p>
<p>经过好一会儿的载入等待之后，由著名作家兼导演 Chris Milk 亲自操刀的互动电影就开始了，开始的时候，一名模样十分鬼祟的白衣男子在狂奔，奔到有气无力的时候，电影会先暂停，让你用交互绘图工具绘画一张明信片，寄给小时候的你。</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g2.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113054MSg.jpg" alt="The Wilderness Downtown" /></a><br />
一双无影脚</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g10.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/1130541m8.jpg" alt="The Wilderness Downtown" /></a><br />
谷歌街景视图中的是不是你儿时的家？</p>
<p>你可以用鼠标乱涂乱画，也可以直接输入你想说的话，不过这张明信片，无论你的画工有多精细，画出来的都只能是错综复杂的线条，配合著名独立摇滚乐团 Arcade Fire 刚刚推出的新专辑《<a href="http://mp3.baidu.com/albumlist/arcade%20fire;;;;;;the%20suburbs.html" target="_blank">The Suburbs</a>》中的歌曲 <a href="http://musica10.sonicomusica.org/a/Arcade%20Fire/We%20Used%20To%20Wait.mp3" target="_blank">We Used to Wait </a>作为主题音乐，颇有剪不断理换乱的感觉。</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g12.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/1130554F7.jpg" alt="The Wilderness Downtown" /></a><br />
错综复杂的明信片</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_g4.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="The Wilderness Downtown" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113055PXg.jpg" alt="The Wilderness Downtown" /></a><br />
写完明信片后将会是一段狂奔的视频</p>
<p>纸上谈兵完毕，最后送上这个HTML5 互动电影《The Wilderness Downtown》的视频。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMjAyNTQ0NjA0/v.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XMjAyNTQ0NjA0/v.swf" quality="high" align="middle"></embed></object><br />
The Wilderness Downtown</p>
<p><strong> 关于 Arcade Fire （拱廊之火）</strong></p>
<p>Arcade Fire（拱廊之火）是一支独立摇滚乐队，来自于加拿大的蒙特利尔。乐队的主创成员是Win Butler和Régine Chassagne，他们是一对夫妻。乐队演奏的主要乐器有吉他、贝司和鼓，除此之外还有钢琴、小提琴、中提琴、大提琴、低音提琴、木琴、钟琴、键盘、圆号、手风琴、竖琴、曼陀林和手摇风琴。乐队在巡演中会带上几乎所有的乐器，然后由多面手的乐队成员们在整场演出中交替演奏。</p>
<p><a href="http://www.pconline.com.cn/images/html/viewpic_pconline.htm?http://img2.pconline.com.cn/pconline/1008/31/2208140_800px-Rock_en_Seine_2007,_The_Arcade_Fire.jpg&amp;namecode=pcedu&amp;subnamecode=pcedu_index" target="_blank"><img title="Arcade Fire" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2010/09/113055jIP.jpg" alt="Arcade Fire" /></a><br />
Arcade Fire（拱廊之火）</p>
<p>拱廊之火乐队赢得了诸多奖项，包括2008年流星音乐奖的最佳国际专辑奖和2008年朱诺音乐奖的年度另类专辑奖。乐队在2005年和2008年因专辑《<a href="http://mp3.baidu.com/albumlist/arcade%20fire;;;;;;funeral.html" target="_blank">Funeral</a>》（葬礼）和《<a href="http://mp3.baidu.com/albumlist/arcade%20fire;;;;;;neon%20bible.html" target="_blank">Neon Bible</a>》（霓虹圣经）同获格莱美音乐奖的最佳另类音乐专辑奖提名。而他们于2010年发行的新专辑《<a href="http://mp3.baidu.com/albumlist/arcade%20fire;;;;;;the%20suburbs.html" target="_blank">The Suburbs</a>》（郊区），更是得到了评论界的称赞。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1701.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
<enclosure url="http://musica10.sonicomusica.org/a/Arcade%20Fire/We%20Used%20To%20Wait.mp3" length="1167854" type="audio/mpeg" />
		</item>
	</channel>
</rss>

