﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-我是FE，也是Fe-随笔分类-Web开发</title><link>http://www.blogjava.net/Hafeyang/category/38429.html</link><description>前端来源于不断的点滴积累。我一直在努力。</description><language>zh-cn</language><lastBuildDate>Thu, 31 Oct 2013 23:30:16 GMT</lastBuildDate><pubDate>Thu, 31 Oct 2013 23:30:16 GMT</pubDate><ttl>60</ttl><item><title>sublime text 2 (四) Emmet(之前叫Zencoding)的安装以及新特征</title><link>http://www.blogjava.net/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Sat, 19 Jan 2013 13:06:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/394449.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/394449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/394449.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍emmet(之间叫zencoding)插件在sublime text 2 中的使用以及emmet的一些新特性&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/394449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2013-01-19 21:06 <a href="http://www.blogjava.net/Hafeyang/archive/2013/01/19/emmet_fomer_zencoding_in_sublime_text_2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>smartcomb:用php实现的web模块拼合器</title><link>http://www.blogjava.net/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Sat, 05 Jan 2013 06:47:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/393817.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/393817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/393817.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近新作：smartcomb-用php实现的web模块拼合器&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/393817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2013-01-05 14:47 <a href="http://www.blogjava.net/Hafeyang/archive/2013/01/05/powerful_web_module_combination_tool_smartcomb.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>knockoutjs中使用10绑定checkbox</title><link>http://www.blogjava.net/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Wed, 12 Dec 2012 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/392886.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/392886.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/392886.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍knockoutjs中使用自定义绑定将10值绑定到checkbox上&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/392886.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-12-12 17:14 <a href="http://www.blogjava.net/Hafeyang/archive/2012/12/12/using_knockoutjs_custom_binding_to_bind_10_to_checkbox.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于raphaeljs的web图实现-rgraph2</title><link>http://www.blogjava.net/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 11 Dec 2012 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/392832.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/392832.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/392832.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍一个基于raphaeljs的web点-线图的实现封装-rgraph2&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/392832.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-12-11 20:08 <a href="http://www.blogjava.net/Hafeyang/archive/2012/12/11/rgraph2_an_graph_implementation_by_raphaeljs.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>强大的管理web包管理工具-bower</title><link>http://www.blogjava.net/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 11 Dec 2012 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/392831.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/392831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/392831.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍一个强大的web包管理工具，基于nodejs的bower&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/392831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-12-11 20:01 <a href="http://www.blogjava.net/Hafeyang/archive/2012/12/11/an_introduction_of_powerfull_web_package_mange_tool_named_bower.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>underscore中的function类函数解析</title><link>http://www.blogjava.net/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 08 Nov 2012 05:14:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/390932.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/390932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/390932.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: undescore中函数相关函数解析&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/390932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-11-08 13:14 <a href="http://www.blogjava.net/Hafeyang/archive/2012/11/08/undercore_function_uitlity.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sublime text 2 (三) 在sublime text 2 中写coffeescript</title><link>http://www.blogjava.net/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 25 Oct 2012 15:56:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/390243.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/390243.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/390243.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍在Windows下使用Sublime Text 2 的CoffeeScript 插件写CoffeeScript代码。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/390243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-10-25 23:56 <a href="http://www.blogjava.net/Hafeyang/archive/2012/10/25/using_sublime_text_2_coffeescript_plugin_in_windows.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>兼容AMD,nodejs/commonjs规范的模块定义-读knockoutjs源码</title><link>http://www.blogjava.net/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Sat, 18 Aug 2012 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/385734.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/385734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/385734.html</trackback:ping><description><![CDATA[<div>从knockoutjs源码中读到了一个很好的能兼容AMD,commonjs规范的模块定义。看代码
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">/</span><span style="color: #000000">闭包执行一个立即定义的匿名函数<br /></span><span style="color: #000000">!</span><span style="color: #0000ff">function</span><span style="color: #000000">(factory)&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">factory是一个函数，下面的koExports就是他的参数</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Support&nbsp;three&nbsp;module&nbsp;loading&nbsp;scenarios</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;require&nbsp;</span><span style="color: #000000">===</span><span style="color: #000000">&nbsp;'</span><span style="color: #0000ff">function</span><span style="color: #000000">'&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;exports&nbsp;</span><span style="color: #000000">===</span><span style="color: #000000">&nbsp;'object'&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;module&nbsp;</span><span style="color: #000000">===</span><span style="color: #000000">&nbsp;'object')&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;[1]&nbsp;CommonJS/Node.js</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;[1]&nbsp;支持在module.exports.abc,或者直接exports.abc</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;target&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;module['exports']&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;exports;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;module.exports&nbsp;is&nbsp;for&nbsp;Node.js</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory(target);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;define&nbsp;</span><span style="color: #000000">===</span><span style="color: #000000">&nbsp;'</span><span style="color: #0000ff">function</span><span style="color: #000000">'&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;define['amd'])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;[2]&nbsp;AMD&nbsp;anonymous&nbsp;module</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;[2]&nbsp;AMD&nbsp;规范&nbsp;</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">define(['exports'],function(exports){</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;exports.abc&nbsp;=&nbsp;function(){<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />}</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">});</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;define(['exports'],&nbsp;factory);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;[3]&nbsp;No&nbsp;module&nbsp;loader&nbsp;(plain&nbsp;&lt;script&gt;&nbsp;tag)&nbsp;-&nbsp;put&nbsp;directly&nbsp;in&nbsp;global&nbsp;namespace</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory(window['ko']&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;{});<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}(</span><span style="color: #0000ff">function</span><span style="color: #000000">(koExports){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">ko的全局定义&nbsp;koExports是undefined&nbsp;对应着上面的[3]&nbsp;这种情况</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;ko&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">typeof</span><span style="color: #000000">&nbsp;koExports&nbsp;</span><span style="color: #000000">!==</span><span style="color: #000000">&nbsp;'undefined'&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;koExports&nbsp;:&nbsp;{};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个ko的方法</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ko.abc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(s){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(s);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />});<br /><br /></span><span style="color: #008000">//</span><span style="color: #008000">[3]中情况的调用</span><span style="color: #008000"><br /></span><span style="color: #000000">ko.abc(</span><span style="color: #000000">"</span><span style="color: #000000">msg</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div><br />非常巧妙的闭包实现了。三种方式的兼容。摘出来mark一下。<br /><br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/Hafeyang/aggbug/385734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-08-18 16:51 <a href="http://www.blogjava.net/Hafeyang/archive/2012/08/18/compatibility_with_AMD_and_commonjs_module_definition_exaction_of_knockoutjs_sourcecode.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sublime text 2学习(二):创建可复用的代码片段</title><link>http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Fri, 17 Aug 2012 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/385686.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/385686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/385686.html</trackback:ping><description><![CDATA[<div>对于前端工程师来讲，写一个html页面的基本结构是体力活，每次去拷贝一个也麻烦，sublime text 2 提供了一个很好的复用代码片段。下面介绍一下创建一个html5的代码片段的过程。<br /><br />在菜单上点击Tools -&gt; New Snippet，会新建一个xml文件页签： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">snippet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;![CDATA[</span><span style="color: #808080"><br />Hello,&nbsp;${1:this}&nbsp;is&nbsp;a&nbsp;${2:snippet}.<br /></span><span style="color: #0000ff">]]&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Optional:&nbsp;Set&nbsp;a&nbsp;tabTrigger&nbsp;to&nbsp;define&nbsp;how&nbsp;to&nbsp;trigger&nbsp;the&nbsp;snippet&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;&lt;tabTrigger&gt;hello&lt;/tabTrigger&gt;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Optional:&nbsp;Set&nbsp;a&nbsp;scope&nbsp;to&nbsp;limit&nbsp;where&nbsp;the&nbsp;snippet&nbsp;will&nbsp;trigger&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;&lt;scope&gt;source.python&lt;/scope&gt;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">snippet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span></div><br />注释已经说的比较详细了。<br /><br />content 里面就是代码模版：${序号：默认值} ，序号相同的地方光标会同时停在那可以多处同时编辑。序号大小就是tabindex。在实际使用代码的时候，可以使用tab切换光标位置。<br /><br />tabTrigger是指输入该字符串后tab就是在光标插入content中的内容。<br /><br />scope是指在何种文件类型中使用。<br /><br />下面是html5代码片段的定义：<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">&lt;</span><span style="color: #800000">snippet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;![CDATA[</span><span style="color: #808080"><br />&lt;!doctype&nbsp;html&gt;&nbsp;<br />&lt;html&gt;&nbsp;<br />&lt;head&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;charset="utf-8"&gt;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;${1}&lt;/title&gt;&nbsp;<br />&lt;/head&gt;<br />&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;${1}&lt;/h1&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;Hello,&nbsp;${2:this}&nbsp;is&nbsp;a&nbsp;${3:snippet}.<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></span><span style="color: #0000ff">]]&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">content</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Optional:&nbsp;Set&nbsp;a&nbsp;tabTrigger&nbsp;to&nbsp;define&nbsp;how&nbsp;to&nbsp;trigger&nbsp;the&nbsp;snippet&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tabTrigger</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">html5</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tabTrigger</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Optional:&nbsp;Set&nbsp;a&nbsp;scope&nbsp;to&nbsp;limit&nbsp;where&nbsp;the&nbsp;snippet&nbsp;will&nbsp;trigger&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;&lt;scope&gt;source.python&lt;/scope&gt;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">snippet</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span></div><br />编辑完之后保存为 C:\Users\[用户]\AppData\Roaming\Sublime Text 2\Packages\User\html5.sublime-snippet&nbsp; (Win7下) 默认的保存路径就行。后缀必须是.sublime-snippet。<br /><br />保存完重启Sublime text 2，新建文件：输入html5,tab会出现如下效果：<br /><br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/hafeyang/sublime_text2_snippet-1.jpg" /><br /><br />${1}出现了两次，所以光标同时编辑图中两处。<br />${2:this}，所以在2处出现this默认值。${1}处编辑完按tab就到${2}处。<br /><br />OK, That's all。<br /><br /><br /><br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/Hafeyang/aggbug/385686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-08-17 13:30 <a href="http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_text_2.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sublime text 2 学习(一)：快捷键，小技巧for前端工程师（持续更新）</title><link>http://www.blogjava.net/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 09 Aug 2012 05:22:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/384754.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/384754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/384754.html</trackback:ping><description><![CDATA[初用sublime text 2，还不错，不装任何插件，能很好的编辑javascript,css,html，很赞。整理一下快捷键：常用的比如Ctrl+S就不列了：而且只列举Windows的。<br /><br />Ctrl+W 关闭当前页签，很通用。<br />Ctrl+Shift+W关闭所有页签，估计能猜到。<br /><br />Ctrl+Shift+v 粘贴并且格式化，比较实用。<br /><br />Ctrl+[ 减少缩进<br />Ctrl+] 增加缩进<br /><br />Ctrl+k,Ctrl+u 先按Ctrl+K,再按Ctrl+U，大写，这有点不习惯<br />Ctrl+k,Ctrl+l 小写<br /><br />ctrl+left,ctrl+right 先左/右移动一个单词，VI中的W,B<br /><br />Ctrl+Shift+up ,当前上上移一行，跟Eclipse一样<br />Ctrl+Shift+down，不说了<br /><br />Ctrl+Shift+K 删除当前选中行，后来发现Ctrl+X也可以，Eclipse里面的Ctrl+D。<br />Ctrl+Shift+D 复制当前选中行，程序员的挚爱<br />Ctrl+D 是高亮光标所在词，类似VIM中的#<br /><br />Ctrl+M 到匹配的{[( 与vim 中的%一致<br />Ctrl+Shift+M 可以选中{[(内容，类似vim中的va( vi{<br /><br />Ctrl+J join rows 合并选中行<br />Ctrl+Shift+J 打散行<br /><br />Ctrl+Shift+T 旋转功能这个标签内容 vim中的vat<br />Ctrl+shift+a 选中匹配的标签<br /><br />Ctrl+T 可以选中多行，然后讲这些行顺序反转。如果没有选中多行，会讲光标前后的字母换顺序。<br /><br />双击选中一个单词,Ctrl+F3跳至下一个匹配处，F3上一个匹配处。<br /><br />F11，我最喜欢的全屏快捷键。<br />Shift+F11更狠，只编辑当前的文件。免打扰模式。两耳清静。<br /><br />alt+. 如果输入&lt;div&gt; 然后alt+. 可以自动完成这个tag，变成&lt;div&gt;&lt;/div&gt;<br /><br />Ctrl+/ Ctrl+Shift+/ 注释/取消注释，各种语言都行。<br /><br />一个小技巧：选中一个单词如abc ，然后输入" 这样 会变成"abc",同理还可以用( { [ '<br /><br />Ctrl+shift+P 调出一个功能列表，可以探索一些好玩的功能，比如我找到了这个功能：HTML:Encoding Special Characters。选中 &amp; 运行一下可以变成 &amp;amp;<br /><br />Ctrl+P 会调出一个对话框框，下拉选项中有当前打开的文件，可以切换，文本框非常强大，输入@funcName 可以直接到函数定义处，输入#key 可以直接查找，输入:行数可以直接到某行，也可以用快捷键Ctrl+g<br /><br />安装了ZenCoding之后可以使用的快捷键： <a href="http://www.cnblogs.com/cocowool/archive/2012/07/01/2572011.html" target="_blank">安装教程</a><br /><br />Ctrl+alt+Enter,zencoding开始了<br />alt+shift+W 环绕选中内容<br /><br /><br />官方文档中有快捷键列表：<a href="http://docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_win.html">http://docs.sublimetext.info/en/latest/reference/keyboard_shortcuts_win.html</a><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/Hafeyang/aggbug/384754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-08-09 13:22 <a href="http://www.blogjava.net/Hafeyang/archive/2012/08/09/sublime_text_2_short_key_and_trick_for_frontend_engineer.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈谈前端组件库</title><link>http://www.blogjava.net/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 31 Jul 2012 17:19:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/384477.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/384477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/384477.html</trackback:ping><description><![CDATA[读过，了解过很多的前端控件库/组件库，尝试过，体验过多个失败的，不算失败的组件库之后，总结下来，觉得要构建一个完整的组件库，需要考虑以下几个方面的问题：<br />
<br />
1.基础库：<br />
<br />
注意是库，不是框架，基础库通常提供底层方法，它必须能够屏蔽浏览器/终端的API差异。也许大家脑子里面会弹出一堆前端热门的一些库。在此不讨论哪个库哪个库怎么样，一个基础库必须提供的功能：<br />
<ul>
     <li>基本类型的常见扩展：原生的javascript对象API往往在现实中不够用，比如常见的Array.indexOf/remove/each，Date.parse/format，不管是怎么封装都需要这类方法</li>
     <li>DOM操作常见方法：DOM节点增删改查，CSS selector，DOMReady，contains，add/remove/toggleClass，屏蔽浏览器之间的操作差异。不多说，人人都熟。</li>
     <li>一套浏览器检测机制：以前大家都倾向于做浏览器类型和版本的检测，现在倾向于做浏览器的特性检测，这样更有实际用处。</li>
     <li>Ajax的封装，对于组件库来讲可无。毕竟组件库本身的实现不太会用得上Ajax。</li>
