<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>膘叔</title>
		<link>http://www.neatstudio.com/</link>
		<description>只关心我所关心的，不在意我所不在意的</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Fri, 10 Sep 2010 20:52:15 +0000</lastBuildDate>
		<ttl>10</ttl>
		<item>
			<guid>http://www.neatstudio.com/show-1454-1.shtml</guid>
			<title>jquery笔记：让input从disabled变成enabled</title>
			<author>gouki</author>
			<description><![CDATA[<p>在页面处理的时候，有时候我们会使用这样的小技巧，在没有点击XX按钮时，YY按钮是disabled的，当选中了XX时，YY也变成了enabled的状态。</p>
<p>在使用普通的JS的时候，我们很可能就直接document.getElementById('YY').disabled = false;就解决了。但是在jQuery里却不是每个浏览器都支持这样的作法，即：$('#yy').attr('disabled',false);也试了一下$('#yy').attr('disabled','');，不知道是我的人品问题还是确实 有问题，反正都没有成功，于是我又尝试$('#yy').attr('enabled','enabled')，也没有成功。 最后一发狠，来了一句：$('#yy').removeAttr('disabled')，得成了。</p>
<p>果然还是怕狠人的。在这里做个记录而已。虽然大多数情况下不一定用得到。</p>]]></description>
			<link>http://www.neatstudio.com/show-1454-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-09-09 15:35</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1452-1.shtml</guid>
			<title>支持智能手机的JS框架</title>
			<author>gouki</author>
			<description><![CDATA[<p>智能手机现在是越来越被大众接受，即使是诺基亚那可怜的S40，也能将就着算是智能机吧。关键这些智能机里都有一些浏览器了。比如opera mini,opera mobile之类的，再象android那样的话就是Webkit，IOS也算是Webkit核心了（ff也要登录android之类的），opera也在各个平台都有着自己的版本。因此，我们可以假设，只要是智能手机，都能支持一些简单的JS了。但是我怎么知道哪些浏览器支持的JS在其他浏览器上不支持呢？如果只用最简化的功能，那意义就不大了。因此，支持智能手机的JS框架就比较让人心动了。</p>
<p><strong>一、jQuery Mobile</strong></p>
<p>jQueryMobile不像前面SproutCore 或者Sencha  Touch，它没有提供一个完整的应用架构。但它是一个新的开始，其也以向移动网站应用提供更多本地化的控制为宗旨。jQuery  Mobile项目宣布其要成为&ldquo;完整的，统一的，移动UI架构&rdquo;。 jQuery Mobile核心项目也将继续为移动提供优化，但jQuery  Mobile更专注于为主流智能手机浏览器提供一种真正的顶级的JS体验和界面。</p>
<p>官方网址：<a href="http://jquerymobile.com/">http://jquerymobile.com/</a></p>
<p>支持列表：<a href="http://jquerymobile.com/gbs/">http://jquerymobile.com/gbs/</a></p>
<p><strong>二、Sencha Touch</strong></p>
<p>Sencha前身是Ext JS ，全名是Sencha Touch HTML5 mobile  framework.它提供一种可跨平台的架构，目前支持IOS，Android将在不久后得到支持。这种在线摸触摸技术结合了一个UI库的独立解决方 案，触摸项目管理、地理技术支持、离线缓存技术以及特殊的CSS和CSS3功能。</p>
<p>官方网址：<a href="http://www.sencha.com/products/touch/">http://www.sencha.com/products/touch/</a></p>
<p>演示地址：<a href="http://www.sencha.com/products/touch/demos.php">http://www.sencha.com/products/touch/demos.php</a></p>
<p><strong>三、YUI 3.2</strong></p>
<p>雅虎将发布最新的JS实用程序的YUI库。YUI最新版对触摸和移动设备提供更多更好的支持</p>
<p>官方网址：<a href="http://yuilibrary.com/">http://yuilibrary.com/</a></p>
<p><strong>四、iUI</strong></p>
<p>iUI是一个iPhone用户界面架构，其设计目标是像移动网站应用提供更接近iPhone的体验。它的工作原理是结合WEBKIT为基础的设备以及包括一个JS库和CSS及图形。其最早追溯至2007年，但多年以来缓慢地升级以提供更多其他设备，甚至是iPad。</p>
<p>官方网址：<a href="http://code.google.com/p/iui/">http://code.google.com/p/iui/</a></p>
<p><strong>五、SproutCore</strong></p>
<p>SproutCore是一个HTML5的架构，目标帮助开发者建立桌面口径的web应用，并且支持任何浏览器下无需补丁的运行。其项目带头大哥已经辞去了其原本苹果的职位，专心致志地来完成此项目。</p>
<p>官方网址：<a href="http://www.sproutcore.com/">http://www.sproutcore.com/</a></p>
<p>演示地址：<a href="http://demo.sproutcore.com/">http://demo.sproutcore.com/</a></p>
<p><strong>六、XUI</strong></p>
<p>在开发Phonegap时，XUI团队对应用于移动设备的现存JS库及表现很失望。XUI创建的初衷是跨多个移动浏览器工作，其包括WEBKIT，Fennec，Opera。其目标是为低成本条件下解决传统JS库不适合移动浏览器，提供更多跨兼容的方案。</p>
<p>官方网址：<a href="http://xuijs.com/">http://xuijs.com/</a></p>
<p>英文原版：<a href="http://mashable.com/2010/08/18/mobile-web-app-frameworks/">http://mashable.com/2010/08/18/mobile-web-app-frameworks/</a></p>
<p>内容来自：http://www.biaodianfu.com/make-your-mobile-websites-act-like-apps.html</p>]]></description>
			<link>http://www.neatstudio.com/show-1452-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-09-07 11:00</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1451-1.shtml</guid>
			<title>JavaScript—计算图片加载的张数</title>
			<author>gouki</author>
			<description><![CDATA[<p>看到cssrain.cn上这篇博客介绍的不错。挺有意思，虽然这个功能在很久以前就有人实现过。。。但现在看来又有不同的感觉<br />
或许大家都记得，在几年前，网页特效中就有一个效果是网页正在下载数据，请稍等。然后是一个进度条，等完毕后，网页就打开了。其实说的就是Cssrain上的效果。不过几年前没有想过要兼容如今这么多的浏览器。所以，还是可以再了解一下（相册网站之类的可能会需要）<br />
----START--</p>
<p>先定义一个图片的数组，然后通过image的onload事件来计算，注意，onload在ie和火狐有所不同。</p>
<p>最后需要一个进度条与之结合即可。</p>
<p>这个脚本在做游戏的地方用得比较多。</p>
<p><a href="http://cssrain.cn/demo/plantsvs/loadImg.html" target="_blank">http://cssrain.cn/demo/plantsvs/loadImg.html</a></p><br /><br /><a href="http://www.neatstudio.com/show-1451-1.shtml" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.neatstudio.com/show-1451-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-09-06 17:07</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1445-1.shtml</guid>
			<title>GreaseMonkey with jQuery</title>
			<author>gouki</author>
			<description><![CDATA[<p>习惯了用jQuery，因此在使用greasemonkey的时候，也总是想着用jQuery，找了下，确实有这样的例子。。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;$;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="comment">//&nbsp;Add&nbsp;jQuery</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">typeof</span><span>&nbsp;unsafeWindow.jQuery&nbsp;==&nbsp;</span><span class="string">'undefined'</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;GM_Head&nbsp;=&nbsp;document.getElementsByTagName(</span><span class="string">'head'</span><span>)[0]&nbsp;||&nbsp;document.documentElement,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_JQ&nbsp;=&nbsp;document.createElement(<span class="string">'script'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_JQ.src&nbsp;=&nbsp;<span class="string">'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_JQ.type&nbsp;=&nbsp;<span class="string">'text/javascript'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_JQ.async&nbsp;=&nbsp;<span class="keyword">true</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_Head.insertBefore(GM_JQ,&nbsp;GM_Head.firstChild);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GM_wait();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;})();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="comment">//&nbsp;Check&nbsp;if&nbsp;jQuery's&nbsp;loaded</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>&nbsp;GM_wait()&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">typeof</span><span>&nbsp;unsafeWindow.jQuery&nbsp;==&nbsp;'undefined')&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.setTimeout(GM_wait,&nbsp;100);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$&nbsp;=&nbsp;unsafeWindow.jQuery.noConflict(<span class="keyword">true</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;letsJQuery();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="comment">//&nbsp;All&nbsp;your&nbsp;GM&nbsp;code&nbsp;must&nbsp;be&nbsp;inside&nbsp;this&nbsp;function</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>&nbsp;letsJQuery()&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert($);&nbsp;<span class="comment">//&nbsp;check&nbsp;if&nbsp;the&nbsp;dollar&nbsp;(jquery)&nbsp;function&nbsp;works</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert($().jquery);&nbsp;<span class="comment">//&nbsp;check&nbsp;jQuery&nbsp;version</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>然后代码就得全部扔在letsJQuery()方法里了。<br />
由于是async，所以，尽量选择快一点地址，比如本地的localhost之类的，HOHO，不过，这就得本地WEB服务常开了。</p>
<p>原文来自：http://joanpiedra.com/jquery/greasemonkey/</p>]]></description>
			<link>http://www.neatstudio.com/show-1445-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-30 10:00</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1438-1.shtml</guid>
			<title>js模拟php:print_r</title>
			<author>gouki</author>
			<description><![CDATA[<p>在PHP中，我们打印一个数组或者对象的时候，都是用print_r，相对比较直观，可是javascript就不行。翻了翻资料，也看到一些代码的写法。这里是一个简单的处理（不能打印window,document等对象）：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;print_r(&nbsp;$value&nbsp;){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>($value.constructor&nbsp;==&nbsp;Array&nbsp;||&nbsp;$value.constructor&nbsp;==&nbsp;Object&nbsp;){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<span class="string">&quot;&lt;ul&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;$i&nbsp;</span><span class="keyword">in</span><span>&nbsp;$value){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>($value[$i].constructor&nbsp;==&nbsp;Array&nbsp;||&nbsp;$value[$i].constructor&nbsp;==&nbsp;Object&nbsp;){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<span class="string">&quot;&lt;li&gt;[&quot;</span><span>+$i+</span><span class="string">&quot;]&nbsp;=&gt;&nbsp;&quot;</span><span>&nbsp;+&nbsp;</span><span class="keyword">typeof</span><span>(&nbsp;$value&nbsp;)&nbsp;+&nbsp;</span><span class="string">&quot;&nbsp;&lt;/li&gt;&lt;ul&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print_r($value[$i]);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<span class="string">&quot;&lt;/ul&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<span class="string">&quot;&lt;li&gt;[&quot;</span><span>+$i+</span><span class="string">&quot;]&nbsp;=&gt;&nbsp;&quot;</span><span>&nbsp;+&nbsp;$value[$i]&nbsp;+&nbsp;</span><span class="string">&quot;&lt;/li&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(<span class="string">&quot;&lt;/ul&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;s&nbsp;=&nbsp;{};&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>s.i&nbsp;=&nbsp;<span class="string">'123'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>s.o&nbsp;=&nbsp;{};&nbsp;&nbsp;</span></li>
    <li class="alt"><span>s.o.test&nbsp;=&nbsp;<span class="string">'tt'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>print_r(s);&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>然后看了一下phpjs.org，它上面的print_r就比较复杂了。。。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;print_r&nbsp;(array,&nbsp;return_val)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;Prints&nbsp;out&nbsp;or&nbsp;returns&nbsp;information&nbsp;about&nbsp;the&nbsp;specified&nbsp;variable&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;version:&nbsp;1008.1718</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;discuss&nbsp;at:&nbsp;http://phpjs.org/functions/print_r&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;+&nbsp;&nbsp;&nbsp;original&nbsp;by:&nbsp;Michael&nbsp;White&nbsp;(http://getsprink.com)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;+&nbsp;&nbsp;&nbsp;improved&nbsp;by:&nbsp;Ben&nbsp;Bryan</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;by:&nbsp;Brett&nbsp;Zamir&nbsp;(http://brett-zamir.me)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;improved&nbsp;by:&nbsp;Brett&nbsp;Zamir&nbsp;(http://brett-zamir.me)</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;+&nbsp;&nbsp;&nbsp;improved&nbsp;by:&nbsp;Kevin&nbsp;van&nbsp;Zonneveld&nbsp;(http://kevin.vanzonneveld.net)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;depends&nbsp;on:&nbsp;echo</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;example&nbsp;1:&nbsp;print_r(1,&nbsp;true);</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returns&nbsp;1:&nbsp;1</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;output&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>,&nbsp;pad_char&nbsp;=&nbsp;</span><span class="string">&quot;&nbsp;&quot;</span><span>,&nbsp;pad_val&nbsp;=&nbsp;4,&nbsp;d&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.window.document;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">var</span><span>&nbsp;getFuncName&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;(fn)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;name&nbsp;=&nbsp;(/\W*</span><span class="keyword">function</span><span>\s+([\w\$]+)\s*\(/).exec(fn);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!name)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="string">'(Anonymous)'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;name[1];&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;repeat_char&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;(len,&nbsp;pad_char)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;str&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;i=0;&nbsp;i&nbsp;&lt;&nbsp;len;&nbsp;i++)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;pad_char;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;str;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;formatArray&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;(obj,&nbsp;cur_depth,&nbsp;pad_val,&nbsp;pad_char)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(cur_depth&nbsp;&gt;&nbsp;0)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cur_depth++;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;base_pad&nbsp;=&nbsp;repeat_char(pad_val*cur_depth,&nbsp;pad_char);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;thick_pad&nbsp;=&nbsp;repeat_char(pad_val*(cur_depth+1),&nbsp;pad_char);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;str&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">typeof</span><span>&nbsp;obj&nbsp;===&nbsp;</span><span class="string">'object'</span><span>&nbsp;&amp;&amp;&nbsp;obj&nbsp;!==&nbsp;</span><span class="keyword">null</span><span>&nbsp;&amp;&amp;&nbsp;obj.constructor&nbsp;&amp;&amp;&nbsp;getFuncName(obj.constructor)&nbsp;!==&nbsp;</span><span class="string">'PHPJS_Resource'</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;<span class="string">&quot;Array\n&quot;</span><span>&nbsp;+&nbsp;base_pad&nbsp;+&nbsp;</span><span class="string">&quot;(\n&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;key&nbsp;</span><span class="keyword">in</span><span>&nbsp;obj)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(obj[key]&nbsp;</span><span class="keyword">instanceof</span><span>&nbsp;Array)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;thick_pad&nbsp;+&nbsp;<span class="string">&quot;[&quot;</span><span>+key+</span><span class="string">&quot;]&nbsp;=&gt;&nbsp;&quot;</span><span>+formatArray(obj[key],&nbsp;cur_depth+1,&nbsp;pad_val,&nbsp;pad_char);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;thick_pad&nbsp;+&nbsp;<span class="string">&quot;[&quot;</span><span>+key+</span><span class="string">&quot;]&nbsp;=&gt;&nbsp;&quot;</span><span>&nbsp;+&nbsp;obj[key]&nbsp;+&nbsp;</span><span class="string">&quot;\n&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;+=&nbsp;base_pad&nbsp;+&nbsp;<span class="string">&quot;)\n&quot;</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>&nbsp;(obj&nbsp;===&nbsp;</span><span class="keyword">null</span><span>&nbsp;||&nbsp;obj&nbsp;===&nbsp;undefined)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;<span class="string">''</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;</span><span class="comment">//&nbsp;for&nbsp;our&nbsp;&quot;resource&quot;&nbsp;class</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;obj.toString();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;str;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;=&nbsp;formatArray(array,&nbsp;0,&nbsp;pad_val,&nbsp;pad_char);&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(return_val&nbsp;!==&nbsp;</span><span class="keyword">true</span><span>)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(d.body)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.echo(output);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;XULDocument;&nbsp;<span class="comment">//&nbsp;We're&nbsp;in&nbsp;XUL,&nbsp;so&nbsp;appending&nbsp;as&nbsp;plain&nbsp;text&nbsp;won't&nbsp;work;&nbsp;trigger&nbsp;an&nbsp;error&nbsp;out&nbsp;of&nbsp;XUL</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.echo(</span><span class="string">'&lt;pre&nbsp;xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&nbsp;style=&quot;white-space:pre;&quot;&gt;'</span><span>+output+</span><span class="string">'&lt;/pre&gt;'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">catch</span><span>&nbsp;(e)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">this</span><span>.echo(output);&nbsp;</span><span class="comment">//&nbsp;Outputting&nbsp;as&nbsp;plain&nbsp;text&nbsp;may&nbsp;work&nbsp;in&nbsp;some&nbsp;plain&nbsp;XML</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">true</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;output;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>果然是没有做不到的事，只有想不到的事呀。。。（上面的phpjs.org的print_r需要echo方法，请到phpjs.org下载）</p>]]></description>
			<link>http://www.neatstudio.com/show-1438-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-24 14:04</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1436-1.shtml</guid>
			<title>javascript模版系统</title>
			<author>gouki</author>
			<description><![CDATA[<p>用javascript做模版的话，说来也算是比较方便的，特别是对于PHP开发来说，只要扔一个json数组过来。然后剩下的就可以让javascript来完成了。<br />
搜索一下jQuery的plugin，可以找到大约5~6个模版程序。好象用的比较多的还是jTemplate，上一次司徒正美用javascript写了一个简单的例子，这次又写了一个比较详细的，说是v2，有兴趣的朋友可以尝试一下。。<br />
--start--司徒正美认为模版要处理复杂的玩意，所以写的功能就强大了。<br />
本版本主要是对原模板系统进行提速，去掉消耗巨大的辅助函数。本来想用它与John Resig的 Micro-Templating比较一下速度，发现对方无法处理复杂的模板，残念。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="comment">//司徒正美&nbsp;javascript&nbsp;template&nbsp;-&nbsp;http://www.cnblogs.com/rubylouvre/&nbsp;-&nbsp;MIT&nbsp;Licensed</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="keyword">function</span><span>&nbsp;()&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!String.prototype.trim){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String.prototype.trim&nbsp;=&nbsp;<span class="keyword">function</span><span>(str)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">this</span><span>.replace(/^[\s\xa0]+|[\s\xa0]+$/g,&nbsp;</span><span class="string">''</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;dom&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;quote:&nbsp;<span class="keyword">function</span><span>&nbsp;(str)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str.replace(/[\x00-\x1f\\]/g,&nbsp;<span class="keyword">function</span><span>&nbsp;(chr)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;special&nbsp;=&nbsp;metaObject[chr];&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;special&nbsp;?&nbsp;special&nbsp;:&nbsp;</span><span class="string">'\\u'</span><span>&nbsp;+&nbsp;(</span><span class="string">'0000'</span><span>&nbsp;+&nbsp;chr.charCodeAt(0).toString(16)).slice(-4)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="string">'&quot;'</span><span>&nbsp;+&nbsp;str.replace(/&quot;/g,&nbsp;</span><span class="string">'\\&quot;'</span><span>)&nbsp;+&nbsp;</span><span class="string">'&quot;'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;metaObject&nbsp;=&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\b'</span><span>:&nbsp;</span><span class="string">'\\b'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\t'</span><span>:&nbsp;</span><span class="string">'\\t'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\n'</span><span>:&nbsp;</span><span class="string">'\\n'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\f'</span><span>:&nbsp;</span><span class="string">'\\f'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\r'</span><span>:&nbsp;</span><span class="string">'\\r'</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'\\':&nbsp;'</span><span>\\\\</span><span class="string">'</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser&nbsp;=&nbsp;document.createElement(&quot;div&quot;),</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startOfHTML&nbsp;=&nbsp;&quot;\t__views.push(&quot;,</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endOfHTML&nbsp;=&nbsp;&quot;);\n&quot;;</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//onsite，可选，Boolean，是否就地替换掉模板容器，默认true，如果为false，则返回一个文档碎片，交由用户自己插入到需要的地方</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dom.ejs&nbsp;=&nbsp;function&nbsp;(obj)&nbsp;{</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;onsite&nbsp;=&nbsp;obj.onsite&nbsp;===&nbsp;void&nbsp;0&nbsp;,</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left&nbsp;=&nbsp;obj.left&nbsp;||&nbsp;&quot;&lt;%&quot;,</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right&nbsp;=obj.right&nbsp;||&nbsp;&quot;%&gt;&quot;,</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selector&nbsp;=&nbsp;obj.selector,</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isLeft&nbsp;=&nbsp;true,</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff&nbsp;=&nbsp;[&quot;var&nbsp;__views&nbsp;=&nbsp;[];\n&quot;],</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment&nbsp;=&nbsp;document.createDocumentFragment(),</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;el&nbsp;=&nbsp;document.getElementById(selector),</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ejs&nbsp;=&nbsp;dom.ejs;</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!el)&nbsp;throw&nbsp;&quot;找不到目标元素&quot;;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;str&nbsp;=&nbsp;el.text.trim();</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!ejs[selector]){</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(str.length){</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;condition&nbsp;=&nbsp;isLeft&nbsp;?&nbsp;left&nbsp;:right;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;index&nbsp;=&nbsp;str.indexOf(condition);</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(index&nbsp;!==&nbsp;-1){//取左边</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;text&nbsp;=&nbsp;str.slice(0,index);</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isLeft){</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.push(startOfHTML,&nbsp;dom.quote(text.trim()),&nbsp;endOfHTML);</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(text.charAt(0))&nbsp;{</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;#&quot;://处理注释</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&quot;=&quot;://处理后台返回的变量（输出到页面的);</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.push(startOfHTML,&nbsp;text.slice(1),&nbsp;endOfHTML)</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.push(text,&nbsp;&quot;\n&quot;)</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isLeft){</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.push(startOfHTML,&nbsp;dom.quote(str),&nbsp;endOfHTML);</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;&quot;在字符串{{&nbsp;&quot;+dom.quote(str)+&quot;&nbsp;}}中找不到右界定符&quot;+right</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str.slice(index+2).trim();</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isLeft&nbsp;=&nbsp;!isLeft;</span>&nbsp;</span></li>
    <li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span>&nbsp;</span></li>
    <li class=""><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ejs[selector]&nbsp;=&nbsp;new&nbsp;Function(&quot;json&quot;,&nbsp;&quot;with(json){&quot;+buff.join(&quot;&quot;)&nbsp;+&nbsp;'</span><span>};</span><span class="keyword">return</span><span>&nbsp;__views.join(</span><span class="string">&quot;&quot;</span><span>);')&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser.innerHTML&nbsp;=&nbsp;ejs[selector](obj.json&nbsp;||&nbsp;{});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>&nbsp;(parser.firstChild)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.appendChild(parser.firstChild)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;onsite&nbsp;?&nbsp;el.parentNode.replaceChild(fragment,&nbsp;el)&nbsp;:&nbsp;fragment;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.dom&nbsp;=&nbsp;dom;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})();&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>这种使用原生代码写的例子，可以被任何代码所使用，如果你有兴趣也可以看看司徒正美的例子的。原文网址在<a class="entry-title-link" target="_blank" href="http://www.cnblogs.com/rubylouvre/archive/2010/08/22/1805914.html">javascript 模板系统 ejs v2</a>，可以移步一观。</p>]]></description>
			<link>http://www.neatstudio.com/show-1436-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-22 23:32</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1433-1.shtml</guid>
			<title>常用函数：copyToClipboard</title>
			<author>gouki</author>
			<description><![CDATA[<p>COPY文字到剪贴板很方便，我是指在IE下面，而其他的就有点复杂了。firefox下面有安全选项的。所以很多人都采用了flash来实现。如果不计flash，那么下面这个函数就十分有用了，可能是转的过多了，也不记得来源是哪里了。如果是原作者看到，请提示一下，一定加上您的链接。</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;copyToClipboard(txt)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(window.clipboardData)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.clipboardData.clearData();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.clipboardData.setData(<span class="string">&quot;Text&quot;</span><span>,&nbsp;txt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>(navigator.userAgent.indexOf(</span><span class="string">&quot;Opera&quot;</span><span>)&nbsp;!=&nbsp;-1)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.location&nbsp;=&nbsp;txt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">else</span><span>&nbsp;</span><span class="keyword">if</span><span>&nbsp;(window.netscape)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;netscape.security.PrivilegeManager.enablePrivilege(<span class="string">&quot;UniversalXPConnect&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">catch</span><span>&nbsp;(e)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;被浏览器拒绝！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;clip&nbsp;=&nbsp;Components.classes[</span><span class="string">'@mozilla.org/widget/clipboard;1'</span><span>].createInstance(Components.interfaces.nsIClipboard);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!clip)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;trans&nbsp;=&nbsp;Components.classes[</span><span class="string">'@mozilla.org/widget/transferable;1'</span><span>].createInstance(Components.interfaces.nsITransferable);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!trans)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.addDataFlavor(<span class="string">'text/unicode'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;str&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;len&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;str&nbsp;=&nbsp;Components.classes[</span><span class="string">&quot;@mozilla.org/supports-string;1&quot;</span><span>].createInstance(Components.interfaces.nsISupportsString);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;copytext&nbsp;=&nbsp;txt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str.data&nbsp;=&nbsp;copytext;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trans.setTransferData(<span class="string">&quot;text/unicode&quot;</span><span>,str,copytext.length*2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;clipid&nbsp;=&nbsp;Components.interfaces.nsIClipboard;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!clip)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">false</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clip.setData(trans,<span class="keyword">null</span><span>,clipid.kGlobalClipboard);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;复制成功！&quot;</span><span>)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>]]></description>
			<link>http://www.neatstudio.com/show-1433-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-18 23:56</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1429-1.shtml</guid>
			<title>CSS中media标签的作用</title>
			<author>gouki</author>
			<description><![CDATA[<p>在网页中，看到使用CSS的地方，大多数都会有这么一句：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">link</span><span>&nbsp;</span><span class="attribute">rel</span><span>=</span><span class="attribute-value">&quot;stylesheet&quot;</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/css&quot;</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;global.css&quot;</span><span>&nbsp;</span><span class="attribute">media</span><span>=</span><span class="attribute-value">&quot;screen&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>那么，究竟这个media有什么作用呢？通过查下资料了解到：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span>all--&nbsp;用于所有设备类型&nbsp;&nbsp;</span></span></li>
    <li class=""><span>aural--&nbsp;用于语音和音乐合成器&nbsp;&nbsp;</span></li>
    <li class="alt"><span>braille--&nbsp;用于触觉反馈设备&nbsp;&nbsp;</span></li>
    <li class=""><span>embossed--&nbsp;用于凸点字符（盲文）印刷设备&nbsp;&nbsp;</span></li>
    <li class="alt"><span>handheld--&nbsp;用于小型或手提设备&nbsp;&nbsp;</span></li>
    <li class=""><span>print--&nbsp;用于打印机&nbsp;&nbsp;</span></li>
    <li class="alt"><span>projection--&nbsp;用于投影图像，如幻灯片&nbsp;&nbsp;</span></li>
    <li class=""><span>screen--&nbsp;用于计算机显示器&nbsp;&nbsp;</span></li>
    <li class="alt"><span>tty--&nbsp;用于使用固定间距字符格的设备。如电传打字机和终端&nbsp;&nbsp;</span></li>
    <li class=""><span>tv--&nbsp;用于电视类设备&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>虽然media有10个值，但我们经常看到的也就print,和screen两种。当然也会有没有media标签的情况，这个时候其实就是默认media=&quot;all&quot;。<br />
既然如此，那我们也就相当于了解了，如果你需要打印，那么你在按下打印的时候，系统就会默认调用media=&quot;print&quot;所对应的CSS文件了。也因此这样可以让你更好的整理你的打印页面，比如把一些不需要打印的内容屏蔽掉、优化打印页面（让内容更利于被打印）等等<br />
<br />
虽然我不是前端，但。。了解一下这些内容还是有点用处的。</p>]]></description>
			<link>http://www.neatstudio.com/show-1429-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-16 11:16</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1427-1.shtml</guid>
			<title>关注：jQuery Mobile来了！</title>
			<author>gouki</author>
			<description><![CDATA[<p style="text-align: left;">　　为了让移动设备也能用上jQuery，jQuery开发团队发布了jQuery移动设备版开发项目jQuery Mobile Project（<a href="http://jquerymobile.com/">http://jquerymobile.com</a>）。jQuery Mobile不仅会给主流移动平台带来jQuery核心库，而且会发布一个完整统一的jQuery移动UI框架。</p>
<p style="text-align: left;">　　对于大名鼎鼎的jQuery开发团队来说，当然要让jQuery Mobile支持全球主流的移动平台，而不仅仅是北美流行的移动平台。想要知道jQuery Mobile项目将要做些什么吗？请看<a href="http://jquerymobile.com/strategy/">jQuery移动平台策略</a>；想要知道jQuery Mobile项目将会支持哪些浏览器吗？请看<a href="http://jquerymobile.com/gbs/">Mobile Graded Browser Support</a>。</p>
<p align="left" style="text-align: left;"><a href="http://www.neatstudio.com/attachment.php?id=679" target="_blank"><img src="http://www.neatstudio.com/attachments/date_201008/thumb_c8e44b67f849ec4df12579cdac7e4055.jpg" border="0" alt="大小: 58.04 K&#13;尺寸: 480 x 376&#13;浏览: 37 次&#13;点击打开新窗口浏览全图" width="480" height="376" /></a></p>
<p style="text-align: left;">　　jQuery Mobile开发团队正在紧张工作，准备那些要支持的移动设备并针对这些设备进行测试。他们争取在今年晚些时候发布jQuery Mobile。如果你想为jQuery Mobile提供帮助，请加入jQuery Mobile社区的<a href="http://forum.jquery.com/jquery-mobile">讨论组</a>。</p>
<p style="text-align: left;">　　jQuery Mobile项目已经得到了Palm, Mozilla等移动浏览器厂商的赞助。</p>
<p style="text-align: left;">　　jQuery Mobile开发团队说：&ldquo;能开发这个项目，我们非常兴奋。移动Web太需要一个跨浏览器的框架，让开发人员开发出真正的移动Web网站。我们将尽全力去满足这样的需求。&rdquo;</p>
<p style="text-align: left;">　　编者：移动互联网，挡不住的趋势...</p>
<p style="text-align: left;">　　英文原文：<a href="http://jquerymobile.com/2010/08/announcing-the-jquery-mobile-project/">Announcing the jQuery Mobile Project</a></p>
<p style="text-align: left;">　　<a href="http://www.cnblogs.com/">博客园</a>编译</p>]]></description>
			<link>http://www.neatstudio.com/show-1427-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-15 14:26</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1423-1.shtml</guid>
			<title>jQuery 绑定自定义事件</title>
			<author>gouki</author>
			<description><![CDATA[<p>一般情况下，我们对于jQuery的事件绑定都是采用bind，从1.3开始。可以同时绑定多个事件了。这是非常方便的情况，但是对于checkbox和radio来说会有几种情况，比如checkbox选中时，本身就触发了click事件，这时候怎么办？如果为checkbox添加label那么lable在点击时，能不能触发checkbox的click事件？这都需要研究一下。比如，我们在checkbox上绑定了click事件，平时我们在选中的时候都有触发。但是在label上点击的时候，就要再额外加一下了。<br />
<br />
$(&quot;input[type=checkbox]&quot;).bind('click',function(){<br />
&nbsp; //...<br />
})<br />
$('label').click(function(){<br />
&nbsp;&nbsp; $(this).children('input[type=checkbox]').click();<br />
})<br />
<br />
基本上也可以触发这种事件。<br />
一般元素在绑定的时候，都是绑定click,change,等</p>
<p>//<strike>但如果想触发系统事件，就必须是evtClick了。【</strike>这里其实是自定义事件。在绑定后还是需要单独触发一下。原来我写错了。】</p>
<p>可以参考http://www.cnblogs.com/mamboer/archive/2010/08/11/1797532.html</p>]]></description>
			<link>http://www.neatstudio.com/show-1423-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-11 22:40</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1415-1.shtml</guid>
			<title>如何调试JS错误</title>
			<author>gouki</author>
			<description><![CDATA[<p>做网页开发的时候不可避免会用到JS，当然更不可避免的就会遇到JS错误。当你打开网页时，IE左下角的感叹号是不是让你很郁闷？怎么调试就成了必修课了。</p>
<p>一般来说，IE的出错信息还是能够基本定位到代码中，FF的相对定位的就更准确一些。只是有时候IE报错为0行或者N行（这个N超出了页面行数）时，就比较让人郁闷。而更头疼的是，如果这个代码在FF完全正常，那真是想死的心都有了。</p>
<p>IE下面，可能更多的时候还是利用微软自己提供的工具来进行查错：ms script debugger，只是知道的人很少，用的人更少。现在firebug lite已经登录IE平台（其实也不算是登录，只是加载firebug lite类库而已。不过，这已经能解决大部分问题了）。FF下面嘛，那就主推firebug，随着firebug的流行，一些附加的东西都有了，如firephp,firecookie,eventbug等插件也越来越让人离不开它。safari和chrome这些基于webkit的浏览器。也都有着自带的js调试工具，可用性我就不太清楚了。没用过，更多的时候只保证IE和FF正常就OK了。webkit虽然份额随着国内所谓双核浏览器的开发而增长的较快，但真正的使用者还仅限于那一小撮人群而已。</p>
<p>于是，这，又成了firebug等的天下（IE8已经自带调试工具，快捷键与firebug一样，界面差不多）。</p>
<p>不废话，下面是我转贴的文章，介绍了一些常见的调试方法，其实也不能算是调试，也可以说是代码的一些写法罢了。【略做整理】</p>
<p><strong>A&nbsp; 使用alert() 和document.write() 方法监视变量值</strong><br />
如果要中断代码的运行，监视变量的值，则使用alert() 方法；<br />
如果需要查看的值很多，则使用document.write() 方法，避免反复单击&ldquo;确定&rdquo;按钮；<br />
&nbsp;<br />
<strong>B&nbsp; 使用window.onerror 事件</strong><br />
当页面出现异常时，onerror 事件会在window 对象上触发。它能在一定程度上告诉开发者相关的错误信息。<br />
示例：
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">function</span><span>&nbsp;myerror(_message,_url,_line)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;错误信息：&quot;</span><span>&nbsp;+&nbsp;_message&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<span class="string">&quot;\n错误的URI：&quot;</span><span>&nbsp;+&nbsp;_url&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<span class="string">&quot;\n错误的行数：&quot;</span><span>&nbsp;+&nbsp;_line&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">true</span><span>;&nbsp;</span><span class="comment">//屏蔽系统的事件</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//绑定错误事件</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;window.onerror&nbsp;=&nbsp;myerror;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="comment">//触发错误示例：</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;window,onload&nbsp;=&nbsp;test;&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
注意：在IE 中，触发error 事件后，正常的代码会继续运行，所有的变量和数据都会保存下来，在其onerror 事件处理方法中可以正常访问到；而在Firefox 中，触发error 事件后，一切都结束，所有的变量和数据都将被销毁。<br />
&nbsp;<br />
<strong>C&nbsp; 使用 try...catch 语句找错误</strong><br />
示例：<br />
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(触发异常);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">catch</span><span>&nbsp;(_ex)&nbsp;</span><span class="comment">//可以省略&ldquo;_ex&rdquo;参数</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;err&nbsp;=&nbsp;</span><span class="string">&quot;错误信息&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;i&nbsp;</span><span class="keyword">in</span><span>&nbsp;_ex)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err&nbsp;+=&nbsp;<span class="string">&quot;\n参数名：&quot;</span><span>&nbsp;+&nbsp;i&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span class="string">&quot;\t参数值：&quot;</span><span>&nbsp;+&nbsp;_ex[i];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(err);&nbsp;<span class="comment">//打印错误</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">finally</span><span>&nbsp;&nbsp;</span><span class="comment">//finally&nbsp;可以被省略...</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;finally&nbsp;总是会运行&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
<br />
注意：try...catch 并不能很好的处理JavaScript 的语法错误。<br />
示例：
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;script&nbsp;type=</span><span class="string">&quot;text/javascript&quot;</span><span>&gt;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">try</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;触发语法错误&quot;</span><span>));&nbsp;</span><span class="comment">//多了半边&ldquo;)&rdquo;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">catch</span><span>&nbsp;(_ex)&nbsp;</span><span class="comment">//可以省略_ex参数</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;err&nbsp;=&nbsp;</span><span class="string">&quot;错误信息&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;i&nbsp;</span><span class="keyword">in</span><span>&nbsp;_ex)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err&nbsp;+=&nbsp;<span class="string">&quot;\n参数名：&quot;</span><span>&nbsp;+&nbsp;i&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span class="string">&quot;\t参数值：&quot;</span><span>&nbsp;+&nbsp;_ex[i];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(err);&nbsp;<span class="comment">//打印错误</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&lt;/script&gt;&nbsp;&nbsp;</span></li>
</ol>
</div>
该示例并没有进入catch 块中。<br />
&nbsp;<br />
<strong>D&nbsp; 使用相关调试器</strong><br />
在IE 和Firefox 浏览器中，可以使用相关的调试器或插件对JavaScript 进行调试。<br />
&nbsp;<br />
●&nbsp; 在Firefox 浏览器中，可以使用其自带的&ldquo;错误控制台&rdquo;。操作步骤如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开Firefox 浏览器 &rarr; 在菜单条&ldquo;工具&rdquo;中 &rarr; 选择&ldquo;错误控制台&rdquo;即可。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在没有其他插件的情况下，其自带的&ldquo;错误控制台&rdquo;是一个非常不错的选择。<br />
&nbsp;<br />
另外，在Firefox 浏览器中，还有一些很不错的调试器，如：Venkman、Firebug 等。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Venkman 调试器安装后，可以在Firefox 浏览器 &rarr; 在菜单条&ldquo;工具&rdquo;中 &rarr; 选择&ldquo;JavaScript&nbsp; Debugger &rdquo;命令启用；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Firebug 调试器安装后，可以在Firefox 浏览器 &rarr; 在菜单条&ldquo;工具&rdquo;中 &rarr; 选择&ldquo;Firebug&rdquo;&rarr; 选择&ldquo;打开 Firebug&rdquo;即可；<br />
&nbsp;<br />
●&nbsp; 在IE 浏览器中，可以使用 Microsoft&nbsp; Script&nbsp; Debugger 调试器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Microsoft&nbsp; Script&nbsp; Debugger 是微软随IE 4 一同发布的一个IE插件，可以从微软的官方网站上免费下载。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下载安装以后，必须将IE 浏览器的调试选项打开才能使用。操作步骤如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;&nbsp;&nbsp; 打开IE 浏览器 &rarr; 选择菜单栏的&ldquo;工具&rdquo;&rarr; &ldquo;Internet 选项&rdquo;命令 &rarr; &ldquo;高级&rdquo;选项卡 &rarr; 将&ldquo;禁用脚本调试（Internet Explorer ）&rdquo;复选框中的勾去掉即可。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;&nbsp;&nbsp; 当IE 浏览器正在浏览页面时，运行Microsoft&nbsp; Script&nbsp; Debugger 调试器工具即可进行调试。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Microsoft&nbsp; Script&nbsp; Debugger 调试器的 Running&nbsp; Document 面板中选择开启的页面文件（只读），然后按F9 可以设置断点调试。另外，其Command&nbsp; Window 面板也是一个很有用的功能，它能在代码断点停止时，在其中输入变量名并回车，便可看到此时变量的值；Command&nbsp; Window 面板甚至可以接受简单的JavaScript 命令。但Microsoft&nbsp; Script&nbsp; Debugger 调试器自身还存在一个bug 问题。</p>
<p>原文出自：http://www.cnblogs.com/xugang/archive/2010/08/05/1793392.html</p>]]></description>
			<link>http://www.neatstudio.com/show-1415-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-06 08:36</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1407-1.shtml</guid>
			<title>为之漫笔：07~10精华文章</title>
			<author>gouki</author>
			<description><![CDATA[<p>突然间在google reader里看到<a href="http://www.cn-cuckoo.com/">为之漫笔</a>的订阅变成hello world，很是惊讶，后来才知道，是他的站点所在服务器硬盘坏了。这，确实是一件很痛苦的事情。不过所幸，他还是恢复了数据，然后他又选择了出国。额，好象越来越多的人选择了出国。</p>
<p>他在恢复数据后，对原来的文章进行了整理，把近年来一些优秀的文章提炼了出来，不过，目前还不是特别多：http://www.cn-cuckoo.com/the-good-parts-of-my-blogs-from-2007-to-2010，但已经有几篇了。</p>
<p>他是这么说的：【除了修补过往旧文，我还计划挑选整理一个《精华文章汇总》的页面，把那些价值相对较大的文章从&ldquo;垃圾&rdquo;堆里挑出来，摆在明面上。这样就不会过多地浪费读者 诸君的宝贵时间了。现在，这个页面<del>的链接</del>已经有了，今后还将不断充实：<a href="http://www.cn-cuckoo.com/the-good-parts-of-my-blogs" target="_blank">2007－2010年精华文 章汇总</a>。】</p>
<p>所以，又可以期待了。</p>
<p>其实，挺佩服李老师的，他认为：【然而，眼瞅着后台那些十根手指头都数不过来的Ping链接，我清醒地意识到还有不少站点在引用和转载我以前的文章。如果这些引用都变成了空链接，不仅我面 子上不好看，也会给不知道有多少读者学习深造带来极大不便。毕竟，在这个网络时代，作为其中的一个结点，我和这个站点都已经不再孤立存在了，而是与千千万 万的其他结点建立并保持了千丝万缕的联系。如果数据真的丢了，可让我怎么面对那些素未谋面，而将来又有可能谋面但因此又可能永远也不会再谋面的花朵一样灿 烂的脸孔呢？想到这里，我原来如释重负的感觉一下子无影无踪了，一种因失职而难逃其咎的负罪感油然而生。】</p>
<p>我一直不敢換我的博客，其实也有类似的考虑。唉。。。当然我的外链可没有李老师那么多。</p>]]></description>
			<link>http://www.neatstudio.com/show-1407-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-03 08:09</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1404-1.shtml</guid>
			<title>jQuery：TAB切换</title>
			<author>gouki</author>
			<description><![CDATA[<p>没有什么特别的东西。主要就是有了一个延迟，但效果不是特别好。。将就点了。
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>$.fn.gTab&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(&nbsp;opts&nbsp;){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;options&nbsp;=&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'timer'</span><span>:0,&nbsp;&nbsp;</span><span class="comment">//0.005秒</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'hover'</span><span>:</span><span class="string">''</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'target'</span><span>:</span><span class="string">''</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'autoswitch'</span><span>:</span><span class="keyword">false</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'addClass'</span><span>:</span><span class="string">''</span><span>,&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="string">'removeClass'</span><span>:</span><span class="string">''</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;self&nbsp;=&nbsp;$(</span><span class="keyword">this</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;opts&nbsp;=&nbsp;$.extend(<span class="keyword">true</span><span>,&nbsp;{},options,opts&nbsp;||&nbsp;{});&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!opts.target){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">'对不起，请设置目标对象'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!opts.hover){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opts.hover&nbsp;=&nbsp;self;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;hoverIntervalFunc&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(index){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;setInterval(</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(opts.target+<span class="string">':not(eq('</span><span>+index+</span><span class="string">'))'</span><span>).hide();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(opts.hover+<span class="string">':not(eq('</span><span>+index+</span><span class="string">'))'</span><span>).removeClass(opts.addClass).addClass(opts.removeClass);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(opts.target+<span class="string">':eq('</span><span>+index+</span><span class="string">')'</span><span>).show();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(opts.hover+<span class="string">':eq('</span><span>+index+</span><span class="string">')'</span><span>).removeClass(opts.removeClass).addClass(opts.addClass);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},opts.timer);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="keyword">this</span><span>).hover(&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;index&nbsp;=&nbsp;self.index(</span><span class="keyword">this</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cId&nbsp;=&nbsp;hoverIntervalFunc(index);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearInterval(cId);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
花了半小时写的。所以效果一些都没有特别的考虑。只考虑实现就完事了。。。象很多都是用的:eq和:not(:eq)，事实上siblings()已经实现这个功能，但当时写的时候没翻到这个函数，就直接用:not(:eq)来解决了。</p>]]></description>
			<link>http://www.neatstudio.com/show-1404-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-08-02 14:51</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1400-1.shtml</guid>
			<title>jQuery 层隐藏</title>
			<author>gouki</author>
			<description><![CDATA[<p>jQuery做二级菜单（模仿京东），非常方便，只需要hover就行了。<br />
正好完成一个mouseover和mouseout就实现这个功能了，但是，如果菜单需要延迟关闭或者通过其他形式来关闭就有点不方便了。</p>
<p>现在网上的很多现成的，都是把子菜单层放在mouseover对象的层内。所以mouseover,mouseout的时候就不用担心了，只要over的时候show,out的时候hide就成了。</p>
<p>不过，我昨天接到的是分别处于两个不同的div，两个div是并级关系。。于是就写了以下代码。
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>$(</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'.first_div&nbsp;li'</span><span>).hover(&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;selId&nbsp;=&nbsp;$(</span><span class="keyword">this</span><span>).index(</span><span class="string">'.first_div&nbsp;li'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;_self&nbsp;=&nbsp;</span><span class="keyword">this</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;=&nbsp;setTimeout(<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'img'</span><span>,_self).attr(</span><span class="string">'src'</span><span>,$(</span><span class="string">'img'</span><span>,_self).attr(</span><span class="string">'src'</span><span>).replace(</span><span class="string">'normal'</span><span>,</span><span class="string">'lightened'</span><span>));&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'#second_div'</span><span>).show();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'.sub1_div:eq('</span><span>+selId+</span><span class="string">')'</span><span>).show().siblings().hide();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},250)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'img'</span><span>,</span><span class="keyword">this</span><span>).attr(</span><span class="string">'src'</span><span>,$(</span><span class="string">'img'</span><span>,</span><span class="keyword">this</span><span>).attr(</span><span class="string">'src'</span><span>).replace(</span><span class="string">'lightened'</span><span>,</span><span class="string">'normal'</span><span>));&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//$('#second_div').hide()</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(t);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'.absLeftMenu'</span><span>).mouseout(</span><span class="keyword">function</span><span>(e){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;e&nbsp;=&nbsp;e&nbsp;||&nbsp;window.event,&nbsp;relatedTarget&nbsp;=&nbsp;e.toElement&nbsp;||&nbsp;e.relatedTarget;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>(relatedTarget&nbsp;&amp;&amp;&nbsp;relatedTarget&nbsp;!=&nbsp;</span><span class="keyword">this</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;relatedTarget&nbsp;=&nbsp;relatedTarget.parentNode;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!relatedTarget)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'#second_div'</span><span>).hide();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'.sub1_div&nbsp;li'</span><span>).mouseover(&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(<span class="string">'#sub2_div'</span><span>).show().html($(</span><span class="keyword">this</span><span>).children(</span><span class="string">'ul'</span><span>).html());&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;</span></li>
    <li class=""><span>})&nbsp;&nbsp;</span></li>
</ol>
</div>
主要也是自己想做个笔记，在absLeftMenu的mouseout的时候，默认一下子就关闭了子层。这样就造成子层会一闪一闪。所以上了上面的代码。。。（抄来的）</p>]]></description>
			<link>http://www.neatstudio.com/show-1400-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-07-30 17:36</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1398-1.shtml</guid>
			<title>JS小插件：图片轮换</title>
			<author>gouki</author>
			<description><![CDATA[<p>花了半小时写的插件，没有仔细测试和优化。应该还有优化的空间（绝对有）</p>
<p>页面的效果都是从其他地方拷来的，所以可能有点不对。。。将就点吧。。</p><br /><br /><a href="http://www.neatstudio.com/show-1398-1.shtml" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://www.neatstudio.com/show-1398-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-07-28 11:33</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1370-1.shtml</guid>
			<title>jQuery EasyUI Demo 修正</title>
			<author>gouki</author>
			<description><![CDATA[<p>对秀才的demo做了点简单的修正。<br />
1、index.html中的<br />
var _menus = { menu object };<br />
改为<br />
var _menus = [{xx}];<br />
这样的好处是，如果json是生成而来的也不受影响<br />
<br />
2、修改outlook.js<br />
在 InitLeftMenu()方法 增加一个判断：<br />
&nbsp;&nbsp;&nbsp; if( typeof _menus[0] != 'object'){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert('左侧菜单加载失败，请检查菜单数据来源');<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ;<br />
&nbsp;&nbsp;&nbsp; }<br />
搜索 _menus，改为_menus[0]<br />
<br />
--------------------------<br />
理由，因为大多数时间菜单是用程序生成的。如果不用[]包住就可能会出现<br />
var _menus = ;<br />
function test(){}<br />
这样，语法是错误的。用[]进行一下容错。<br />
-------------------------<br />
demo也不错，提供下载，但我在这个压缩包里没有进行修正【请需要的朋友自己修正吧】<br />
作者：疯狂秀才<br />
网站：http://hxling.cnblogs.com<br />
Demo：<a href="http://www.neatstudio.com/attachment.php?id=671" title="513.05 K, 下载次数:153" target="_blank">jquery-easyui 1.1 demo 修正.rar</a></p>]]></description>
			<link>http://www.neatstudio.com/show-1370-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-07-06 09:22</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1364-1.shtml</guid>
			<title>取消radio的选中状态</title>
			<author>gouki</author>
			<description><![CDATA[<p>一个简单的例子，是懒宝宝让我帮忙的。因为我自己也注意到了，radio在选中后，一般无法取消，查了一下google，发现还是有方法 的。因此，立马解决了：
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js&quot;</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">table</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;rs&quot;</span><span>&nbsp;</span><span class="attribute">border</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellspacing</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span>&nbsp;</span><span class="attribute">cellpadding</span><span>=</span><span class="attribute-value">&quot;0&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>HIV&nbsp;：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[0]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;HIV:阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[0]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;HIV:阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>梅毒：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[1]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;梅毒：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[1]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;梅毒：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>疱疹：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[2]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;疱疹：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[2]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;疱疹：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>淋病：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[3]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;淋病：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[3]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;淋病：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>非淋：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[4]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;非淋：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[4]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;非淋：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>湿疣：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[5]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;湿疣：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[5]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;湿疣：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>丙肝：阴&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[6]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;丙肝：阴&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;阳&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">input</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;radio&quot;</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;hiv[6]&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;丙肝：阳&quot;</span><span>&nbsp;</span><span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yang&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">td</span><span class="tag">&gt;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;cursor:pointer;&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">'allyin'</span><span class="tag">&gt;</span><span>全阴</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;cursor:pointer;&quot;</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">'allyang'</span><span class="tag">&gt;</span><span>全阳</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">'allempty'</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;cursor:pointer;&quot;</span><span class="tag">&gt;</span><span>重填</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>$(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;$('#allyin').click(function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(':input[<span class="attribute">union</span><span>=</span><span class="attribute-value">&quot;yin&quot;</span><span>]').attr('checked','checked');&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;$('#allyang').click(function(){&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(':input[<span class="attribute">union</span><span>=</span><span class="attribute-value">yang</span><span>]').attr('checked','checked');&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;$('#allempty').click(function(){&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(':input[<span class="attribute">union</span><span>=</span><span class="attribute-value">yang</span><span>]').each(function(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(this).attr('checked','checked');&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;<span class="attribute">tmp</span><span>&nbsp;=&nbsp;$(this)[0];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">tmp.checked</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">tmp</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">null</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;&nbsp;</span></li>
    <li class="alt"><span>});&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span class="tag">&lt;/</span><span class="tag-name">td</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">tr</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">table</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
因为用jquery的话，选中radion的方法很方便。所以，就尝试用这种方式解决了。。。但是用jquery无法取消checked状态，只能用原生js的方式才行（jquery是把元素都转换为对象，而不是DOM对象）</p>]]></description>
			<link>http://www.neatstudio.com/show-1364-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-07-02 21:58</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1361-1.shtml</guid>
			<title>ipad 越狱第二步：越狱spirit</title>
			<author>gouki</author>
			<description><![CDATA[<p>上文<a href="../../../show-1358-1.shtml">ipad 越狱第一步：备份数据</a>介绍了如何备份系统。这一次介绍如何越狱。</p>
<p>软件spirit在上文中有下载链接：<a href="../../../attachment.php?id=669" title="4.36 M,
下载次数:5" target="_blank">spirit.exe</a>【由于我讲的是win下面的方法，mac下的spirit就不提供了。】</p>
<p>OK让我们开始吧。</p>
<p>将spirit.exe拷到C盘根目录下或者某个目录下（目录名有要求，1、英文；2、没有空格）</p>
<p>然后接上线，运行spirit.exe，机器会自动重启，这时基本上就越狱成功了，因为你重启机器后会有cydia的软件在第二屏。根据他的提示下一步下一步就OK了。</p>
<p>当然需要更多的配置，比如：隐藏桌面图标、文件管理等等工具，就需要使用cydia提供的软件了。这里有一篇文章，介绍了很多常用工具，可以查看一下，文中有介绍几个source源需要通过cydia程序加进去（如果你采用了91助手，就更方便了）</p>
<p>文章地址：http://bbs.weiphone.com/read-htm-tid-820992.html</p>]]></description>
			<link>http://www.neatstudio.com/show-1361-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-07-01 13:47</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1359-1.shtml</guid>
			<title>司徒正美：自动执行函数</title>
			<author>gouki</author>
			<description><![CDATA[<p>司徒正美，不用多介绍了吧？博客园上，JS牛人。就象他说的，取名叫ruby并不一定就是玩ruby的（额，好象没记错）</p>
<p>上原文吧，因为我对JS的了解还处于较初级的阶段，所以关注的就比较多了，原文来自：http://www.cnblogs.com/rubylouvre/archive/2010/02/11/1667364.html，原文有JS的执行功能，可以尝试。</p>
<p>请看以下两个函数：
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;a(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;a&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;b&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="string">&quot;b&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
</ol>
</div>
它们俩有何不同呢？翻开书，作者会告诉我们，前者为函数声明，后者为函数表达式。函数声明作为一种声明，当然会在预编译阶级有所动作（声明提前），而函数 表达式则不会。另一个区别是，函数声明不能直接加一对括号让它们执行。第三个区别，表达式还可以继续细分，表达式是由常量，变量，操作符，函数等组合而 成，计算以后返回一个结果值，至少也会返回一个undefined。
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;a&nbsp;(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;a&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}();<span class="comment">//报错</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;b&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;alert(<span class="string">&quot;b&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>(<span class="keyword">function</span><span>&nbsp;foo(){});&nbsp;</span><span class="comment">//&nbsp;表达式：注意它被包含在分组操作符中</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;<span class="keyword">var</span><span>&nbsp;bar&nbsp;=&nbsp;</span><span class="keyword">function</span><span>&nbsp;foo(){};&nbsp;</span><span class="comment">//&nbsp;表达式，因为它是赋值表达式的一部分</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;<span class="keyword">new</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;bar(){};&nbsp;</span><span class="comment">//&nbsp;表达式，因为它是New表达式的一部分</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<p>给 function 外套一对括号(分组操作符)就不报错了，括号是表达式，是表达式就有返回值，所以可以在后面加一对括号让它们执行，再看
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>(</span><span class="keyword">function</span><span>&nbsp;&nbsp;a&nbsp;(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;a&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>})();<span class="comment">//没有问题</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<p>另外，我们知道，函数名的作用就是用来引用的，现在没用了，我们是不是可以把它去掉呢？
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>(</span><span class="keyword">function</span><span>&nbsp;&nbsp;(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(arguments.callee)&nbsp;&nbsp;</span></li>
    <li class="alt"><span>})();<span class="comment">//弹出自身</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<p>知道这个，我们就可以方便地递归自身了。如弄一个深拷贝函数
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;deepExtend&nbsp;=&nbsp;</span><span class="keyword">function</span><span>(destination,&nbsp;source)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">var</span><span>&nbsp;property&nbsp;</span><span class="keyword">in</span><span>&nbsp;source)&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(source[property]&nbsp;&amp;&amp;&nbsp;source[property].constructor&nbsp;&amp;&amp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source[property].constructor&nbsp;===&nbsp;Object)&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination[property]&nbsp;=&nbsp;destination[property]&nbsp;||&nbsp;{};&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arguments.callee(destination[property],&nbsp;source[property]);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span class="keyword">else</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destination[property]&nbsp;=&nbsp;source[property];&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;destination;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>};&nbsp;&nbsp;</span></li>
</ol>
</div>
</p>
<p>另外，从另一方便也启法了我们如何<strike>兼</strike>【廉】价地批量生产各种各样的自动执行函数。因为把函数转换为表达式的方法并不一定要靠分组操作符，我们还可以用 void操作符，~操作符，!操作符&hellip;&hellip;
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">void</span><span>&nbsp;</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}()&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>0,&nbsp;<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}();&nbsp;&nbsp;</span></li>
    <li class=""><span>-<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>+<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}();&nbsp;&nbsp;</span></li>
    <li class=""><span>!<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}();&nbsp;&nbsp;</span></li>
    <li class="alt"><span>~<span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}();&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="keyword">typeof</span><span>&nbsp;</span><span class="keyword">function</span><span>(){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;alert(<span class="string">&quot;司徒正美&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}();&nbsp;&nbsp;</span></li>
</ol>
</div>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>--EOF--</p>
<p>自动执行函数确实有意思。。。</p>]]></description>
			<link>http://www.neatstudio.com/show-1359-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-06-30 12:06</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1357-1.shtml</guid>
			<title>通过javascript的匿名函数来分析几段简单有趣的代码</title>
			<author>gouki</author>
			<description><![CDATA[<p>从PHP5.3起，也自带了匿名函数支持，只是它的支持并没有象js这样强大，风雪之隅测试过，可以查看：<a title="Permanent Link to 深入理解PHP之匿名函数" rel="bookmark" href="http://www.laruence.com/2010/06/20/1602.html">深入理解PHP之匿名函数</a>，而这篇文章对于匿名函数和new Object以及new Function()的应用，作了较为详细的介绍和测试，如果你在开发中遇到这些问题，产生疑惑了，可以借鉴一下。</p>
<p>今天在园子里闲逛，看到wsxjr（很邪恶地联想到&ldquo;我是下贱人&rdquo;，晕）写的<a target="_blank" href="http://www.cnblogs.com/sillyemperor/archive/2010/06/26/1765956.html" style="color: rgb(0, 0, 255);">Javascript匿名函数的一种应用：封装</a>一文，想起自己很久以前学习javascript的经历，也曾经碰到过几个由匿名函数造成的困扰（其中一个就是由<a target="_blank" href="http://www.cnblogs.com/jeffwongishandsome/archive/2009/05/17/1458405.html" style="color: rgb(0, 0, 255);">闭包</a>引起的），下面就整理几段简单代码讨论一下，让我们大家一起进步。 <br />
1、简单形式的封装调用
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;userName&nbsp;=&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>&nbsp;}&nbsp;();&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(userName);&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
上面的代码确实简单，我们可以逐步分解成下面的写法：
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;anonymousFunc&nbsp;=&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>&nbsp;};&nbsp;</span><span class="comment">//匿名函数&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;name&nbsp;=&nbsp;anonymousFunc();&nbsp;</span><span class="comment">//执行该函数&nbsp;返回人名&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(name);&nbsp;&nbsp;</span></li>
</ol>
</div>
2、new 一下Function的形式（大写Function）
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;a&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object();&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;b&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Function();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="comment">//alert(typeof&nbsp;(a));&nbsp;//object</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="comment">//alert(typeof&nbsp;(b));&nbsp;//function</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(a);&nbsp;<span class="comment">//[object&nbsp;Object]</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(b);&nbsp;<span class="comment">//匿名函数</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="comment">//alert(a&nbsp;==&nbsp;b);&nbsp;//false</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="comment">//alert(a&nbsp;===&nbsp;b);&nbsp;//false</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<pre name="code" class="csharp" style="display: none;">var a = new Object(); var b = new Function(); //alert(typeof (a)); //object //alert(typeof (b)); //function alert(a); //[object Object] alert(b); //匿名函数 //alert(a == b); //false //alert(a === b); //false</pre>
<p>正如你所看到的那样，我们new一个Object，变量a弹出的是[object Object],而new一个Function（注意，是大写Function），b在弹出的时候，生成了匿名函数。 既然b是匿名函数，函数当然可以执行，我们可以继续试试下面的代码验证自己的猜测：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>alert(b());&nbsp;</span><span class="comment">//undefined</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(a());&nbsp;<span class="comment">//脚本错误&nbsp;提示&ldquo;缺少函数&rdquo;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>3、new 一下function也大有乾坤（小写function）<br />
(1)、简单的空函数
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;func&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;};&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(<span class="keyword">typeof</span><span>&nbsp;(func));&nbsp;</span><span class="comment">//object</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(func);&nbsp;<span class="comment">//[object&nbsp;Object]</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="comment">//alert(func());&nbsp;//脚本错误&nbsp;func不是函数</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<pre name="code" class="csharp" style="display: none;">var func = new function() { }; alert(typeof (func)); //object alert(func); //[object Object] //alert(func()); //脚本错误 func不是函数</pre>
<p>其实上面的代码也就等价于下面的写法：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;anonymousClass()&nbsp;{&nbsp;}&nbsp;</span><span class="comment">//匿名类</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;instance&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;anonymousClass();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(<span class="keyword">typeof</span><span>&nbsp;(instance));</span><span class="comment">//object</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(instance);&nbsp;<span class="comment">//[object&nbsp;Object]</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre name="code" class="csharp" style="display: none;">function anonymousClass() { } //匿名类 var instance = new anonymousClass(); alert(typeof (instance));//object alert(instance); //[object Object]</pre>
<p>(2)、函数带个返回值的，也不是很难理解
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;func&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>&nbsp;};&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(<span class="keyword">typeof</span><span>&nbsp;(func));&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(func);&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="comment">//alert(func());&nbsp;//脚本错误&nbsp;缺少函数</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<pre name="code" class="csharp" style="display: none;">var func = new function() { return &quot;jeff wong&quot; }; alert(typeof (func)); alert(func); //alert(func()); //脚本错误 缺少函数</pre>
<p>其实上面的代码也就等价于下面的写法：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;anonymousClass()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>;&nbsp;}&nbsp;</span><span class="comment">//匿名类</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;instance&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;anonymousClass();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(<span class="keyword">typeof</span><span>&nbsp;(instance));</span><span class="comment">//object</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(instance);&nbsp;<span class="comment">//[object&nbsp;Object]</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>（3）、还是函数带个返回值的，写法稍微有点不同</p>
<p>下面的代码请注意和（2）中的区分一下，因为接下来要重点讨论的就是那一点点的不同书写形式：
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;func&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;String(</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>);&nbsp;};&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(<span class="keyword">typeof</span><span>&nbsp;(func));&nbsp;</span><span class="comment">//object&nbsp;意料之中</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(func);&nbsp;<span class="comment">//这里?!</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="comment">//alert(func());&nbsp;//脚本错误&nbsp;缺少函数</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<pre name="code" class="csharp" style="display: none;">var func = new function() { return new String(&quot;jeff wong&quot;); }; alert(typeof (func)); //object 意料之中 alert(func); //这里?! //alert(func()); //脚本错误 缺少函数</pre>
<p>上面代码的等价形式依然简单：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;anonymousClass()&nbsp;{&nbsp;</span><span class="keyword">return</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;String(</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>);&nbsp;}&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;instance&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;anonymousClass();&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(<span class="keyword">typeof</span><span>&nbsp;(instance));&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(instance);&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>已经运行看到结果了吗？没错，第三种写法我们在弹出func或者instance的时候，都出人意料地得到了一段字符串&quot;jeff wong&quot;。细心比较（2）和（3）中的代码，除了return处的写法稍有不同之外，两处代码几乎完全一致，所以我们推断，毫无疑问，是new String的形式让我们的函数产生了意想不到的效果。 为什么会这样呢？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原来，在javascript中，只要在new表达式之后的constructor返回（return）一个原始类型（无return时其实是return原始类型undefined，如（1）），比如第（2）种写法，那么就返回new创建的匿名对象；而<span style="color: red;">如果new表达式之后的constructor返回一个引用对象，比如对象（Object），函数（function）及数组（Array）等等，那么返回的该引用对象就将覆盖new创建的匿名对象</span>。现在再来分析（3）中的写法，由于new String会构造一个字符串引用对象，它就覆盖了new所创建的匿名对象，而new String的所指向引用值是&ldquo;jeff wong&rdquo;，所以弹出的必然是当前new String所分配的值。</p>
<p>　　最后，留个思考题，大家看看下面的代码返回什么结果：</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;func&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;</span><span class="keyword">function</span><span>()&nbsp;{&nbsp;</span><span class="keyword">var</span><span>&nbsp;str&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String(</span><span class="string">&quot;jeff&nbsp;wong&quot;</span><span>);&nbsp;</span><span class="keyword">return</span><span>&nbsp;str;&nbsp;};</span><span class="comment">//再换种写法</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="comment">//alert(typeof&nbsp;(func));&nbsp;//object&nbsp;意料之中</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(func);&nbsp;<span class="comment">//猜一下这里应该是什么结果？</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>原文来自于：http://www.cnblogs.com/jeffwongishandsome/archive/2010/06/27/1766207.html<br />
作者：Jeff Wong</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description>
			<link>http://www.neatstudio.com/show-1357-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-06-28 08:09</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1326-1.shtml</guid>
			<title>jQuery的事件绑定命名空间</title>
			<author>gouki</author>
			<description><![CDATA[<p>jQuery的bind的函数在实际应用中用的不是特别多，只是他可以绑定一个事件，但不会即时触发，也可以通过unbind来解除绑定。在没有看到这篇文章之前，我一直不知道原来bind也可以有命名空间。事实上，我看完这篇文章后，再去翻了一下手册，也才发现了一点点的注释。但手册也仅仅是一句话就带过去了。没有过多的深究，或许他认为命名空间这玩意很简单，没有必要多解释？</p>
<p>先看手册，由于bind方法有三个参数(type,[data],fn)，所以手册上这么介绍：
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span>.bind()&nbsp;方法是用于往文档上附加行为的主要方式。所有JavaScript事件对象，比如focus,&nbsp;mouseover,&nbsp;和&nbsp;resize，都是可以作为type参数传递进来的。&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>jQuery还提供了一些绑定这些标准事件类型的简单方式，比如.click()用于简化.bind('click')。一共有以下这些：blur,&nbsp;focus,&nbsp;focusin,&nbsp;focusout,&nbsp;load,&nbsp;resize,&nbsp;scroll,&nbsp;unload,&nbsp;click,&nbsp;dblclick,&nbsp;mousedown,&nbsp;mouseup,&nbsp;mousemove,&nbsp;mouseover,&nbsp;mouseout,&nbsp;mouseenter,&nbsp;mouseleave,&nbsp;change,&nbsp;select,&nbsp;submit,&nbsp;keydown,&nbsp;keypress,&nbsp;keyup,&nbsp;error&nbsp;。&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>任何作为type参数的字符串都是合法的；如果一个字符串不是原生的JavaScript事件名，那么这个事件处理函数会绑定到一个自定义事件上。这些自定义事件绝对不会由浏览器触发，但可以通过使用.trigger()或者.triggerHandler()在其他代码中手动触发。&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><font color="#ff6600">如果type参数的字符串中包含一个点(.)字符，那么这个事件就看做是有命名空间的了。这个点字符就用来分隔事件和他的命名空间。举例来说，如果执行&nbsp;.bind('click.name',&nbsp;handler)&nbsp;，那么字符串中的&nbsp;click&nbsp;是事件类型，而字符串&nbsp;name&nbsp;就是命名空间。命名空间允许我们取消绑定或者触发一些特定类型的事件，而不用触发别的事件。参考unbind()来获取更多信息。</font>&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>当一个事件传到一个元素上，所有绑定在上面的针对哪个事件的处理函数都会触发。如果注册了多个事件处理函数，总是按照绑定的顺序依次触发。当所有绑定的事件处理函数执行完毕后，事件继续沿着普通的事件冒泡途径上浮。&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
Zeal这么理解，并解析了上面的一段：
<div class="codeText">
<div class="codeHead">http://www.zeali.net/entry/649</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span>jQuery的&nbsp;bind&nbsp;/&nbsp;unbind&nbsp;方法应该说使用很简单，而且大多数时候可能并不会用到，取而代之的是直接用&nbsp;click&nbsp;/&nbsp;keydown&nbsp;之类的事件名风格的方法来做事件绑定操作。&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>但假设如下情况：需要在运行时根据用户交互的结果进行不同click事件处理逻辑的绑定，因而理论上会无数次对某一个事件进行&nbsp;bind&nbsp;/&nbsp;unbind&nbsp;操作。但又希望&nbsp;unbind&nbsp;的时候只把自己绑上去的处理逻辑给释放掉而不是所有其他地方有可能的额外的同一事件绑定逻辑。&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>这时候如果直接用&nbsp;.click()&nbsp;/&nbsp;.bind('click')&nbsp;加上&nbsp;.unbind('click')&nbsp;来进行重复绑定的话，被&nbsp;unbind&nbsp;掉的将是所有绑定在元素上的&nbsp;click&nbsp;处理逻辑，潜在会影响到该元素其他第三方的行为。当然如果在bind的时候是显示定义了function变量的话，可以在unbind的时候提供&nbsp;function作为第二个参数来指定只unbind其中一个处理逻辑，但实际应用中很可能会碰到各种进行匿名函数绑定的情况。&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>对于这种问题，jQuery的解决方案是使用事件绑定的命名空间。即在事件名称后添加&nbsp;.something&nbsp;来区分自己这部分行为逻辑范围。&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><font color="#ff0000"><span>比如用&nbsp;.bind('click.myCustomRoutine',function(){...});&nbsp;同样是把匿名函数绑定到&nbsp;click&nbsp;事件（你可以用自己的命名空间多次绑定不同的行为方法上去），当unbind的时候用&nbsp;.unbind('click.myCustomRoutine')&nbsp;即可释放所有绑定到&nbsp;&nbsp;.myCustomRoutine&nbsp;命名空间的&nbsp;click&nbsp;事件，而不会解除其他通过&nbsp;.bind('click')&nbsp;或另外的命名空间所绑定的事件行为。&nbsp;&nbsp;</span></font></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>同时，使用命令空间还可以让你一次性&nbsp;unbind&nbsp;所有此命名空间下的自定义事件绑定，通过&nbsp;.unbind('.myCustomRoutine')&nbsp;即可。&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>要注意的是，jQuery的命名空间并不支持多级空间。因为在jQuery里面，如果用&nbsp;.unbind('click.myCustomRoutine.myCustomSubone')&nbsp;，解除的是命名空间分别为&nbsp;myCustomRoutine&nbsp;和&nbsp;myCustomSubone&nbsp;的两个并列命名空间下的所有&nbsp;click&nbsp;事件，而不是&nbsp;&quot;myCustomRoutine&nbsp;下的&nbsp;myCustomSubone&nbsp;子空间&quot;。&nbsp;&nbsp;</span></li>
</ol>
</div>
</p>
<p>如此看来，命名空间还是有点用的。只是不知道会有多少人用得上这个功能（不开发插件的人，估计永远用不到吧？）我也是仅作一下笔记而已</p>]]></description>
			<link>http://www.neatstudio.com/show-1326-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-06-11 09:17</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1301-1.shtml</guid>
			<title>js的几个简单互换(ord and chr)</title>
			<author>gouki</author>
			<description><![CDATA[<p>在PHP中可以直接对字符串进行比较，比如
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="vars">$a</span><span>&nbsp;=&nbsp;</span><span class="string">'A'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="vars">$b</span><span>&nbsp;=&nbsp;</span><span class="string">'B'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>var_dump(&nbsp;<span class="vars">$a</span><span>&nbsp;&gt;&nbsp;</span><span class="vars">$b</span><span>);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</p>
<p>当然，在JS中也可以
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;s&nbsp;=&nbsp;</span><span class="string">'A'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;t&nbsp;=&nbsp;</span><span class="string">'B'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(&nbsp;s&nbsp;&lt;&nbsp;t);&nbsp;&nbsp;</span></li>
</ol>
</div>
</p>
<p>为什么可以比大小呢？那是因为，他们是直接转成ascii值来进行比较的，PHP中是 ord($a) 转成了65，B就是66了，所以$a&gt;$b是返回false</p>
<p>PHP有两个函数用来互换，一个是ord，一个是chr，那么js中怎么办呢？也有，一个是charCodeAt()，一个是fromCharCode();看例子吧。。。</p>
<p>
<div class="codeText">
<div class="codeHead">PHP代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>&lt;?php&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="vars">$a</span><span>&nbsp;=&nbsp;</span><span class="string">'A'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="func">echo</span><span>&nbsp;ord(</span><span class="vars">$a</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="func">echo</span><span>&nbsp;</span><span class="func">chr</span><span>(&nbsp;ord(</span><span class="vars">$a</span><span>)&nbsp;);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;s=&nbsp;</span><span class="string">'A'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(&nbsp;s.charCodeAt()&nbsp;);&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="comment">//var&nbsp;t&nbsp;=&nbsp;s.charCodeAt();</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(&nbsp;String.fromCharCode(&nbsp;s.charCodeAt()&nbsp;)&nbsp;);&nbsp;&nbsp;</span></li>
</ol>
</div>
js中对于fromCharCode和php不太一样了。</p>]]></description>
			<link>http://www.neatstudio.com/show-1301-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-05-26 10:09</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1291-1.shtml</guid>
			<title>JS的几个简单互换[处理URL]</title>
			<author>gouki</author>
			<description><![CDATA[<p>js没有parse_str这个函数，因此，对于querystring就要自己写了。<br />
还好，在location这个对象里，对于querystring都是包含着的。于是乎就有了下面两个处理方式，很简单，没有做任何转换。。。只是演示而己</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>var&nbsp;</span><span class="attribute">param1</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">'name=123&amp;psw=321&amp;sex=男'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>var&nbsp;<span class="attribute">param2</span><span>&nbsp;=&nbsp;{name:&nbsp;'123',psw:&nbsp;'321',&nbsp;sex:&nbsp;'男'};&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p align="left">从param1转为param2
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;param1&nbsp;=&nbsp;</span><span class="string">'name=123&amp;psw=321&amp;sex=男'</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">var</span><span>&nbsp;s&nbsp;=&nbsp;param1.split(</span><span class="string">&quot;&amp;&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;param2&nbsp;=&nbsp;{};&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;i=0;i&lt;s.length;i++){&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;d=s[i].split(</span><span class="string">&quot;=&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;eval(<span class="string">&quot;param2.&quot;</span><span>+d[0]+</span><span class="string">&quot;&nbsp;=&nbsp;'&quot;</span><span>+d[1]+</span><span class="string">&quot;';&quot;</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="comment">//可以用for循环打印&nbsp;param2&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">for</span><span>(i&nbsp;</span><span class="keyword">in</span><span>&nbsp;param2){&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;alert(i+<span class="string">'&nbsp;--&nbsp;'</span><span>+param2[i]);&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>}&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
</p>
<p>从param2转为param1</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;arr&nbsp;=&nbsp;[];&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="keyword">for</span><span>(i&nbsp;</span><span class="keyword">in</span><span>&nbsp;param2){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;arr.push(&nbsp;i&nbsp;+&nbsp;<span class="string">&quot;=&quot;</span><span>&nbsp;+&nbsp;param2[i]);&nbsp;</span><span class="comment">//根据需要这里可以考虑escape之类的操作</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>alert(arr.join(<span class="string">&quot;&amp;&quot;</span><span>))&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;当然应该有更好的办法，我这里只是简单处理一下</p>]]></description>
			<link>http://www.neatstudio.com/show-1291-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-05-21 17:32</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1290-1.shtml</guid>
			<title>非得这么残忍吗？</title>
			<author>gouki</author>
			<description><![CDATA[<p>司徒正美在看到老赵的博客鄙视IE6用户时，不甘寂寞，放出了一段残忍的代码，可以对IE6、7进行封杀处理。。</p>
<p>代码如下：
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span>&lt;!doctype&nbsp;html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">charset</span><span>=</span><span class="attribute-value">&quot;utf-8&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;IE=8&quot;</span><span>&nbsp;</span><span class="attribute">http-equiv</span><span>=</span><span class="attribute-value">&quot;X-UA-Compatible&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;keywords&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;IE6与IE7封杀器&nbsp;by&nbsp;司徒正美&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;description&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;IE6与IE7封杀器&nbsp;by&nbsp;司徒正美&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">script</span><span>&nbsp;</span><span class="attribute">type</span><span>=</span><span class="attribute-value">&quot;text/javascript&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使用setAttribute也行，值好像是固定，为1（读作&quot;日&quot;，日得好！）&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.createElement(&quot;li&quot;)<span class="attribute">.value</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">1</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>IE6与IE7封杀器&nbsp;by&nbsp;司徒正美</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>杀！杀！杀！</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h2</span><span class="tag">&gt;</span><span>不行请刷新页面（这是运行框的问题）</span><span class="tag">&lt;/</span><span class="tag-name">h2</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">html</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
还有一段是可以关闭当前窗口的：
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="attribute">window.opener</span><span>=</span><span class="attribute-value">null</span><span>;window.open('','_self');window.close();&nbsp;&nbsp;</span></span></li>
</ol>
</div>
我的博客不能执行代码，如果你想测试，你可以到http://www.cnblogs.com/rubylouvre/archive/2010/05/18/1738370.html进行享受。</p>]]></description>
			<link>http://www.neatstudio.com/show-1290-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-05-20 11:55</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1271-1.shtml</guid>
			<title>jQuery Alert and YmPrompt</title>
			<author>gouki</author>
			<description><![CDATA[<p>不知道从什么时候起，网页上那烦人的alert,prompt,confirm框都成了很多人讨厌的对象，因为他的样式太丑了。ExtJS中的alert就是适合他自己的样式的弹出，可是其他不是框架的代码中要有漂亮的对话框怎么办？<br />
jQuery Alert 是jQuery的官方插件，Ymprompt是国内开发人员写的，其于jQuery的一个插件，当然是各有所长。</p>
<p>jQuery Alert相对比较简单一点，用法也简单，而Ymprompt就复杂的多了。</p>
<p>这是关于jQuery Alert的介绍：</p>
<div class="codeText">
<div class="codeHead">http://www.cnblogs.com/whitewolf/archive/2010/05/09/1731120.html，介绍请移步左边的链接</div>
<ol start="1" class="dp-xml">
    <li class="alt"><span><span>这个Jquery插件的目的是替代JavaScript的标准函数alert()，confirm（），和&nbsp;prompt（）。这个插件有如下这些特点：&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;1：这个插件可以使你可以支持你自己的css制定。使你的网站看起来更专业。&nbsp;&nbsp;&nbsp; <br />
    </span></li>
    <li class=""><span>&nbsp;&nbsp;2：允许你自定义对话框的标题。&nbsp;&nbsp;&nbsp; <br />
    </span></li>
    <li class=""><span>&nbsp;&nbsp;3：在ＩＥ７中，可以使你避免使用JavaScript&nbsp;的prompt（）函数带来的页面重新加载。&nbsp;&nbsp;&nbsp; <br />
    </span></li>
    <li class=""><span>&nbsp;&nbsp;4：这些方法都模拟了Windows的模式对话框。在你改变改变浏览器窗口大小时候，它能够自适应用户窗口的调整。&nbsp;&nbsp;&nbsp; <br />
    </span></li>
    <li class="alt"><span>&nbsp;&nbsp;5：如果你引入了jQuery&nbsp;UI&nbsp;Draggable&nbsp;plugin插件，那这个插件也可以被自由拖动。&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>而Ymprompt在这里有一个简单的介绍：http://www.ajaxbbs.net/test/ymPrompt4.0/demo.html，写的很多，但都是document，并非介绍，所以我就不贴了。</p>
<p>jQuery Alert在官方有的下载，我也就不提供啦。可以尝试一下。</p>
<p>在ThinkSNS中，用的是ymprompt，所以我才看了一下这玩意，但并非能够完全满足我的需求，如果仅仅使用简单的alert、prompt、confirm之类的，应该是够用了。</p>]]></description>
			<link>http://www.neatstudio.com/show-1271-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-05-10 09:21</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1261-1.shtml</guid>
			<title>JS:截取文章一部分显示(无损html)</title>
			<author>gouki</author>
			<description><![CDATA[<p>很多做站的朋友都会有一个问题，在显示摘要的时候，如果摘要前有很多图片，那么显示出来的页面是不太正常的。比如，摘要显示100个字符，可是如果前面有很多图片，去掉图片代码后，100个字符已经几乎用完了。怎么办？<br />
我个人是这样处理的。在PHP中，先用strip_tags去除内容中的标签，然后trim一下，再进行截取。这样的话就几乎没有什么问题了。<br />
而这篇文章就有点意思，用作者的话来说，是无损html。来吧看看他写的内容。<br />
<br />
最近在做一些内容搜索的工作，搜索出来的内容为html格式，列表部分需要显示每项内容的一部分。因为是html格式的内容，直接截取内容的前多少字符显 然不合适了。而如果直接去掉所有html格式然后再截取又无法达到想要的效果，再网上搜了一通之后，写下如下代码应该可以满足基本的要求了。(js写的， 因为容易调试)</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;br&nbsp;=&nbsp;{};&nbsp;&nbsp;</span></span></li>
    <li class=""><span>br.spTags&nbsp;=&nbsp;[<span class="string">&quot;img&quot;</span><span>,</span><span class="string">&quot;br&quot;</span><span>,</span><span class="string">&quot;hr&quot;</span><span>];</span><span class="comment">/*不需要成对出现的标记*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>br.contain&nbsp;=&nbsp;<span class="keyword">function</span><span>(arr,it){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;i=0,len=arr.length;i&lt;len;i++){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(arr[i]==it){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">true</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>br.subArtc&nbsp;=&nbsp;<span class="keyword">function</span><span>(article,worldNum){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;result&nbsp;=&nbsp;[];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*首先截取需要的字串*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;wcount&nbsp;=&nbsp;0;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;startTags&nbsp;=&nbsp;[],endTags&nbsp;=&nbsp;[];&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;isInTag&nbsp;=&nbsp;</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;i=0,len=article.length;i&lt;len;i++){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;w&nbsp;=&nbsp;article[i];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.push(w);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(w==</span><span class="string">&quot;&lt;&quot;</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInTag&nbsp;=&nbsp;<span class="keyword">true</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!isInTag){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wcount++;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(wcount==worldNum){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">break</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(w==</span><span class="string">&quot;&gt;&quot;</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInTag&nbsp;=&nbsp;<span class="keyword">false</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*对字串进行处理*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;j=0;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;isInTag&nbsp;=&nbsp;<span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;isStartTag&nbsp;=&nbsp;</span><span class="keyword">true</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;tagTemp&nbsp;=&nbsp;</span><span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>(j&lt;i){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;=&nbsp;result[j];&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(isInTag){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(w==</span><span class="string">&quot;&gt;&quot;</span><span>&nbsp;||&nbsp;w==</span><span class="string">&quot;&nbsp;&quot;</span><span>&nbsp;||&nbsp;w==</span><span class="string">&quot;/&quot;</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInTag&nbsp;=&nbsp;<span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(isStartTag){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startTags.push(tagTemp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endTags.push(tagTemp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tagTemp&nbsp;=&nbsp;<span class="string">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(isInTag){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tagTemp+=w;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(w==</span><span class="string">&quot;&lt;&quot;</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isInTag&nbsp;=&nbsp;<span class="keyword">true</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(result[j+1]==</span><span class="string">&quot;/&quot;</span><span>){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isStartTag&nbsp;=&nbsp;<span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<span class="keyword">else</span><span>{&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isStartTag&nbsp;=&nbsp;<span class="keyword">true</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*剔除img,br等不需要成对出现的标记*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;newStartTags&nbsp;=&nbsp;[];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">var</span><span>&nbsp;x=0,len=startTags.length;x&lt;len;x++){&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>(!br.contain(br.spTags,startTags[x])){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newStartTags.push(startTags[x]);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">/*添加没有的结束标记*/</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;unEndTagsCount&nbsp;=&nbsp;newStartTags.length&nbsp;-&nbsp;endTags.length;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">while</span><span>(unEndTagsCount&gt;0){&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.push(<span class="string">&quot;&lt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.push(<span class="string">&quot;/&quot;</span><span>)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.push(newStartTags[unEndTagsCount-1]);&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result.push(<span class="string">&quot;&gt;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unEndTagsCount--;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;result.join(</span><span class="string">&quot;&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>};&nbsp;&nbsp;</span></li>
</ol>
</div>
<p>基本思路：</p>
<p>1.绕过标记，取得实际内容字数 ，如需要显示内容前100个字，绕过标记检索，得到第一百个字实际的索引。然后截取此索引前面的字串。<br />
2.根据一得到的字串，得到这个字串中存在的开始标记和结束标记。注：此处的开始标记标识以&quot;&lt;&quot;开通，且下一个字符不为&quot;/&quot;。<br />
3.剔除2中 得到的开始标记中的不需要成对出现的标记。如br,img,hr等。<br />
4.对比经过3处理的开始标记和2中得到的结束标记，没有配成对的在合适的位置为其配对。</p>
<p>此功能没有经过严格的测试，大家若有兴趣可以可以帮忙测试，有更好的想法的也可以回帖讨论。&nbsp;</p>
<p>--EOF--http://www.cnblogs.com/bravfing/archive/2010/05/02/1725924.html</p>
<p>我没有用PHP的试过，因为在PHP中本身对多字节的支持就不是特别的好不象js，认为中文就是一个字符。不过思路可以考虑一下，但真正要显示摘要的话，当然还是不要含 HTML代码，因为那可能会影响页面布局。</p>
<p>&nbsp;</p>]]></description>
			<link>http://www.neatstudio.com/show-1261-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-05-04 11:23</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1247-1.shtml</guid>
			<title>用按位或操作将 浮点数 转成 整数</title>
			<author>gouki</author>
			<description><![CDATA[<p>看到一篇<a href="http://www.cnblogs.com/ioriwellings/archive/2010/03/11/1683178.html">文章</a>，是这样说的：</p>
<div>use  bitwish&nbsp;Operators &quot;|&quot; &nbsp;Convert a floating-point value to an int</div>
<div>意思就是：<br />
<div>由于位操作只对整型才有意义,所以表达式中的浮点数会首先被js解析器转换成整型.</div>
<div>然后再用js解析器本身的语言(例如:c++)的或操作将算 运符两边的数值运算,所以该例的结果得到整数1.</div>
</div>
<p>&nbsp;</p>
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol start="1" class="dp-c">
    <li class="alt"><span><span>alert(0|</span><span class="string">'123.55'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>alert(parseInt(<span class="string">'123.55'</span><span>));&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>alert(Math.round(<span class="string">'123.55'</span><span>));&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>上面三种都可以转成int，但是math.round会四舍五入。</p>]]></description>
			<link>http://www.neatstudio.com/show-1247-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-04-28 09:56</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1246-1.shtml</guid>
			<title>javascript:void(0);</title>
			<author>gouki</author>
			<description><![CDATA[<p>我看的这篇文章介绍的很少，只是一个简单的说明，在网页中，很多人把void当成了一个阻止默认事件发生的工具，因为他没有返回值，所以使用的时候可以肆无忌惮一点。<br />
<br />
原文如下：</p>
<p>Javascript中void是一个操作符，该操作符指定要计算一个表达式但是不返回值。<br />
<br />
void 操作符用法格式如下：<br />
1.  javascript:void (expression)<br />
2. javascript:void expression<br />
注：expression  是一个要计算的 Javascript 标准的表达式，圆括号是可选的。</p>
<p>当使用 void 操作符指定的超链接时，表达式会被计算但是不会在当前文档处装入任何内容。</p>
<p>举例：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">A</span><span>&nbsp;</span><span class="attribute">HREF</span><span>=</span><span class="attribute-value">&quot;javascript:void(0)&quot;</span><span class="tag">&gt;</span><span>单此处什么也不会发生</span><span class="tag">&lt;/</span><span class="tag-name">A</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">A</span><span>&nbsp;</span><span class="attribute">HREF</span><span>=</span><span class="attribute-value">&quot;javascript:void(document.form.submit())&quot;</span><span class="tag">&gt;</span><span>单此处提交表单</span><span class="tag">&lt;/</span><span class="tag-name">A</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>跳转的几种办法：</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml" start="1">
    <li class="alt"><span><span>1.window.open(&quot;url&quot;)&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>2.&nbsp;用自定义函数&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;openWin(obj,target,args)&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">obj.target</span><span>=</span><span class="attribute-value">&quot;_blank&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="attribute">obj.href</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">target</span><span>+&quot;?</span><span class="attribute">stationno</span><span>=&quot;+args;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.click();&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">a</span><span>&nbsp;</span><span class="attribute">href</span><span>=</span><span class="attribute-value">&quot;javascript:void(0)&quot;</span><span>&nbsp;</span><span class="attribute">onclick</span><span>=</span><span class="attribute-value">&quot;openWin(this,&quot;</span><span>&hellip;&hellip;&hellip;&hellip;&quot;,3)&quot;</span><span class="tag">&gt;</span><span>XXXX</span><span class="tag">&lt;/</span><span class="tag-name">a</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="attribute"><font color="#000000">3.</font>window.location.href</span><span>=</span><span class="attribute-value">&quot;&quot;</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;</p>
<p>上述第二种就是所谓利用void来阻止默认链接事情的发生。<br />
还有一种情况就是在href里加入&quot;###&quot;，即href=&quot;###&quot;，为什么是3个而不是一个？这也有一个缘故，请查看：<a href="http://www.neatstudio.com/show-681-1.shtml">FORM不能跳转</a>，当找不到相应的锚点时，页面才不会往上滚动，如果指定锚点，而锚点名称为空，页面会滚动到顶部。###,其实只是指定一个不存在的锚点而已（又写的乱了）</p>]]></description>
			<link>http://www.neatstudio.com/show-1246-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-04-28 09:08</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1243-1.shtml</guid>
			<title>雅虎JavaScript架构师：网页开发技术安全优先</title>
			<author>gouki</author>
			<description><![CDATA[<p>html5 越来越近了，HTML5可能给我们带来很大的改变，就象新的标签可以支持视频了。看看javascript的架构师能够做什么吧。原文来自http://www.cnbeta.com/articles/109538.htm<br />
<br />
由于当前技术仍偏向功能强化为主要思维，指令码趋向庞杂的结果，容易产生更多安全漏洞，且失去快速因应攻击调整架构的灵活性。<br />
<strong>身 为JavaScript网路技术重要推手的雅虎（Yahoo!）架构设计师Douglas  Crockford表示，现行网页开发技术思维仍偏重多媒体功能或浏览效能的提升，未来应以安全为第一优先。</strong> 		Crockford 现为Yahoo!资深JavaScript架构师，负责YUI（Yahoo! User Interface）的架构设计，并且担任ECMA JavaScript 2.0技术委员会成员，为JavaScript开发社群大师级人物，此次受邀来台参加OSDC（Open Source Developer's Conference Taiwan）进行专题演讲，向国内开发者介绍ECMA JavaScript的发展。<br />
<br />
Crockford向媒体阐述网络技术发展时指出，当前的网络技术仍然不脱过去的思维，网页开发技术仍以功能强化、浏览网页效能提升为主，虽然强 化了网络开发的丰富性，但未将网络安全列为开发优先考虑因素的结果，致使网络安全事件层出不穷。<br />
<br />
延续过去网络开发思维的结果，现今网络技 术强调强大的互动、多媒体功能，但也让一些攻击手法兴起，以XSS（Cross-Site Scripting）为例，由于内嵌多个不同来源的脚本，容易让黑客借指令集趁虚而入，窃取用户端计算机的数据。<br />
<br />
虽然也有新的技术，如 Google推动的Caja，用以防范XSS跨站攻击手法，但整体技术发展方向仍是朝功能、效能提升前进。<br />
<br />
以HTML 5技术为例，Crockford表示，虽然HTML5增加了许多功能，但让整个脚本变得更为庞大且复杂，容易产生漏洞遭到攻击；另外，支持存取使用者电 脑、手机的终端数据，将数据被窃的安全风险扩大至手机上，而过于庞大复杂的结果，不容易因应日新月异的攻击手法改变，长期而言易形成安全风险。<br />
<br />
对 于当前浏览器业者形成速度竞赛，纷纷强化JavaScript引擎加速网页浏览速度，号称最快的浏览速度，他认为，浏览器加速网页浏览速度虽是好事，但这 样改善方式有限，只在5至10%的终端浏览器部份加速，若能同时改善服务器端，加速的效果更大。<br />
<br />
对于制定中的新标准ECMA Script 5，他乐观预期未来将成为主要的网络开发标准，虽然Apple、Chrome还不明确，但包括IE、FireFox、Opera都倾向ECMA Script 5，今年应会看到新的浏览器应用。<br />
--EOF--<br />
HTML5已经被越来越多的浏览器所支持，IE还能挺多久？是否又会创造出什么新标准？从IE4开始，多少网页设计师为了兼容所有的浏览器而痛苦？以后又会怎么样？IE6还有这么多用户，怎么办？这一些都让人迷惘啊。HTML5来了，对于前端工程师的压力就要更大一点了。代码没写好，很可能就直接被人利用了。以前的XSS漏洞可能会被更加扩大、放大。还是需要多学一点安全了</p>]]></description>
			<link>http://www.neatstudio.com/show-1243-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-04-26 21:30</pubDate>
		</item>
		<item>
			<guid>http://www.neatstudio.com/show-1241-1.shtml</guid>
			<title>在非IE浏览器中实现“灰阶化[1]”</title>
			<author>gouki</author>
			<description><![CDATA[<p><a rel="@qqtech" title="腾讯科技(@qqtech)" href="http://t.qq.com/qqtech"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">原文：</span></span></span></span></a><a target="_blank" href="http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/">http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/</a><br />
<br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><strong>在非IE浏览器中实现&ldquo;灰阶化[1]&rdquo;</strong></span></span></p>
<p><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">这个问题看似简单，实际上要付出很大的努力[2]。<wbr></wbr>要的结果很简单：在所有非IE浏览器中模拟Internet  Explorer浏览器的grayscale（灰度）滤镜。<wbr></wbr>然而，它的解决方法并非你想得那么简单，<wbr></wbr>这也让我着实大大地吃了一惊。<br />
<br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">在 IE中，grayscale滤镜可以应用到任意一个元素中，<wbr></wbr>它会很直观地将元素转变为灰度。<wbr></wbr>可以使用下面 这行复杂且专有的CSS来实现grayscale滤<wbr></wbr>镜。
<div class="codeText">
<div class="codeHead">JavaScript代码</div>
<ol class="dp-c" start="1">
    <li class="alt"><span><span>elem.style.filter&nbsp;=&nbsp;</span><span class="string">'progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)'</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;">
<pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><span style="color: rgb(0, 0, 79);"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">如上所示，在IE中实现这种效果简单是小菜一碟；然而，<wbr></wbr>在其他的浏览器中，需要引起很大的关注。<br /><br /><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">需要有两件情况值得考虑：图片元素和非图片元素。&ldquo;非图片&rdquo;<wbr></wbr>类元素实现十分简单：在当前文档中遍历每个元素，寻找类似&ldquo;<wbr></wbr>backgroundColor&rdquo;和 &ldquo;color&rdquo;的色彩属性，将它的RGB颜色值转换为灰度值。<wbr></wbr>有不少方法可以实现；注意我们这里不是说降低图片的饱和度；&ldquo;<wbr></wbr>灰阶化&rdquo;很明显跟它不一样。<br /><br /><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;"> <pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><span style="color: rgb(0, 0, 79);"><div class="codeText"><div class="codeHead">JavaScript代码</div><ol class="dp-c" start="1"><li class="alt"><span><span class="comment">//&nbsp;Desaturate:降低饱和度</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">function</span><span>&nbsp;RGBtoDesat(r,g,b)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span>&nbsp;average&nbsp;=&nbsp;(r&nbsp;+&nbsp;g&nbsp;+&nbsp;b)&nbsp;/&nbsp;3;&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">return</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>  r:&nbsp;average,&nbsp;&nbsp;</span></li><li class=""><span>  g:&nbsp;average,&nbsp;&nbsp;</span></li><li class="alt"><span>  b:&nbsp;average&nbsp;&nbsp;</span></li><li class=""><span>};&nbsp;&nbsp;</span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;Grayscale:灰阶化</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">function</span><span>&nbsp;RGBtoGrayscale(r,g,b)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="keyword">var</span><span>&nbsp;mono&nbsp;=&nbsp;parseInt(&nbsp;(0.2125&nbsp;*&nbsp;r)&nbsp;+&nbsp;(0.7154&nbsp;*&nbsp;g)&nbsp;+&nbsp;(0.0721&nbsp;*&nbsp;b),&nbsp;10&nbsp;);&nbsp;&nbsp;</span></span></li><li class=""><span><span class="keyword">return</span><span>&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>  r:&nbsp;mono,&nbsp;&nbsp;</span></li><li class=""><span>  g:&nbsp;mono,&nbsp;&nbsp;</span></li><li class="alt"><span>  b:&nbsp;mono&nbsp;&nbsp;</span></li><li class=""><span>};&nbsp;&nbsp;</span></li><li class="alt"><span>}&nbsp;&nbsp;</span></li></ol></div><br /></span></pre>
</span></span></span></span></span></span></span></pre>
<pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><span style="color: rgb(0, 0, 79);"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;"><span style="color: rgb(0, 0, 79);"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">因此，每个带颜色属性的元素要使用它来转为灰阶；<wbr></wbr>初始颜色用来重置属性值。<br /><br />我们的图片能否转为灰阶取决于两个因素；<wbr></wbr>一是浏览器必须要支持HTML5 canvas元素和它getImageData方法，<wbr></wbr>二是主机上的所有图片必须位于同一域名下；除此外，<wbr></wbr>主机上的图片不能脱离getImageData方法而不管它是否<wbr></wbr>支持[3]。Google Chrome浏览器和Safari（4以下版本）<wbr></wbr>由于不支持getImageData，先不作讨论。<wbr></wbr>其他的浏览器支持canvas元素，完全可以做到&ldquo;灰阶化&rdquo;<wbr></wbr>图片。<br /><br />实现这种方式是要&ldquo;手工&rdquo;遍历图片中的每一像素，<wbr></wbr>并应用我们用来设置CSS 颜色属性的RGBtoGrayscale函数。真要这样做的话，<wbr></wbr>浏览器绝对吃不消；<wbr></wbr>除非有极其快速的Javascript引擎来承受大图片处理的压<wbr></wbr>力。<br /><br />鉴于上面提到的原因，因此在任一个元素需要&ldquo;灰阶化&rdquo;前，<wbr></wbr>添加一个&ldquo;预置&rdquo;函数去运行显得尤为必要，<wbr></wbr>这个函数可以使用零超时递归技术[4]来避免耗死浏览器。<wbr></wbr>如果仅仅是小图片需要转换的话，不必使用&ldquo;预置&rdquo;函数，<wbr></wbr>可以直接使用这种暴力转换。<br /><br />为什么呢，这是为什么呢？<br /><br />你肯定想知道在&ldquo;灰阶化&rdquo;会有哪些应用。那么，比如说：<wbr></wbr>降低色彩以减少用户的视觉焦点，<wbr></wbr>以此来减少用户对你网站上五颜六色东西的关注；比如说，<wbr></wbr>光箱特效。像 vBulletin的论坛系统就使用了这种效果，<wbr></wbr>它会你点击离开时，将页面变灰；然后会弹出确认框，<wbr></wbr>这个确认框非很容易识别，因为它是页面中惟一的带色彩的东西。<br /><br />&ldquo;灰阶化&rdquo;<wbr></wbr>困扰我的真实原因是因为我很想知道是否有可能做到这个目的。<wbr></wbr>我已经知道在IE浏览器里有这个滤镜，<wbr></wbr>我还想看看在其他浏览器中能否模拟实现这种方便的特效。<wbr></wbr>我也知道这种特效可能被认为已经过时了，但这并不重要；<wbr></wbr>我仅仅是对实现它很感兴趣。</span></span> <pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><br /><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><strong>示例</strong><br /><br />我做了一个示例页面，上面有几个格斗士[5]的图片，<wbr></wbr>功能已经在这篇文章中说过了。注意，在Safari（小于4）<wbr></wbr>或才 Chrome（还有可能在Firefox老版本（V.2以前））<wbr></wbr>不起作用；不要忘了它仅仅是一个试验。<br /><a target="_blank" href="http://james.padolsey.com/demos/grayscale/">http://james.padolsey.com/demos/grayscale/</a><br /><br /><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><strong>使用方法</strong><br /><br />要对一个元素实现&ldquo;灰阶化&rdquo;需要调用 grayscale()函数，并将元素作为参数传递，比如：<br /><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;"><span style="color: rgb(170, 32, 99);"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"> <pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><div class="codeText"><div class="codeHead">JavaScript代码</div><ol class="dp-c" start="1"><li class="alt"><span><span class="keyword">var</span><span>&nbsp;el&nbsp;=&nbsp;document.getElementById(&nbsp;</span><span class="string">'myEl'</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li><li class=""><span>grayscale(&nbsp;el&nbsp;);&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;也可以传递一个DOM集合</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span><span class="comment">//&nbsp;(这样所有的元素都会得到&ldquo;灰度效果&rdquo;)</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>grayscale(&nbsp;document.getElementsByTagName(<span class="string">'div'</span><span>)&nbsp;);&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;<span class="comment">//也可以在jQuery对象集合中使用</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>grayscale(&nbsp;$(<span class="string">'div'</span><span>)&nbsp;);&nbsp;&nbsp;</span></span></li></ol></div></pre>
</span></span></span></span></span>
<pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">若要重置元素（返回到原来的颜色状态）<wbr></wbr>必须调用grayscale.reset()，<wbr></wbr>并将需要重置的元素作为参数传递：<br /><div class="codeText"><div class="codeHead">JavaScript代码</div><ol class="dp-c" start="1"><li class="alt"><span><span>grayscale.reset(&nbsp;el&nbsp;);&nbsp;&nbsp;</span></span></li><li class=""><span><span class="comment">//&nbsp;reset()同样可以接受DOM对象或jQuery对象集合参数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>grayscale.reset(&nbsp;$(<span class="string">'div'</span><span>)&nbsp;);&nbsp;&nbsp;</span></span></li></ol></div>其中的prepare函数，上面已经讲过了，<wbr></wbr>在有大图片要处理的情况下需要使用到，或者即使只是几个小图片。<wbr></wbr>注意大图片需要有一会儿的时间去处理（一张 300&times;300的PNG格式图片在&ldquo;预置&rdquo;<wbr></wbr>方式下需要耗费3秒钟的时间）。<div class="codeText"><div class="codeHead">JavaScript代码</div><ol class="dp-c" start="1"><li class="alt"><span><span>grayscale.prepare(&nbsp;document.getElementById(</span><span class="string">'myEl'</span><span>)&nbsp;);&nbsp;&nbsp;</span></span></li><li class=""><span><span class="comment">//&nbsp;同样可以接受DOM对象或jQuery对象集合参数</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>grayscale.prepare(&nbsp;$(<span class="string">'.gall_img'</span><span>)&nbsp;);&nbsp; <br /></span></span></li></ol></div><br />[完]<br /><br />注：<br /></span></span></pre>
</span></span></span></span></pre>
</span></span></span></span></span></span></span></span></pre>
</span></span></span></span></span></span></p>
<blockquote><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">[1]:灰阶化：原文grayscaling，意为&ldquo;<wbr></wbr>采取灰度标准&rdquo;，即灰阶化，将图片由彩色转为灰度；</span></span><br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">[2]原文为&rdquo;This started out as a little experiment and eventually turned into quite an endeavor.&ldquo;，可能存在翻译问题；</span></span><br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">[3]原文为&ldquo;externally hosted images cannot be passed into &lsquo;getImageData&rsquo; regardless of whether it&rsquo;s supported.&rdquo;，翻译存疑；</span></span><br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">[4]零超时递归技术：原文zero-timeout recursion technique，应为zero-time recursive technique；参见<a target="_blank" style="color: rgb(42, 93, 176);" href="http://en.wikipedia.org/wiki/Recursion_%28computer_science%29">http://en.<wbr></wbr>wikipedia.org/wiki/Recursion_(<wbr></wbr>computer_science)</a>；</span></span><br />
<span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;">[5]格斗士：原文blood-thirsty hunters，嗜血的猎人</span></span><br />
</blockquote>
<p>--EOF--<br />
灰阶化可以用在414或者512，值得用用喽。。。</p>
<p><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;">
<pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;"><span style="color: rgb(0, 0, 79);"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; font-family: arial,sans-serif; border-collapse: collapse;"><span style="word-spacing: 0px; font: medium Simsun; text-transform: none; color: rgb(0, 0, 0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate;"><span style="font-size: 13px; color: rgb(105, 70, 0); font-family: Verdana,Helvetica,Arial,sans-serif;"><span style="color: rgb(0, 0, 79);"><pre style="clear: none; overflow: visible; font-size: 13px; margin: 0px; width: auto; line-height: 1.333; font-family: monospace;">&nbsp;</pre>
</span></span></span></span></span></span></span></span></pre>
</span></span></span></span></span></span></p>
<p>&nbsp;</p>]]></description>
			<link>http://www.neatstudio.com/show-1241-1.shtml</link>
			<category domain="http://www.neatstudio.com/category-2-1.shtml">Javascript</category>
			<pubDate>2010-04-26 09:42</pubDate>
		</item>
	</channel>
</rss>
