﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-古木天琪‘BlogJava</title><link>http://www.blogjava.net/gumutianqi/</link><description>自己选择的路，跪着也要走完</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 19:04:08 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 19:04:08 GMT</pubDate><ttl>60</ttl><item><title>从 RequireJS 到 SeaJS（1）</title><link>http://www.blogjava.net/gumutianqi/archive/2011/12/22/367043.html</link><dc:creator>古木天琪</dc:creator><author>古木天琪</author><pubDate>Thu, 22 Dec 2011 15:01:00 GMT</pubDate><guid>http://www.blogjava.net/gumutianqi/archive/2011/12/22/367043.html</guid><wfw:comment>http://www.blogjava.net/gumutianqi/comments/367043.html</wfw:comment><comments>http://www.blogjava.net/gumutianqi/archive/2011/12/22/367043.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gumutianqi/comments/commentRss/367043.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gumutianqi/services/trackbacks/367043.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: RequireJS 发布 1.0.0 了，很值得关注，看是否有可借鉴之处。<br>本次比较不涉及具体实现代码，主要比较两者的 API 设计。<br><br>http://requirejs.org<br>http://seajs.com<br><br>从定位谈起<br><br>首先，从 requirejs.org 首页可以得知，RequireJS 的定位是：<br><br>RequireJS 是一个 JavaScript 文件和模块加载器，特别为浏览器优化，同时也可运行在 Rhino 和 Node 环境中。<br><br>SeaJS 的定位是：<br><br>SeaJS 是一个适用于浏览器端的 JavaScript 模块加载器。<br><br>不要小看这两句话，任何类库/框架的定位，或者说愿景/目标，最终会决定该类库/框架的方方面面&nbsp;&nbsp;<a href='http://www.blogjava.net/gumutianqi/archive/2011/12/22/367043.html'>阅读全文</a><img src ="http://www.blogjava.net/gumutianqi/aggbug/367043.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gumutianqi/" target="_blank">古木天琪</a> 2011-12-22 23:01 <a href="http://www.blogjava.net/gumutianqi/archive/2011/12/22/367043.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jQuery获取Select选中的Text和Value（jquery学习备忘录）</title><link>http://www.blogjava.net/gumutianqi/archive/2011/12/14/366382.html</link><dc:creator>古木天琪</dc:creator><author>古木天琪</author><pubDate>Wed, 14 Dec 2011 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/gumutianqi/archive/2011/12/14/366382.html</guid><wfw:comment>http://www.blogjava.net/gumutianqi/comments/366382.html</wfw:comment><comments>http://www.blogjava.net/gumutianqi/archive/2011/12/14/366382.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/gumutianqi/comments/commentRss/366382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gumutianqi/services/trackbacks/366382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 语法解释：<br>1. $("#select_id").change(function(){//code...});   //为Select添加事件，当选择其中一项时触发<br>2. var checkText=$("#select_id").find("option:selected").text();  //获取Select选择的Text<br>3. var checkValue=$("#select_id").val();  //获取Select选择的Value<br>4. var checkIndex=$("#select_id ").get(0).selectedIndex;  //获取Select选择的索引值<br>5. var maxIndex=$("#select_id option:last").attr("index");  //获取Select最大的索引值 <br>jQuery设置Select选择的Text和Value:<br>语法解释：<br>1. $("#select_id ").get(0).selectedIndex=1;  //设置Sel&nbsp;&nbsp;<a href='http://www.blogjava.net/gumutianqi/archive/2011/12/14/366382.html'>阅读全文</a><img src ="http://www.blogjava.net/gumutianqi/aggbug/366382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gumutianqi/" target="_blank">古木天琪</a> 2011-12-14 23:04 <a href="http://www.blogjava.net/gumutianqi/archive/2011/12/14/366382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS实现兼容性的渐变背景(gradient)效果</title><link>http://www.blogjava.net/gumutianqi/archive/2011/11/16/364022.html</link><dc:creator>古木天琪</dc:creator><author>古木天琪</author><pubDate>Wed, 16 Nov 2011 15:33:00 GMT</pubDate><guid>http://www.blogjava.net/gumutianqi/archive/2011/11/16/364022.html</guid><wfw:comment>http://www.blogjava.net/gumutianqi/comments/364022.html</wfw:comment><comments>http://www.blogjava.net/gumutianqi/archive/2011/11/16/364022.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gumutianqi/comments/commentRss/364022.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gumutianqi/services/trackbacks/364022.html</trackback:ping><description><![CDATA[<h5>一、有点俗态的开场白</h5> <p>要是两年前，实现“兼容性的渐变效果”这个说法估计不会被提出来的，那个时候，说起渐变背景，想到的多半是IE的渐变滤镜，其他浏览器尚未支持，但是，在对CSS3支持日趋完善的今天，实现兼容性的渐变背景效果已经完全成为可能，本文就将展示如何实现兼容性的渐变背景效果。在众多的浏览器中，目前不支持Opera浏览器。  <p>本文实例效果都是同样的效果，就是垂直渐变，起始颜色红色，结束颜色蓝色，结束的蓝色的透明度是0.5。  <h5>二、IE浏览器下的渐变背景</h5> <p>IE浏览器下渐变背景的使用需要使用IE的渐变滤镜。如下代码：<pre>filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);</pre>
<p><strong>相关说明：</strong><br>上面的滤镜代码主要有三个参数，依次是：startcolorstr, endcolorstr, 以及gradientType。<br>其中gradientType=1代表横向渐变，gradientType=0代表纵向淅变。startcolorstr=”色彩” 代表渐变渐变起始的色彩，endcolorstr=”色彩” 代表渐变结尾的色彩。 
<p>上面代码实现的是红色至蓝色的渐变，但是不含透明度变化，这是由于IE目前尚未支持opacity属性以及RGBA颜色，要实现IE下的透明度变化，还是需要使用IE滤镜，IE的透明度滤镜功能比较强大，这种强大反而与Firefox或是Safari浏览器下的css-gradient背景渐变的用法类似。例如下面的使用：<pre>filter:alpha(opacity=100 finishopacity=0 style=1 startx=0,starty=5,finishx=90,finishy=60)</pre>
<p>其中各个参数的含义如下：<br>opacity表示透明度，默认的范围是从0 到 100，他们其实是百分比的形式。也就是说，0代表完全透明，100代表完全不透明。<br>finishopacity 是一个可选参数，如果想要设置渐变的透明效果，就可以使用他们来指定结束时的透明度。范围也是0 到 100。<br>style用来指定透明区域的形状特征：<br>0 代表统一形状<br>1 代表线形<br>2 代表放射状<br>3 代表矩形。<br>startx 渐变透明效果开始处的 X坐标。<br>starty 渐变透明效果开始处的 Y坐标。<br>finishx 渐变透明效果结束处的 X坐标。<br>finishy 渐变透明效果结束处的 Y坐标。 
<p>综合上述，实现IE下含透明度变化红蓝垂直渐变的代码如下：</p>
<blockquote><pre>.gradient{
    width:300px;
    height:150px;
    filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) </pre><pre>progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);
    -ms-filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) </pre><pre>progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);
}