</ul>
<br />
2.事件机制：<br />
<br />
addEventListener/removeEventListener/dispatchEvent 是常见的封装方式，不应该只是DOM事件，而是任何对象都可以做一个事件机制。<br />
对于DOM事件的封装需要屏蔽IE/标准Event的差异提供为用户使用，事件代理非常重要，不可小视。<br />
<ul>
     <li>事件机制都无一例外的是基于第三方观察者或者叫做沙箱(Sandbox)实现。</li>
     <li>事件机制更深的功能是提供一个模块的通信机制。</li>
     <li>对于组件库，组件实例之间的通信更加重要，组件实例之间最好不要存在相互引用的关系，互相不能感知对方的存在，有了事件机制，可以通过第三方有效的通知组件实例，减少组件实例间的耦合。 </li>
</ul>
<br />
3.模板机制：<br />
<br />
实际上写组件的时候，拼装html是一件很复杂的事情，模块能够从数据模型，对于组件库来讲通常是配置信息选项。将这些选项拼装成html字符串。但是大家普遍的一个误区是在追求语法的简便的和性能。我倒觉得模板要做的事情远不止如此。功能强大的模板不仅仅只完成字符串的拼接，而是要简化整个DOM操作，从数据模型到DOM的双向绑定，Model更新了DOM也随之更新。甚至要解决动态DOM事件绑定的问题。<br />
<br />
<br />
4.面向对象的机制<br />
<br />
放在组件库这个角度去谈面向对象的时候，他是一个架构设计中的一个重要的一环。<br />
面向对象的机制能有效的提升代码的可复用性和扩展性，javascript灵活的语法诸如prototype/closure的方式，能构建出一个强大的类库。<br />
可以使用继承机制扩展已有的组件。也可以用引用的方式装饰(Facade)现有组件，个人更倾向于使用装饰。因为继承总会不可避免的直接或者间接去访问父类的一些私有属性方法。<br />
这个机制其实决定了一个组件的代码模型，通常需要解决的问题有：<br />
<ul>
     <li>该组件继承自哪些组件或者基础类，或者依赖于那些类？</li>
     <li>组件实例的管理方式，因为每个组件实例都需要在一个容器中统一存放，理想的的存放模型应该是树形的，在内存中存在类似DOM树一样的组件对象树，是否可以通过类名找到相关实例，根据ID获取实例，获取子实例，父实例，父/子实例之间的通信父实例的resize是否能通知容器内的实例resize。</li>
     <li>插件机制：作为一个非常重要的扩展机制，插件能有效的解决组件间的复用部分，通常这部分会叫做行为(behavior)，对于组件不能提供的甚至是个性化的功能，有没有提供有效的，足够多的扩展点。</li>
     <li>提供怎样的实例化方式？ new XXX() ?? 还是类似DOM的操作方式appendInstance??甚至有类似jq这种链式。我更觉得应该使用appendInstance的方式，这样能更加有效的体现组件示例间的父/子关系。就像DOM操作一样，最终组件实例也是树形结构，如果我们直接new XXX() 这种方式，其实相当于声明了一个游离态的 DOM节点。实际我写代码的时候发现要管理这些组件实例也是比较麻烦的地方，试想一个页面如果有多个组件实例，需要声明多少个实例变量，或者申明多少个对象去存放这些实例。</li>
     <li>组件提供的API，一个组件对外暴露的API会包括初始构造方法，公共方法(method)，事件(event)，对于event，提供怎样的eventData也非常重要。 </li>
</ul>
<br />
5.模块化机制<br />
<br />
如今模块化的思想已经深入人心，模块化带来了很好的团队多人完成一项大的任务的可能性，符合高内聚低耦合的思想。到了如今这个时代，万物皆模块。<br />
组件库通常是一个庞大的工程，单靠个人英雄主义很难做的完整全面。<br />
详细的来讲，模块化机制涉及：<br />
<br />
<ul>
     <li>模块本身的定义，注册，直接影响一个组件的代码模型，一个组件是一个模块。</li>
     <li>模块的依赖申明以及追朔机制：就像前面提到的，依赖于那些类，css文件，资源，数据。不仅仅需要声明，还应该可追朔，依赖的父类，也能找到父类本身所依赖的资源，这样为按需部署打包，在线调试提供居多方便。</li>
     <li>加载机制：因为在开发阶段要么放一个整个组件库代码，要么是通过一个加载器按需加载，到了线上希望只部署引用到了模块组件，这样可以减少实际部署的文件大小。加载机制会涉及到浏览器的javascript/css文件的加载，尤其是需要尽可能的并行下载而且按照依赖关系先后执行。包括应用模块，可以方便的通过这种加载机制延迟，按需，按时的加载到页面中。</li>
     <li>打包部署机制：由于依赖可追朔，这样实际项目中用到的那些组件可以分析出来，最终可以根据实际使用到的情况打包出适合大小的组件库，减小冗余包的存在。</li>
     <li>模块间的通信机制，由于模块减轻耦合甚至是独自孤立存在，组件之间的通信就非常重要，比如通常一个页面上面的菜单组件实例点击需要触发下面组件的更新。如果直接监听菜单事件去更新下面的组件，也许菜单是每个页面都有。但是下面的组件不是每个页面都有，这样的事件监听就显然耦合较重，互相依赖对方的存在。如果菜单点击这是告诉第三方我被点击了。下面的组件只去监听第三方的事件，这样的代码思路明显要好过很多。 </li>