&lt;div class="gradient"&gt;&lt;/div&gt;
</pre></blockquote>
<p>结果如下图： 
<p><img title="IE6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" alt="IE6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201004/gradient-ie.png" width="388" height="198"> 
<h5>三、Firefox浏览器下的渐变背景</h5>
<p>对于Firefox浏览器下(Firefox 3.6+)渐变背景的实现需使用CSS3渐变属性，-moz-linear-gradient属性，在之前文章我详细介绍了Firefox3.6下渐变背景的实现，您有兴趣可以狠狠地点击这里：<a href="http://www.zhangxinxu.com/wordpress/?p=727">CSS渐变之CSS3 gradient在Firefox3.6下的使用 </a>。这里我就不再具体讲述了，对于本文开头提到的要实现的效果的实现可以参见下面的代码：</p>
<blockquote><pre>.gradient{
    width:300px;
    height:150px;
    background:-moz-linear-gradient(top, red, rgba(0, 0, 255, 0.5));
}

&lt;div class="gradient"&gt;&lt;/div&gt;
</pre></blockquote>
<p>此段代码在Firefox3.6浏览器下的效果是： 
<p><img title="Firefox3.6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" alt="Firefox3.6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201004/gradient-ff.png" width="378" height="205"> 
<h5>四、chrome/Safari浏览器下的渐变背景实现</h5>
<p>对于webkit核心的浏览器，如Chrome/Safari浏览器下渐变背景的实现也是使用CSS3 渐变方法，css-gradient，具体为-webkit-gradient，使用语Firefox浏览器是有一些差异的。我在上上一篇文章对此进行了非常详细的介绍，您可以狠狠地点击这里：<a href="http://www.zhangxinxu.com/wordpress/?p=734">CSS gradient渐变之webkit核心浏览器下的使用 </a>。具体使用就不详述了，参见下面的代码：</p>
<blockquote>
<p>.gradient{<br>&nbsp;&nbsp;&nbsp; width:300px;<br>&nbsp;&nbsp;&nbsp; height:150px;<br>&nbsp;&nbsp;&nbsp; background:-webkit-gradient(linear, 0 0, 0 bottom, </p></blockquote>
<blockquote style="margin-right: 0px" dir="ltr"><pre>from(#ff0000), to(rgba(0, 0, 255, 0.5)));
}

&lt;div class="gradient"&gt;&lt;/div&gt;
</pre></blockquote>
<p>此段代码在Safari 4浏览器下的效果是： 
<p><img title="Safari下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" alt="Safari下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201004/gradient-safari.png" width="383" height="208"> 
<p><strong>补充于2011-04-07</strong><br>Opera11也支持了CSS3渐变。其用法与Firefox一致，需要使用<code>-o-</code>的前缀。另外，Chrome的渐变用法也开始向FireFox浏览器下的用法靠拢。 
<h5>五、综合 – 兼容性的渐变背景效果</h5>
<p>相关代码如下：</p>
<blockquote><pre>.gradient{
    width:300px;
    height:150px;
    filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) </pre><pre>progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=0);
    -ms-filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) </pre></blockquote>
<blockquote style="margin-right: 0px" dir="ltr"><pre>progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=0);/*IE8*/
    background:red; /* 一些不支持背景渐变的浏览器 */
    background:-moz-linear-gradient(top, red, rgba(0, 0, 255, 0.5));
    background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ff0000), to(rgba(0, 0, 255, 0.5)));
    background:-o-linear-gradient(top, red, rgba(0, 0, 255, 0.5));
}

&lt;div class="gradient"&gt;&lt;/div&gt;
</pre></blockquote>
<p>效果分别为上面三个分类的截图。<br>您可以狠狠地点击这里：<a href="http://www.zhangxinxu.com/study/201004/css-gradient-cross-brower.html">兼容性的渐变背景效果demo</a></p>
<h5>六、结语</h5>
<p>CSS3的潜力非常的大，就渐变这一块可以创建很多精湛的UI效果，而以往这些效果都只能使用图片实现。CSS渐变背景的实现可以有效降低网页的图片数，也就是降低了HTTP请求，是非常受用的。但是IE浏览器一直蹲在茅厕边啃鸡腿——自以为美味，得使用资源消耗很高的滤镜才能实现渐变效果。所以，目前而言，渐变背景的的应用与否还是有待于利弊权衡的。 
<p>&nbsp; <p>来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br>原文地址： <a href="http://www.zhangxinxu.com/wordpress/?p=743">http://www.zhangxinxu.com/wordpress/?p=743</a><img src ="http://www.blogjava.net/gumutianqi/aggbug/364022.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gumutianqi/" target="_blank">古木天琪</a> 2011-11-16 23:33 <a href="http://www.blogjava.net/gumutianqi/archive/2011/11/16/364022.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>50个必备的实用jQuery代码段</title><link>http://www.blogjava.net/gumutianqi/archive/2011/10/17/361413.html</link><dc:creator>古木天琪</dc:creator><author>古木天琪</author><pubDate>Mon, 17 Oct 2011 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/gumutianqi/archive/2011/10/17/361413.html</guid><wfw:comment>http://www.blogjava.net/gumutianqi/comments/361413.html</wfw:comment><comments>http://www.blogjava.net/gumutianqi/archive/2011/10/17/361413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gumutianqi/comments/commentRss/361413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gumutianqi/services/trackbacks/361413.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文会给你们展示50个jquery代码片段，这些代码能够给你的javascript项目提供帮助。其中的一些代码段是从jQuery1.4.2才开始支持的做法，另一些则是真正有用的函数或方法，他们能够帮助你又快又好地把事情完成。如果你发现你任何可以做得更好的地方的话，欢迎把你的版本粘贴在评论中!1. 如何修改jQuery默认编码（例如默认UTF-8改成改GB2312）： $.ajaxSetup({	a...&nbsp;&nbsp;<a href='http://www.blogjava.net/gumutianqi/archive/2011/10/17/361413.html'>阅读全文</a><img src ="http://www.blogjava.net/gumutianqi/aggbug/361413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gumutianqi/" target="_blank">古木天琪</a> 2011-10-17 11:44 <a href="http://www.blogjava.net/gumutianqi/archive/2011/10/17/361413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 性能优化技巧：函数节流</title><link>http://www.blogjava.net/gumutianqi/archive/2011/09/28/359705.html</link><dc:creator>古木天琪</dc:creator><author>古木天琪</author><pubDate>Wed, 28 Sep 2011 07:50:00 GMT</pubDate><guid>http://www.blogjava.net/gumutianqi/archive/2011/09/28/359705.html</guid><wfw:comment>http://www.blogjava.net/gumutianqi/comments/359705.html</wfw:comment><comments>http://www.blogjava.net/gumutianqi/archive/2011/09/28/359705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gumutianqi/comments/commentRss/359705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gumutianqi/services/trackbacks/359705.html</trackback:ping><description><![CDATA[<p> </p><div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:127f066e-7b08-4b50-b2c9-d49abc104ead" class="wlWriterEditableSmartContent">古木天琪 标签: <a href="http://www.example.com/JavaScript" rel="tag">JavaScript</a>，<a href="http://www.example.com/%e6%80%a7%e8%83%bd" rel="tag">性能</a>，<a href="http://www.example.com/JS%e6%80%a7%e8%83%bd" rel="tag">JS性能</a>，<a href="http://www.example.com/%e5%9b%9e%e8%b0%83%e5%87%bd%e6%95%b0" rel="tag">回调函数</a>，<a href="http://www.example.com/%e5%bb%b6%e6%97%b6%e5%87%bd%e6%95%b0" rel="tag">延时函数</a></div><p>&nbsp;</p> <p>函数节流技术的主要思路是，通过一个定时器，阻断连续重复的函数调用。对于我们自己内部使用的函数，这通常意义不大，也不推荐使用这个技术，它可能会丢失对某些数据的处理。但是对于在用户界面调用的函数，却非常有意义。例如一个 mousemove 或者 IE 中 resize 事件的监听函数。 </p> <p><img title="JavaScript 函数节流" alt="JavaScript 函数节流" src="http://www.jsmix.com/wp-content/uploads/2010/09/function-throttling.jpg" width="500" height="200" />  </p><p>这类事件监听函数往往伴随着两个主要特征：<strong>1</strong>. 短时间内连续多次重复触发 ; <strong>2</strong>. 大量的 DOM 操作。众所周知，DOM 操作对内存和 CPU 的开销是比较大的，特别是当同时满足特征1时，往往给浏览器造成不小的压力。函数节流技术的意义在于在用户察觉范围外，降低函数调用的频率，从而提升性能。  </p><p>这个技巧的大概模式如下面这样： </p><pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;processor&nbsp;=&nbsp;{<br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeoutId:&nbsp;<span style="color: #0000FF; ">null</span>,<br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;performProcessing:&nbsp;<span style="color: #0000FF; ">function</span>(){<br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;要执行的代码</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;},<br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process:&nbsp;<span style="color: #0000FF; ">function</span>(){<br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(<span style="color: #0000FF; ">this</span>.timeoutId);<br /><span style="color: #008080; ">10</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.timeoutId&nbsp;&nbsp;=&nbsp;setTimeout(<span style="color: #0000FF; ">function</span>(){<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processor.performProcessing();<br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;100);<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">14</span>&nbsp;};<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">16</span>&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">调用</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #008000; "></span>processor.process();</div></pre><pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;">performProcessing 是真正要调用的函数，而程序的入口在 process，每次进入 process，真正要调用的函数 performProcessing 都会被延迟 100 毫秒执行，如果在此期间，process 再次被调用，则会重置前一次的计时器，重新开始计时，这样保证了 performProcessing 中的代码至少要间隔 100 毫秒才会被执行一次，原理非常的简单，下面这个函数也是利用这个原理，通过闭包达到了同样的目的，它接受两个参数，第一个是要真正要执行的函数，第二个是间隔的时间。</pre><pre class="brush: js; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">function</span>&nbsp;throttle(fn,&nbsp;delay)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;timer&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">var</span>&nbsp;context&nbsp;=&nbsp;<span style="color: #0000FF; ">this</span>,&nbsp;args&nbsp;=&nbsp;arguments;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(timer);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timer&nbsp;=&nbsp;setTimeout(<span style="color: #0000FF; ">function</span>&nbsp;()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn.apply(context,&nbsp;args);<br />&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;delay);<br />&nbsp;&nbsp;};<br />}</div></pre>
<hr />

<p>另外，有人为 jQuery 写了相同功能的插件：<a href="http://plugins.jquery.com/project/ba-jquery-throttle-debounce-plugin">点击这里传送到 jQuery plugins</a>
</p><p>Google Closure Library 也有类似的 API：<a href="http://closure-library.googlecode.com/svn-history/r44/docs/class_goog_Throttle.html">点击这里传送到 Google Code</a> </p><img src ="http://www.blogjava.net/gumutianqi/aggbug/359705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gumutianqi/" target="_blank">古木天琪</a> 2011-09-28 15:50 <a href="http://www.blogjava.net/gumutianqi/archive/2011/09/28/359705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>