</ul>
需要再次强调的是万物皆模块，这意味着通用组件本身实现是一个模块，实际应用场景中的业务模块也是模块，都需要遵守模块的约定。<br />
<br />
6.前端的基本开发思想<br />
<br />
取决于个人经验：比如MVC的思想在组件实现过程中非常重要，Model通常是构造函数中那一堆配置信息，View通常是需要通过Model提供数据用户呈现，实际上View上的操作的相应都需要Model来记住状态。Controller用于操作二者。原理大家都知道，在开发中怎样分清三者界限。保证思路清晰。<br />
<br />
 前端中javascript/css/html的角色也类似与MVC。下面的一些代码方式就有违MVC的一些思想：<br/>
<ul>
     <li>css Expression:不仅IE only，更重要是CSS中写javascript这个风格不对，难以维护。</li>
     <li>javascript直接修改style.xxx='xx'。能写成css class的最好都写成css class。</li>
     <li>html中直接写onxxx="foo()"，没有人能保证foo方法存在不被修改。</li>
</ul>
<br />
7.其他需要考虑的问题：<br />
<ul>
     <li>测试用例：通用组件库是一个庞大的工程，也许牵一发动全身，不知道哪个API的变动会影响多少调用者，有充足的单侧用例，一定程度上能保证整个组件库的稳定性。</li>
     <li>粒度：粒度是一个很值得思考的问题，其实html的标签可以当做是一个小的组件，只是因为粒度很小，要完成一个复杂的应用，有很多的可复用组件都需要用到大片大片的重复html片段。另外一个极端，我们我们把整个页面都写成一个组件，显然没有复用性，跟没封装一样。所以选择一个合适的组件粒度，一个组件完成特定的功能，有利于搭建出有想象力的应用。</li>
     <li>一致性：需要有很好的代码规范和约定。才能保证API的一致性，用户也会理所当然的想到怎样用API，降低学习成本，一个最常见的例子就事件监听的参数，建议统一为(eventObject,eventData)。</li>
     <li>文档&amp;Demo:这个不用多说，没有文档和demo的东西没有人去看代码怎么使用。</li>
     <li>性能：DOM操作是组件库的性能杀手，高效的DOM操作尤其重要，事件监听也是非常耗时的，建议能采用代理的都用父节点来代理。</li>
     <li>资源释放：组件的资源，引用是否能完全释放？尤其是开发SPA，组件的资源内存释放就非常重要了。 </li>
</ul>
<br />
总结：<br />
零零星星的提到了这么几点，也是过去工作中的体会，当然会有不足，望大家补充，回头可以check一下现在用到的一些框架/组件。欢迎讨论。
<img src ="http://www.blogjava.net/Hafeyang/aggbug/384477.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2012-08-01 01:19 <a href="http://www.blogjava.net/Hafeyang/archive/2012/08/01/how_to_build_frontend_component_lib.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何判断link标签css文件加载完毕</title><link>http://www.blogjava.net/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Sat, 08 Oct 2011 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/360183.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/360183.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/360183.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何判断link标签css文件加载完毕&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/360183.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-10-08 11:44 <a href="http://www.blogjava.net/Hafeyang/archive/2011/10/08/how_to_assert_dynamic_css_file_loaded.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用css3画"静音"icon</title><link>http://www.blogjava.net/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 13 Sep 2011 16:19:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/358571.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/358571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/358571.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用纯css，不需要图片绘制一枚静音图标。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/358571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-09-14 00:19 <a href="http://www.blogjava.net/Hafeyang/archive/2011/09/14/pure_css_mute_icon.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>去掉页面滚动条的两种方法</title><link>http://www.blogjava.net/Hafeyang/archive/2011/07/13/354232.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Wed, 13 Jul 2011 02:31:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/07/13/354232.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/354232.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/07/13/354232.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/354232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/354232.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍两种方法去除页面滚动条。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/07/13/354232.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/354232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-07-13 10:31 <a href="http://www.blogjava.net/Hafeyang/archive/2011/07/13/354232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mark:webkit表格设置css table-layout:fixed的bug</title><link>http://www.blogjava.net/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 30 Jun 2011 10:39:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/353455.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/353455.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/353455.html</trackback:ping><description><![CDATA[<div>通常使用table-layout:fixed用在表格上来使表格能准确的设置宽度。常见的例子莫过于 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">style&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/css"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #800000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;table</span><span style="background-color: #f5f5f5; color: #000000">{</span><span style="background-color: #f5f5f5; color: #ff0000">table-layout</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">fixed</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">&nbsp;border-collapse</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">collapse</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">border</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">1px&nbsp;solid&nbsp;#000</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">&nbsp;border-width</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">1px&nbsp;0px&nbsp;0px&nbsp;1px</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">width</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">200px</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #000000">}</span><span style="background-color: #f5f5f5; color: #800000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;td</span><span style="background-color: #f5f5f5; color: #000000">{</span><span style="background-color: #f5f5f5; color: #ff0000">text-align</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">left</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">overflow</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">hidden</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">padding</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">0px</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">margin</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">0px</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">white-space</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">nowrap</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">&nbsp;border</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">1px&nbsp;solid&nbsp;#000</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000">&nbsp;0px&nbsp;1px&nbsp;1px&nbsp;0px;</span><span style="background-color: #f5f5f5; color: #000000">}</span><span style="background-color: #f5f5f5; color: #800000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">style</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table&nbsp;&nbsp;</span><span style="color: #ff0000">border</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;cellspacing</span><span style="color: #0000ff">="0"</span><span style="color: #ff0000">&nbsp;cellpadding</span><span style="color: #0000ff">="0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="width:100px;"</span><span style="color: #ff0000">&nbsp;nowrap</span><span style="color: #0000ff">="nowrap"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">中文中文阿飞的房间萨芬；撒</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="width:100px;"</span><span style="color: #ff0000">&nbsp;nowrap</span><span style="color: #0000ff">="nowrap"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">saaaa</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span></div><br />如果去掉table-layout:fixed，表格的宽度会根据内容自动调整，比如上面的例子，如果去掉table-layout:fixed。第一个单元格的宽度会超过100px;<br />但是最近发现，使用table-layout:fixed在webkit内核浏览器上(safari/chrome)。宽度显示会出现问题。<br />看看下面的例子： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">style&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/css"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #800000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#test<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">{</span><span style="background-color: #f5f5f5; color: #ff0000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border-collapse</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">collapse</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">}</span><span style="background-color: #f5f5f5; color: #800000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#test&nbsp;td,&nbsp;#test&nbsp;th<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">{</span><span style="background-color: #f5f5f5; color: #ff0000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">solid&nbsp;1px&nbsp;black</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;padding</span><span style="background-color: #f5f5f5; color: #000000">:</span><span style="background-color: #f5f5f5; color: #0000ff">3px</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #ff0000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">}</span><span style="background-color: #f5f5f5; color: #800000"><br /><br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">style</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="width:736px;table-layout:fixed;margin:0;padding:0"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="test"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">thead</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="25"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">ID</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="270"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Name</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="54"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">xx</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">thead</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tbody</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">111</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #ff0000">&amp;nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tbody</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span></div><br />浏览器上的截图为：<br /><img border="0" alt="" src="http://www.patmortech.com/render.gif" width="600" height="170" /><br /><br />搜了一番资料后。在webkit官网上有这么一个Bug<br /><br /><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 微软雅黑; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><pre>If a table has both "table-layout: fixed" and "width: 0", then cells with
borders have wrong width.
This occurs in both safari 3.x mac&amp;win and linux svn 31841 (debian sid).
The expected behavior is rendered by IE6, IE7, Firefox 2, Firefox 3 beta and
Opera 9.2.

Consider a table with 3 columns, all with width 200px.
If one of the cells have "border-left: 50px; width: 150px;",
then according to the rules of "table-layout: fixed", the cell should still
have width 200px.
But webkit renders the cell with only width 150px.</pre></span><br /><br />就是设置了table-layout:fixed之后,table的td宽度style.width不再是内容的宽度，而是内容+边框。而且是忽视padding。这让人很郁闷。<br />总之一旦设置了table-layout:fixed之后，webkit浏览器的单元格宽度并不会像你想象的那样准确的宽度。<br /><br />参考资料：<br />webkit的bug描述：<br /><a href="https://bugs.webkit.org/show_bug.cgi?id=13339">https://bugs.webkit.org/show_bug.cgi?id=13339</a><br /><a href="https://bugs.webkit.org/show_bug.cgi?id=18565">https://bugs.webkit.org/show_bug.cgi?id=18565</a><br />stackoverflow的提问：<br /><a href="http://stackoverflow.com/questions/2943369/table-layoutfixed-rendering-differences-in-safari">http://stackoverflow.com/questions/2943369/table-layoutfixed-rendering-differences-in-safari</a><br /><br /><a href="http://lists.macosforge.org/pipermail/webkit-unassigned/2008-April/071125.html">http://lists.macosforge.org/pipermail/webkit-unassigned/2008-April/071125.html</a><br /><br /><br /><br /><br /><br /><br /><br /></div><img src ="http://www.blogjava.net/Hafeyang/aggbug/353455.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-06-30 18:39 <a href="http://www.blogjava.net/Hafeyang/archive/2011/06/30/table-layout-fixed-bug-in-webkit.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用div模拟出frameset效果</title><link>http://www.blogjava.net/Hafeyang/archive/2011/06/17/div_as_frameset.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Fri, 17 Jun 2011 04:26:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/06/17/div_as_frameset.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/352501.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/06/17/div_as_frameset.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/352501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/352501.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用div，通过css控制布局定位来实现frameset的效果&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/06/17/div_as_frameset.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/352501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-06-17 12:26 <a href="http://www.blogjava.net/Hafeyang/archive/2011/06/17/div_as_frameset.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>google chrome浏览器页签的css实现</title><link>http://www.blogjava.net/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 19 May 2011 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/350621.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/350621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/350621.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: chrome浏览器页签的css切换&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/350621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-05-19 17:30 <a href="http://www.blogjava.net/Hafeyang/archive/2011/05/19/google_tab_css_implementation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于highcharts的系统监控模拟图表</title><link>http://www.blogjava.net/Hafeyang/archive/2011/05/17/350400.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 17 May 2011 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/05/17/350400.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/350400.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/05/17/350400.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/350400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/350400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: highcharts是基于javascript的高交互的图表封装。目前highcharts可以非常轻松的画出线图，列图，饼图，传播图，区域图等。能兼容主流浏览器(包括IE6)。相关的资料：官网：http://www.highcharts.com/demo:http://www.highcharts.com/demo起步：http://www.highcharts.com/documen...&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/05/17/350400.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/350400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-05-17 15:28 <a href="http://www.blogjava.net/Hafeyang/archive/2011/05/17/350400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>position:fixed在IE6下不起作用的修正原理以及实现</title><link>http://www.blogjava.net/Hafeyang/archive/2011/05/16/350318.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Mon, 16 May 2011 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/05/16/350318.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/350318.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/05/16/350318.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/350318.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/350318.html</trackback:ping><description><![CDATA[<p>position:fixed能可以是元素不随滚动条滚动而滚动，固定在视口中，在网页设计中这种效果经常用到。通常不考虑IE6的代码是：</p><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">class</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">style</span>=<span style="color: #0000ff">"position:fixed; right:20px; top:20px;border:solid 1px blue;"</span><span style="color: #0000ff">&gt;</span>
	fixed??
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">style</span>=<span style="color: #0000ff">"height:1000px;"</span><span style="color: #0000ff">&gt;</span>mock page content<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p>&nbsp;</p>
<p>主流的做法有两种，一种使用expression表达式，在页面滚动时重新设计元素的top属性：</p><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">class</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">style</span>=<span style="color: #0000ff">"position:fixed; right:20px; top:20px;border:solid 1px blue; _position:absolute;_top:expression(parseInt(document.documentElement.scrollTop,10)+20+'px');"</span><span style="color: #0000ff">&gt;</span>
	fixed??
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">style</span>=<span style="color: #0000ff">"height:1000px;"</span><span style="color: #0000ff">&gt;</span>mock page content<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p>这种方法比较直接，但是每次滚动都重新计算元素的位置很消耗性能，而且页面比较复杂的时候，会出现“抖动”的现象。</p>
<p>另外一种方法当你弄明白是才发现奇妙无穷，是否可以改变页面的滚动条滚动的元素呢？滚动条默认滚动的是body元素。如果滚动的是一个div，而需要固定定位的元素并不在这个div中的话，自然就不会随着滚动条的滚动而滚动。</p><pre><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">style</span> <span style="color: #ff0000">type</span>=<span style="color: #0000ff">"text/css"</span><span style="color: #0000ff">&gt;</span>
		html,body,#content{height:100%;overflow:auto;padding:0px;margin:0px;}
		#fixed{position:fixed; right:20px; bottom:20px; border:solid 1px  blue;_position:absolute;}
	<span style="color: #0000ff">&lt;/</span><span style="color: #800000">style</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span>=<span style="color: #0000ff">"content"</span> <span style="color: #ff0000">class</span>=<span style="color: #0000ff">""</span><span style="color: #0000ff">&gt;</span>
	<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">class</span>=<span style="color: #0000ff">""</span> <span style="color: #ff0000">style</span>=<span style="color: #0000ff">"background-color:#ccc;height:1000px;"</span><span style="color: #0000ff">&gt;</span>
		mock page content
	<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span>=<span style="color: #0000ff">"fixed"</span> <span style="color: #ff0000">class</span>=<span style="color: #0000ff">""</span><span style="color: #0000ff">&gt;</span>
	fixed content
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span>
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<p>设置一个div与body等高等宽，将页面内容都放到这个div中。这样页面滚动条其实是这个div的滚动条。然后在body下放上position:fixed的元素。这样就大功告成了。</p>
<p>这基本是一个白话版的解决办法了。基本是原理和简单实现，更多的细节可以参考：</p>
<p><a href="http://www.qianduan.net/fix-ie6-dont-support-position-fixed-bug.html">http://www.qianduan.net/fix-ie6-dont-support-position-fixed-bug.html</a></p><img src ="http://www.blogjava.net/Hafeyang/aggbug/350318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-05-16 15:37 <a href="http://www.blogjava.net/Hafeyang/archive/2011/05/16/350318.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>textarea高度自动增加</title><link>http://www.blogjava.net/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Sun, 15 May 2011 11:40:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/350286.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/350286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/350286.html</trackback:ping><description><![CDATA[<p>
最初看到这个命题，觉得不是不是直接监听事件然后设计高度么？于是我想当然的写了这么一段代码：</p>
<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_31_109_Open_Image" onclick="this.style.display='none'; Codehighlighter1_31_109_Open_Text.style.display='none'; Codehighlighter1_31_109_Closed_Image.style.display='inline'; Codehighlighter1_31_109_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"  alt="" /><img style="display: none;" id="Codehighlighter1_31_109_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_31_109_Closed_Text.style.display='none'; Codehighlighter1_31_109_Open_Image.style.display='inline'; Codehighlighter1_31_109_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"  alt="" /><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">script </span><span style="color: rgb(255, 0, 0);">type</span><span style="color: rgb(0, 0, 255);">="text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_31_109_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_31_109_Open_Text"><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"><br />
<img id="Codehighlighter1_54_108_Open_Image" onclick="this.style.display='none'; Codehighlighter1_54_108_Open_Text.style.display='none'; Codehighlighter1_54_108_Closed_Image.style.display='inline'; Codehighlighter1_54_108_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"  alt="" /><img style="display: none;" id="Codehighlighter1_54_108_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_54_108_Closed_Text.style.display='none'; Codehighlighter1_54_108_Open_Image.style.display='inline'; Codehighlighter1_54_108_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif"  alt="" /></span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> autoheight()</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_54_108_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_54_108_Open_Text"><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">{<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">this</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">.height</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"> </span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">this</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">.scrollHeight</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">+</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">this</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">.height</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">+</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">px</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />    }</span></span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">textarea </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);"> rows</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);"> cols</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);"> onpropertychange</span><span style="color: rgb(0, 0, 255);">="autoheight();"</span><span style="color: rgb(255, 0, 0);"> oninput</span><span style="color: rgb(0, 0, 255);">="autoheight()"</span><span style="color: rgb(255, 0, 0);"> style</span><span style="color: rgb(0, 0, 255);">="overflow:hidden;"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">textarea</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<p>这个代码我没有运行，因为一边写就发现不对劲，在propertychange函数中改变property会再次触发propertychange事件，结果就可想而知了。stack overflow。</p>
<p>所以需要换一种思路，新建一个textarea，将同样大的文本放到属性一样的textarea中计算其高度，然后把高度设置到目标textarea中。</p>
<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">script&nbsp;</span><span style="color: rgb(255, 0, 0);">type</span><span style="color: rgb(0, 0, 255);">="text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">基本函数*2</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">var</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;addHandler&nbsp;</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;window.addEventListener</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">?</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(elem,event,handler){elem.addEventListener(event,handler);}:<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(elem,event,handler){elem.attachEvent(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">on</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">+</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">event,handler);};<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">var</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;$&nbsp;</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(id){</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">return</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;document.getElementById(id);}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;autoTextArea(elemid){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">新建一个textarea用户计算高度</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">if</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">!</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">_textareacopy</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">var</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;t&nbsp;</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;document.createElement(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">textarea</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.id</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">_textareacopy</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.style.position</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">absolute</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t.style.left</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">-9999px</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(t);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;change(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">_textareacopy</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).value</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;$(elemid).value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(elemid).style.height</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">_textareacopy</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).scrollHeight</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">+</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">_textareacopy</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).style.height</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">+</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">px</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addHandler($(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">target</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">),</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">propertychange</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">,change);</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">for&nbsp;IE</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addHandler($(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">target</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">),</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">input</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">,change);</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">&nbsp;for&nbsp;!IE</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(elemid).style.overflow</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">hidden</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">一处隐藏，必须的。</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(elemid).style.resize</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">=</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">none</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">去掉textarea能拖拽放大/缩小高度/宽度功能</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;addHandler(window,</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">load</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">,</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoTextArea(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">target</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;});<br />
</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">textarea&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="target"</span><span style="color: rgb(255, 0, 0);">&nbsp;rows</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);">&nbsp;cols</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">textarea</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
<p>搞清楚原理其实就简单多了。要捕捉textarea的change事件在IE下可以使用propertychange,在!IE下可以使用input。</p>
<p>一些textarea资料做参考：</p>
<ol>
    <li>textarea 的一些小技巧 <a href="http://css-tricks.com/textarea-tricks/">http://css-tricks.com/textarea-tricks/</a></li>
    <li>本文的直接资料来源：<a href="http://www.planeart.cn/?p=1489">http://www.planeart.cn/?p=1489</a></li>
</ol>
<p>&nbsp;</p>
<p>&nbsp;</p>
 <img src ="http://www.blogjava.net/Hafeyang/aggbug/350286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-05-15 19:40 <a href="http://www.blogjava.net/Hafeyang/archive/2011/05/15/auto_height_of_textarea.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery中的stopImmediatePropagation与stopPropagation的区别</title><link>http://www.blogjava.net/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Fri, 06 May 2011 10:04:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/349697.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/349697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/349697.html</trackback:ping><description><![CDATA[有这么个需求。要在一个文本框上监听两个事件，例如:
<div>&nbsp;</div>
<div>
<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">script&nbsp;</span><span style="color: rgb(255, 0, 0);">type</span><span style="color: rgb(0, 0, 255);">="text/javascript"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">#t</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).keyup(</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">#s</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).html(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">keyup1</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">stopImmediatePropagation可以阻止在这之后绑定的事件</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">//</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);">比较注释和不注释这一行的区别</span><span style="color: rgb(0, 128, 0); background-color: rgb(245, 245, 245);"><br />
</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.stopImmediatePropagation();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">#t</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).keyup(</span><span style="color: rgb(0, 0, 255); background-color: rgb(245, 245, 245);">function</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">(e){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">#s</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">).html(</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">keyup2</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">"</span><span style="color: rgb(0, 0, 0); background-color: rgb(245, 245, 245);">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">script</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">input&nbsp;</span><span style="color: rgb(255, 0, 0);">type</span><span style="color: rgb(0, 0, 255);">="text"</span><span style="color: rgb(255, 0, 0);">&nbsp;id</span><span style="color: rgb(0, 0, 255);">="t"</span><span style="color: rgb(255, 0, 0);">&nbsp;name</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);">&nbsp;value</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">span&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">=""</span><span style="color: rgb(255, 0, 0);">&nbsp;id</span><span style="color: rgb(0, 0, 255);">="s"</span><span style="color: rgb(0, 0, 255);">&gt;&lt;/</span><span style="color: rgb(128, 0, 0);">span</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>
</div>
<div>&nbsp;</div>
<div>如果在第一个事件中需要阻止第二个事件的执行可以在第一个事件中使用event.stopImmediatePropagation方法。jQuery的event的对象是增强的event对象，<br />
stopImmediatePropagation就是jQuery独有的一种阻止jQuery绑定事件机制。可以通过<span style="font: 16px/normal Simsun; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="Apple-style-span"><span style="color: rgb(34, 34, 34); line-height: 20px; font-family: monospace; font-size: 13px;" class="Apple-style-span"><a style="border-width: 0px; margin: 0px; padding: 0px; color: rgb(15, 103, 161); font-size: 13px; text-decoration: underline; vertical-align: baseline; outline-width: 0px; background-color: transparent;" href="http://api.jquery.com/event.isImmediatePropagationStopped">isImmediatePropagationStopped()</a></span></span>来判断是否阻止了jQuery立即冒泡。</div>
<div>&nbsp;</div>
<div>stopImmediatePropagation的实现可以参见我之前的一篇文章，<a href="http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html">从jQuery的缓存到事件监听</a>
在这篇文章中提到jQuery将事件都缓存在一个数组中按照先后顺序执行。如果stopImmediatePropagation就停止执行数组中的监听函数。</div>
<div>&nbsp;</div>
<div>stopPropagation是阻止默认事件监听函数。不是jQuery独有，阻止默认事件的冒泡，比如监听了DOM节点和该节点的父节点的事件，默认是事件执行将从里到外，这就是所谓的冒泡。在IE9-浏览器中可以使用event.cancelBubble=false来做到，标准浏览器使用event.stopPropagation方法。jQuery也把stopPropagation扩展方式到IE上这样有了一致的方法。</div>
<div>&nbsp;</div>
<div>综上所述，其实stopImmediatePropagation与stopPropagation就不是一个东西，所以也不存在什么区别了。</div>
<div>
<div>参考资料</div>
<div>http://api.jquery.com/event.stopImmediatePropagation/
<div>
<div>http://stackoverflow.com/questions/5299740/jquery-stoppropagation-vs-stopimmediatepropagation</div>
</div>
</div>
</div>
<div>http://api.jquery.com/event.stopImmediatePropagation/
</div>
<div>http://stackoverflow.com/questions/5299740/jquery-stoppropagation-vs-stopimmediatepropagation</div>
<div>&nbsp;</div>
  <img src ="http://www.blogjava.net/Hafeyang/aggbug/349697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-05-06 18:04 <a href="http://www.blogjava.net/Hafeyang/archive/2011/05/06/stoppropagataion_vs_stopimmediatepropagation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery中的delegate与live实现方式简析</title><link>http://www.blogjava.net/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 19 Apr 2011 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/348563.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/348563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/348563.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 简单的分析jQuery中delegate和live方法的实现原理。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/348563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-04-19 12:07 <a href="http://www.blogjava.net/Hafeyang/archive/2011/04/19/the_implementation_of_jquery_delegate_and_live.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面包屑效果分析</title><link>http://www.blogjava.net/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 10 Mar 2011 03:34:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/346068.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/346068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/346068.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一种面包屑效果的实现分析&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/346068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-03-10 11:34 <a href="http://www.blogjava.net/Hafeyang/archive/2011/03/10/cool_breadcrumbs.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有史以来本人获得的至高评价。</title><link>http://www.blogjava.net/Hafeyang/archive/2011/01/25/proud_of_myself.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 25 Jan 2011 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/01/25/proud_of_myself.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/343505.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/01/25/proud_of_myself.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/343505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/343505.html</trackback:ping><description><![CDATA[<img src="http://www.blogjava.net/images/blogjava_net/hafeyang/2011.png" border="0" alt="" />
<img src ="http://www.blogjava.net/Hafeyang/aggbug/343505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-01-25 16:36 <a href="http://www.blogjava.net/Hafeyang/archive/2011/01/25/proud_of_myself.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>datagrid性能（一）：性能问题何来？</title><link>http://www.blogjava.net/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 18 Jan 2011 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/343131.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/343131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/343131.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在grid中放大数据量时的性能问题分析。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/343131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-01-18 10:25 <a href="http://www.blogjava.net/Hafeyang/archive/2011/01/18/the_performance_challenge_of_datagrid_you_may_face.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript解析平铺树形数据</title><link>http://www.blogjava.net/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 13 Jan 2011 08:40:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/342937.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/342937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/342937.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍将平铺树形数据解析成层次型数数据的方法&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/342937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-01-13 16:40 <a href="http://www.blogjava.net/Hafeyang/archive/2011/01/13/how_to_parse_flat_tree_data_to_hierarchy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用table自带方法和DOM方法操作HTML table的区别 </title><link>http://www.blogjava.net/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 04 Jan 2011 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/342289.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/342289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/342289.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍使用HTML Table对象和DOM方法操作HTML table的区别 &nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/342289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-01-04 16:37 <a href="http://www.blogjava.net/Hafeyang/archive/2011/01/04/difference_between_2_ways_of_table_operating.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从jQuery的缓存到事件监听</title><link>http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Tue, 04 Jan 2011 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/342286.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/342286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/342286.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 通过分析jQuery缓存的实现，更好的理解jQuery的事件监听机制。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/342286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2011-01-04 15:20 <a href="http://www.blogjava.net/Hafeyang/archive/2011/01/04/jquery_cache_and_events_bind.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怎样高效的批量删除javascript 数组中的元素？</title><link>http://www.blogjava.net/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Wed, 29 Dec 2010 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/341917.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/341917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/341917.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文探讨怎样批量删除javascript数组中的元素。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/341917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2010-12-29 15:58 <a href="http://www.blogjava.net/Hafeyang/archive/2010/12/29/how_to_batch_remove_items_in_javascript_array.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>office web 2010 初次使用</title><link>http://www.blogjava.net/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html</link><dc:creator>衡锋</dc:creator><author>衡锋</author><pubDate>Thu, 23 Dec 2010 04:20:00 GMT</pubDate><guid>http://www.blogjava.net/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html</guid><wfw:comment>http://www.blogjava.net/Hafeyang/comments/341373.html</wfw:comment><comments>http://www.blogjava.net/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Hafeyang/comments/commentRss/341373.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Hafeyang/services/trackbacks/341373.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图文并茂的介绍office 2010 web的使用。&nbsp;&nbsp;<a href='http://www.blogjava.net/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html'>阅读全文</a><img src ="http://www.blogjava.net/Hafeyang/aggbug/341373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Hafeyang/" target="_blank">衡锋</a> 2010-12-23 12:20 <a href="http://www.blogjava.net/Hafeyang/archive/2010/12/23/first_look_of_microsoft_web_app_2010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>