<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>AJAX论坛最新讨论 - JavaEye</title>
    <description>JavaScript编程、XMLHTTP、AJAX开发、UI设计、Rich Client<br/>
圈子: 
<a href="http://flex2.group.javaeye.com/" target="_blank">Flex</a>
<a href="http://hzjavaeyer.group.javaeye.com/" target="_blank">JS研究</a>
<a href="http://css.group.javaeye.com/" target="_blank">CSS探讨</a>
<a href="http://ext.group.javaeye.com/" target="_blank">EXT</a>
<a href="http://jquery.group.javaeye.com/" target="_blank">JQuery</a>
<a href="http://dojo.group.javaeye.com/" target="_blank">dojo</a>
 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>当Ajax遇上IE—— readystatechange 不触发问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tibetjungle.javaeye.com">tibetjungle</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251901" style="color:red;">http://www.javaeye.com/topic/251901</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          　　最近用ajax遇到一个奇怪的问题：通过ajax发送到服务器端的请求，成功在服务器执行，但是客户端的回调函数没有调用、触发。也就是下面这段代码，请求的状态在服务器端改变时客户端的代码未被调用：<br /><pre name="code" class="javascript">
ajax.httpRequest.onreadystatechange = function(){
            
            	alert( 'status = ' + ajax.httpRequest.readyState );
                if ( 4 == ajax.httpRequest.readyState) { // 判断对象状态
                        if (  200 == ajax.httpRequest.status ){
                        
                            if( 'text' == responseType.toLowerCase()  ){
                            
                                callback( ajax.httpRequest.responseText );
                            }
                            else{
                            
                                callback( ajax.httpRequest.responseXML );
                            }                               
                        }
                    }
            }
</pre><br />相同的测试在IE（版本6.0.2900.2180）和ff3下进行，ff3未发现该问题。google、baidu一番，终于在ms的官网上看到，有人发帖，认为是IE的bug。跟帖的人认为是用<br /><pre name="code" class="javascript">
new window.ActiveXObject("Microsoft.XMLHTTP");
</pre><br />导致的问题，如果在IE7中用<br /><pre name="code" class="javascript">
new XMLHttpRequest()
</pre><br />就不会有问题。可是我的是IE6，而且公司还有用IE5的，用IE7的方法肯定不能解决我的问题。请问各位达人，是否遇到过类似的问题，是怎么解决的？thanks in advanced.
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251901" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 21:07:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251901</link>
        <guid>http://www.javaeye.com/topic/251901</guid>
      </item>
          <item>
        <title>HTTPService 只能GET的解决方法</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://blogs.javaeye.com">xhanxhanxhan</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251870" style="color:red;">http://www.javaeye.com/topic/251870</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>问了论坛，聊天群始终还是无法搞定，甚至有人建议我自己写一个URLrequest 封装起来。</p>
<p>呵呵，不过终于还是解决这个问题了，thanks to peter。</p>
<p>&nbsp;</p>
<p>Hi,<br />
<br />
Chances are if you are doing a POST with no data, it turns into a GET.<br />
&nbsp;Try a POST with some content. &nbsp;I think there's something about this<br />
in the book...<br />
<br />
Cheers,<br />
Peter</p>
<p>&nbsp;</p>
<p>关键在于HTTPService.send(params) 是不起作用的，需要先给 HTTPService.request 赋值 才行。</p>
<p>神奇的FLEX API</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251870" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 20:23:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251870</link>
        <guid>http://www.javaeye.com/topic/251870</guid>
      </item>
          <item>
        <title>RadioGroup和CheckboxGroup的赋值问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://microboat.javaeye.com">microboat</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250048" style="color:red;">http://www.javaeye.com/topic/250048</a>&nbsp;
          发表时间: 2008年10月07日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在Ext2.2的Ext.form.FormPanel中如果有RadioGroup或者CheckboxGroup，那么FormPanel.form.setValues方法对这2个东东内部的radio和checkbox无法动态赋值，需要对Ext.form.BasicForm的findField方法进行修正，代码如下：</p>
<pre name="code" class="js">Ext.override(Ext.form.BasicForm,{
    findField : function(id){        
        var field = this.items.get(id);        
        if(!field){
            this.items.each(function(f){
                if(f.isXType('radiogroup')||f.isXType('checkboxgroup')){
                    f.items.each(function(c){
                        if(c.isFormField &amp;&amp; (c.dataIndex == id || c.id == id || c.getName() == id)){
                            field = c;
                            return false;
                        }
                    });
                }
                                
                if(f.isFormField &amp;&amp; (f.dataIndex == id || f.id == id || f.getName() == id)){
                    field = f;
                    return false;
                }
            });
        }
        return field || null;
    } 
});</pre>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250048" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 07 Oct 2008 20:28:55 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250048</link>
        <guid>http://www.javaeye.com/topic/250048</guid>
      </item>
          <item>
        <title>理解渐进增强（Progressive Enhancement）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lifesinger.javaeye.com">lifesinger</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250687" style="color:red;">http://www.javaeye.com/topic/250687</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="post-content">
<p>原文：<a href="http://www.alistapart.com/articles/understandingprogressiveenhancement">Understanding Progressive Enhancement</a><br />
作者：<a href="http://www.alistapart.com/authors/g/aarongustafson">Aaron Gustafson</a><br />
翻译：<a href="http://lifesinger.org/">http://lifesinger.org/</a></p>
<p><img class="alignright size-full wp-image-302" title="progressive-enhancement" src="http://lifesinger.org/blog/wp-content/uploads/2008/10/progressive-enhancement.jpg" height="452" alt="" style="float: right;" width="270" /><br />
从1994年开始，Web开发社区就敲响了<a href="http://en.wikipedia.org/wiki/Graceful_degradation">优雅降级（Graceful Degradation）</a>的
鼓声。这个概念来自工程世界，其核心理念是给最新最强大的浏览器全套餐式的体验，而给那些不幸还在使用Netscape
4的可怜人们只留些残羹冷炙般的基本功能。毫无疑问，这发挥了作用。但是它并不很符合Tim
Berners-Lee（译注：万维网之父）关于普遍可访问性网络（Universally Accessible Web）的原始愿景。</p>
<p>大约10年后，一些聪明的家伙开始质疑优雅降级，发现它在很多层面上有不足之处。他们将精力集中在内容可用性（Content
Availability）、总体可访问性（Overall
Accessibility）和移动设备浏览器的能力上，寻找到了一条Web开发的新途径&mdash;&mdash;此方法将内容作为关注焦点，而不只是对旧设备的支持嘴上说说
却没有实际行动。</p>
<p>在2003年的<a href="http://sxsw.com/">SXSW</a>会议（译注：一个关于电影、音乐和交互的会议）中，Steve Champeon和Nick Finck做了一个名为 &ldquo;<a href="http://www.hesketh.com/publications/inclusive_web_design_for_the_future/">面向未来的全方位Web开发</a>&rdquo; 的演讲。这样，他们揭示了这种Web开发新方法的蓝图。Steve还给它取了个名称：渐进增强（<a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Progressive Enhancement</a>）。</p>
<p>&nbsp;</p>
<h3>这里有个（微妙的）差别</h3>
<p>如果你挠着头想弄清楚优雅降级和渐进增强的区别，我告诉你，这是一个关于视角的问题。优雅降级和渐进增强都考虑一个网页在各种设备的各种浏览器上如何良好运转。两者区别的关键在于它们各自关注的焦点，以及这种关注对工作流程的影响。</p>
<p>&nbsp;</p>
<h4>优雅降级的视角</h4>
<p>优雅降级关注于在最先进/最全能的浏览器上构建网站。在被认为&ldquo;老的&rdquo;或能力不足的浏览器中的测试，经常要等到开发周期的最后一个环节才进行，并且通常限制在主流浏览器（如IE、Mozzila等）的前一个发布版本中。</p>
<p>在这种模式下，老的浏览器只可能提供差强人意（poor, but passable）的体验。或许会做些小补丁来适应某个特定浏览器，但这些浏览器毕竟不是关注的焦点，除了修正重大的错误，也不会再费多大的神了。</p>
<p>&nbsp;</p>
<h4>渐进增强的视角</h4>
<p>渐进增强关注于内容。请注意区别：我甚至都没提及浏览器。</p>
<p>内容是我们最初创建网站的原因。有些网站传播内容，有些收集内容，有些请求内容，有些操作内容，有些网站以上所有功能都有，然而它们都需要内容。这就是渐进增加成为一种更适合的模式的关键所在。这也是Yahoo!迅速采纳这种模式并用它创建了<a href="http://developer.yahoo.com/yui/articles/gbs/">分级浏览器支持（Graded Browser Support）</a>策略的原因。</p>
<p>&nbsp;</p>
<h3>它是怎样运作的</h3>
<p>进入渐进增强的思维方法很简单：只要从内容开始往外想。内容形成坚实的基石，在此之上你才能添加样式和交互。如果你爱吃糖果，可以将它想像成一颗M&amp;M花生巧克力：<br />
<img class="alignnone size-full wp-image-300" title="m-m" src="http://lifesinger.org/blog/wp-content/uploads/2008/10/m-m.png" height="231" alt="" width="500" /><br />
（图示：渐进增强的巧克力层）</p>
<p>从你的内容花生开始，将其标记为富含语义的(X)HTML. 接着给内容裹上一层富含奶油的CSS. 最后，添加JavaScript作为糖果硬壳，这就做成了一颗可口无比的美味（并使得它不会在你手里融化）。</p>
<p>如果你非常熟悉Web标准化运动的口号&mdash;&mdash;分离、分离、分离&mdash;&mdash;这个类比就相当清楚了。基于Web标准的开发经常被比作<a href="http://www.flickr.com/photos/aarongustafson/83123599/">夹心蛋糕</a>（或者，可以更富想像力地比作为<a href="http://www.stuffandnonsense.co.uk/archives/web_standards_trifle.html">松糕</a>（译注：一种多层蛋糕，可以夹水果、奶油、沙司等））。</p>
<p>我更倾向拿M&amp;M花生巧克力来类比，因为它的外层把内容完全包裹住了，这和我们的样式与脚本将内容包裹起来几乎是一样的。</p>
<p>如果你允许我的食物类比论再多讲一点（希望不会让你感觉饥饿），我将解释为什么这种方式更好以及在这种模式下各层之间是如何交互的。</p>
<p>&nbsp;</p>
<h4>花生仁</h4>
<p>有些人喜欢花生。实际上，有人喜欢花生胜过M&amp;M花生巧克力。类似地，有些家伙（以及像搜索引擎爬虫这类东西）只想要内容。</p>
<p>还有些人无福消受花生上的巧克力和糖果层（例如糖尿病患者）。和他们类似，移动设备或老浏览器用户可能无法看到你漂亮的设计，或者与你流畅的AJAX驱动的界面交互。</p>
<p>确保你的标记能够将所包裹的内容的细节最大限度地传达出来，这对于给这些用户提供基本体验至关重要。</p>
<p>&nbsp;</p>
<h4>巧克力外衣</h4>
<p>接下来，你可以将内容小心地浸入芳香美味的CSS暖浴中了。不过在你跳进糖果硬壳之前，还有些额外的考虑。</p>
<p>有的人爱吃巧克力裹着的花生。这些人就像中级用户，他们的浏览器有比较好的CSS支持，但可能没有很好的JavaScript支持。或者，可能在他
们工作的公司里，IT安全人员对JavaScript极其病态性地恐惧。对他们来说，JavaScript就可能完全被禁用了。</p>
<p>无论是倾向于爱吃<a href="http://en.wikipedia.org/wiki/Chocolate-coated_peanut">巧克力花生</a>（译注：一种直接用巧克力覆盖的花生，没有外层硬壳，类似于有内容和CSS但没有JavaScript支持的网站）还是被限制只能吃<a href="http://en.wikipedia.org/wiki/Chocolate-coated_peanut">巧克力花生</a>，这些人都应该得到满足。这里有几种渐进增强的方式可以将样式应用于内容，这将是本系列第二篇文章的话题。</p>
<p>&nbsp;</p>
<h4>糖果硬壳</h4>
<p>最后，你可以将JavaScript添加到内容和样式的混合体中了。JavaScript提供了富交互的可能性，同时具有操作内容层和展现层并与其交互的能力，这实际上使得JavaScript成为了把网站带入&ldquo;体验&rdquo;高度的一味配料。</p>
<p>我不确定糖果硬壳到底是怎样添加到M&amp;M花生巧克力上的（我猜是另一种什么浸蘸过程吧），但是，你脑中想着渐进增强的话，在你的网站上加入
基于JavaScript的功能和交互就轻而易举了。另外，就如M&amp;M花生巧克力有各种各样颜色一样，依据所运行的浏览器和设备的能
力，JavaScript的体验也可以各不相同。</p>
<p>正如你可能知道的那样，这种类型的开发叫做无侵入式（Unobtrusive）JavaScript. 我将在本系列的第三篇和最后一篇文章中讲述这些技巧和实践。</p>
<p>&nbsp;</p>
<h3>都放在一起</h3>
<p>一旦理解了渐进增强的理念并开始在实践中使用，那么用渐进增强进行开发就非常简单了。也许比做糖果还简单。本系列接下来的两篇文章将帮助你使用CSS和JavaScript来磨练你的渐进增强技巧，并向你展示怎样把哲学转换成代码。</p>
<p>&nbsp;</p>
<p>~~~~~~</p>
<h3>译注：</h3>
<ol>
<li>Graceful Degradation有译为预留退路、平稳退化的，但我觉得这两个翻译没有表达原意，不如直接翻译成优雅降级的好。</li>
<li>Unobtrusive有译为不唐突的、分离的、低调的，在Web开发领域，我觉得翻译成&ldquo;无侵入的&rdquo;最能表达原意。</li>
</ol>
<p>2008年10月8日 射雕&amp;安吉 译于杭州<br />
2008年10月9日 审校</p>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250687" style="color:red;">已有 <strong>8</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 12:48:34 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250687</link>
        <guid>http://www.javaeye.com/topic/250687</guid>
      </item>
          <item>
        <title>jquery、mootools、prototype侵入性分析</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bellstar.javaeye.com">bellstar</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251422" style="color:red;">http://www.javaeye.com/topic/251422</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong><span style="text-decoration: underline;">prototype v1.5</span></strong><br />&gt;&gt;&gt; $Harbour.importJS("/javascripts/org/prototype/v1_5/prototype.js")<br />&gt;&gt;&gt; $Harbour.check()<br />" 相对上一个版本<strong><em>window</em></strong>［bodyload］，新增加的成员有26个包括:<br /> ObjectRange,Position,$F,Field,Form,$$,Selector,Insertion,Toggle,_nativeExtensions,$,<br /> Ajax,$R,$H,Hash,$w,$A,Enumerable,$continue,$break,Template,PeriodicalExecuter,Try,<br /> Abstract,Class,Prototype <br /> 相对上一个版本<em><strong>window</strong></em>［bodyload］，被修改的成员有0个包括: <br /> <br /> 相对上一个版本<em><strong>String</strong></em>［bodyload］，新增加的成员有19个包括: gsub,scan,truncate,strip,stripTags,stripScripts,extractScripts,evalScripts,escapeHTML,<br /> unescapeHTML,toQueryParams,toArray,succ,camelize,capitalize,underscore,dasherize,<br /> inspect,parseQuery <br /> <br /> 相对上一个版本<em><strong>Array</strong></em>［bodyload］，新增加的成员有36个包括: each,eachSlice,all,any,collect,detect,findAll,grep,include,inGroupsOf,inject,invoke,<br /> max,min,partition,pluck,reject,sortBy,toArray,zip,size,inspect,find,select,member,<br /> entries,_reverse,_each,clear,first,last,compact,flatten,without,uniq,clone <br /> <br /> 相对上一个版本<em><strong>Number</strong></em>［bodyload］，新增加的成员有3个包括: toColorPart,succ,times <br /> 相对上一个版本<em><strong>Function</strong></em>［bodyload］，新增加的成员有2个包括: bind,bindAsEventListener <br /> 相对上一个版本<em><strong>document</strong></em>［bodyload］，被修改的成员有2个包括: implementation,getElementsByClassName"<br /> <br /><span style="text-decoration: underline;"><strong>jquery v1.1.2 </strong></span><br />&gt;&gt;&gt; $Harbour.importJS("/javascripts/org/jquery/v1_1_2/jquery.js")<br />&gt;&gt;&gt; $Harbour.check()<br />"相对上一个版本<em><strong>window</strong></em>［bodyload］，新增加的成员有4个包括: <br />$events,undefined,$,jQuery <br />相对上一个版本<em><strong>window</strong></em>［bodyload］，被修改的成员有1个包括: onload <br /><br /><span style="text-decoration: underline;"><strong>mootools v1.2</strong></span><br />"相对上一个版本<em><strong>window</strong></em>［bodyload］，新增加的成员有66个包括: getLeft,getTop,getScrollWidth,getScrollHeight,getScrollLeft,getScrollTop,getWidth,<br />getHeight,getCoordinates,getPosition,getScrollSize,getScroll,getSize,cloneEvents,<br />fireEvent,removeEvents,addEvents,removeEvent,addEvent,eliminate,store,retrieve,<br />removeListener,addListener,getWindow,getDocument,$$,$,$family,uid,Request,Fx,Swiff,Cookie,JSON,Selectors,Elements,IFrame,Options,Events,<br />Chain,Class,$uid,$exec,Browser,$each,$A,$H,Hash,$type,$try,$time,$splat,$random,<br />$pick,$merge,$unlink,$extend,$lambda,$arguments,$empty,$defined,$clear,$chk,Native,<br />MooTools, <br />相对上一个版本<em><strong>String</strong></em>［bodyload］，新增加的成员有16个包括: $family,test,contains,trim,clean,camelCase,hyphenate,capitalize,escapeRegExp,toInt,<br />toFloat,hexToRgb,rgbToHex,stripScripts,substitute,toJSON <br />相对上一个版本<em><strong>Array</strong></em>［bodyload］，新增加的成员有17个包括: $family,each,clean,associate,link,contains,extend,getLast,getRandom,include,combine,<br />erase,empty,flatten,hexToRgb,rgbToHex,toJSON 相对上一个版本Date［bodyload］，<br />相对上一个版本<em><strong>Number</strong></em>［bodyload］，新增加的成员有24个包括: $family,limit,round,times,toFloat,toInt,each,abs,acos,asin,atan,atan2,ceil,cos,exp,<br />floor,log,max,min,pow,sin,sqrt,tan,toJSON <br />相对上一个版本<em><strong>Function</strong></em>［bodyload］，新增加的成员有10个包括: <br />$family,extend,create,pass,attempt,bind,bindWithEvent,delay,periodical,run <br />相对上一个版本<em><strong>Element</strong></em>［bodyload］，新增加的成员有95个包括: $family,getElement,getElements,injectBefore,grabBefore,injectAfter,grabAfter,injectBottom,<br />grabBottom,injectTop,grabTop,injectInside,grabInside,getDocument,getWindow,getElementById,<br />set,get,erase,match,inject,wraps,grab,appendText,adopt,dispose,clone,replaces,hasClass,<br />addClass,removeClass,toggleClass,getComputedStyle,empty,destroy,getSelected,toQueryString,<br />getProperty,getProperties,setProperty,setProperties,removeProperty,removeProperties,<br />getPrevious,getAllPrevious,getNext,getAllNext,getFirst,getLast,getParent,getParents,<br />getChildren,hasChild,addListener,removeListener,retrieve,store,eliminate,addEvent,<br />removeEvent,addEvents,removeEvents,fireEvent,cloneEvents,setOpacity,getOpacity,setStyle,<br />getStyle,setStyles,getStyles,scrollTo,getSize,getScrollSize,getScroll,getScrolls,<br />getOffsetParent,getOffsets,getPosition,getCoordinates,computePosition,position,getHeight,<br />getWidth,getScrollTop,getScrollLeft,getScrollHeight,getScrollWidth,getTop,getLeft,tween,<br />fade,highlight,morph,send,load <br />相对上一个版本<em><strong>document</strong></em>［bodyload］，新增加的成员有36个包括: <br />uid,head,html,window,$family,newElement,newTextNode,getDocument,getWindow,purge,getElement,getElements,<br />addListener,removeListener,retrieve,store,eliminate,addEvent,removeEvent,addEvents,removeEvents,<br />fireEvent,cloneEvents,getSize,getScroll,getScrollSize,getPosition,getCoordinates,getHeight,getWidth,<br />getScrollTop,getScrollLeft,getScrollHeight,getScrollWidth,getTop,getLeft "</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251422" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 18:28:38 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251422</link>
        <guid>http://www.javaeye.com/topic/251422</guid>
      </item>
          <item>
        <title>用jQuery做一个能够查看学校信息的下拉框</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://freeway2000.javaeye.com">freeway2000</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251722" style="color:red;">http://www.javaeye.com/topic/251722</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>OK，本文假设你已经看过了<a href="/blog/251554" target="_blank"><span style="color: #620091;">用jQuery动手写一个插件：实现一个下拉框效果</span></a>，接着前面的文章，本文要在前文的基础上来实现一个能够查看学校信息的下拉框。具体的效果如搜狐博客个人档案中编辑学校信息的样式，如下图：</p>
<div><a href="/upload/attachment/42072/6b1d5400-108d-35bf-985a-c9e8e010b5c7.jpg"><img src="/upload/attachment/42072/6b1d5400-108d-35bf-985a-c9e8e010b5c7.jpg" height="481" alt="" width="622" /></a></div>
<p>做法有两种：</p>
<p>第一种方式，采用$("#contextbox1").createContextBox({"content":"XXXX"});的方式写，但这样的结果是，如果以后有同样的地方需要采用学校信息下拉框，那么你就只能采用粘贴代码的方式来达到复用了，甚至于还混入了相关页面的一些固有的逻辑，这显然不是一个好方法。</p>
<p>第二种方式，在原有的下拉框插件的基础上再一次扩展，形成新的插件，它的好处不用我再多说了吧！用jQuery编程能写成插件就尽可能写成插件。</p>
<p>首先来仔细分析一下这个下拉框，她比先前的下拉框要复杂得多，需要支持如下的功能：<br />1.选择省份后需要支持ajax的页面提交，让学校信息能发生变化。<br />2.点击翻页后也需要支持ajax的页面提交，让学校信息具备翻页的功能。<br />3.点击学校链接，需要将学校名字回填到文本框中。</p>
<p>经过分析后，这个插件中需要新创建两个方法：</p>
<p>一个是createUnivContextBox方法，表示创建一个大学信息的下拉框；</p>
<p>另一个是changeProvinceOrPage方法，表示省份或者页面发生了改变，需要通过ajax刷新相应的学校信息。</p>
<p>接下来我们就创建一个名称为jquery.schoolcontextbox.js的文件，源码如下:</p>
<pre name="code" class="js">;(function($) {

$.fn.createUnivContextBox = function(options) {
	var content = '&lt;div class="mod"&gt;&lt;div class="head clearfix"&gt;'+
		'&lt;h3&gt;请选择学校所在的省市：&lt;select class="province"&gt;'+
		'&lt;option value="1"&gt;北京市&lt;/option&gt;&lt;option value="2"&gt;天津市&lt;/option&gt;&lt;option value="3"&gt;河北省&lt;/option&gt;&lt;option value="4"&gt;山西省&lt;/option&gt;&lt;option value="5"&gt;辽宁省&lt;/option&gt;&lt;option value="6"&gt;吉林省&lt;/option&gt;&lt;option value="7"&gt;上海市&lt;/option&gt;&lt;option value="8"&gt;江苏省&lt;/option&gt;&lt;option value="9"&gt;浙江省&lt;/option&gt;&lt;option value="10"&gt;安徽省&lt;/option&gt;&lt;option value="11"&gt;福建省&lt;/option&gt;&lt;option value="12"&gt;江西省&lt;/option&gt;&lt;option value="13"&gt;山东省&lt;/option&gt;&lt;option value="14"&gt;河南省&lt;/option&gt;&lt;option value="15"&gt;内蒙古自治区&lt;/option&gt;&lt;option value="16"&gt;黑龙江省&lt;/option&gt;&lt;option value="17"&gt;湖北省&lt;/option&gt;&lt;option value="18"&gt;湖南省&lt;/option&gt;&lt;option value="19"&gt;广东省&lt;/option&gt;&lt;option value="20"&gt;广西壮族自治区&lt;/option&gt;&lt;option value="21"&gt;海南省&lt;/option&gt;&lt;option value="22"&gt;四川省&lt;/option&gt;&lt;option value="23"&gt;重庆市&lt;/option&gt;&lt;option value="24"&gt;台湾省&lt;/option&gt;&lt;option value="25"&gt;贵州省&lt;/option&gt;&lt;option value="26"&gt;云南省&lt;/option&gt;&lt;option value="27"&gt;西藏自治区&lt;/option&gt;&lt;option value="28"&gt;陕西省&lt;/option&gt;&lt;option value="29"&gt;甘肃省&lt;/option&gt;&lt;option value="30"&gt;青海省&lt;/option&gt;&lt;option value="31"&gt;宁夏回族自治区&lt;/option&gt;&lt;option value="32"&gt;新疆维吾尔族自治区&lt;/option&gt;&lt;option value="33"&gt;香港特别行政区&lt;/option&gt;&lt;option value="34"&gt;澳门特别行政区&lt;/option&gt;&lt;option value="35"&gt;海外&lt;/option&gt;'+ 
		'&lt;/select&gt;&lt;input type="hidden" /&gt;&lt;/h3&gt;&lt;div class="option"&gt;&lt;a class="close" href="javascript:jQuery.hideAllContextBox();"&gt;关闭&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;'+
		'&lt;div class="body clearfix"&gt;&lt;div class="SchoolSelectorCtr"&gt;loading....&lt;/div&gt;&lt;hr/&gt;&lt;div class="pageNav"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';
	options['content'] = content;
	options['province_id'] = 1;
	options['school_type'] = 6;
	$(this).createContextBox(options);
	var context_box = this;
	$(this).next().find("input").val(options['school_type']);
	$(this).next().find("select").change(function(){
		$(context_box).changeProvinceOrPage($(this).val(),$(this).next().val(),1);
	});
	$(this).changeProvinceOrPage(options['province_id'],options['school_type'],1);
};

$.fn.changeProvinceOrPage = function(province_id, school_type,current_page) {
	var pageNav = $(this).next().find(".pageNav");
	var tableDiv = $(this).next().find(".SchoolSelectorCtr");
	var from = 45*(current_page-1);
	var to = 45*(current_page);
	var context_box = this;
	$.getScript("http://profile.blog.sohu.com/service/schoolJson.htm?prov="+province_id+"&amp;cate="+school_type+"&amp;st="+from+"&amp;sz=45&amp;vn=school_data",
		function(){
		  var data = school_data['data'];
		  var counter = 0;
		  var tbody = $("&lt;tbody&gt;&lt;/tbody&gt;");
		  var counter = 0;
		  var tr = $("&lt;tr&gt;&lt;/tr&gt;");
		  for( var i = 0; i &lt; data.length; i++) {
			  if (i%3 == 0) tr = $("&lt;tr&gt;&lt;/tr&gt;");
			  var a = $("&lt;a href='javascript:void(0);' name='"+data[i][0]+"'&gt;"+data[i][1]+"&lt;/a&gt;");
			  a.click(function(){
			  	  $("#"+context_box.attr("id").replace("school_name","school_id")).val($(this).attr("name"));
			  	  context_box.val($(this).text());
			  	  $.hideAllContextBox();
			  });
			  var td = $("&lt;td&gt;&lt;/td&gt;");
			  td.append(a);
			  tr.append(td);
			  if (i%3 == 2 || data.length - 1 == counter) {
			  	tbody.append(tr);
			  }
		  }
          var table = $("&lt;table&gt;&lt;/table&gt;").attr("cellspacing", 4).attr("cellpadding", 0).attr("border", 0).attr("width", "100%").append(tbody);
          tableDiv.html(table);
          //显示分页
		  var pg= parseInt(current_page,10);
       	  var total_pg = (school_data['count']/45)+((school_data['count']%45)&gt;0?1:0);
       	  //每页显示7个
       	  var prev = "";
       	  var pages = [];
       	  var next = "";
       	  if (pg &gt; 4) {
       	    prev = "&lt;a name='"+(pg-1)+"' href='javascript:void(0);'&gt;上一页&lt;/a&gt;";
       	  }
       	  if (total_pg &gt; 7 &amp;&amp; pg+3&lt;total_pg) {
       	    next = "&lt;a name='"+(pg+1)+"' href='javascript:void(0);'&gt;下一页&lt;/a&gt;";
       	  }
       	  for (var i = (((pg-3)&gt;0)?(pg-3):1); i &lt;= ((total_pg&gt;(pg+3))?(pg+3):total_pg); i++) {
       	 	if (pg == i) {
       	 		pages.push("&lt;span&gt;"+i+"&lt;/span&gt;");
       	 	} else {
       	 		pages.push("&lt;a name='"+i+"' href='javascript:void(0);'&gt;"+i+"&lt;/a&gt;");
       	 	}
       	 }
       	 pageNav.html(prev + pages.join('') + next);
       	 pageNav.find("a").click(function() {
       	 	$(context_box).changeProvinceOrPage(province_id,school_type,parseInt(this.name,10));
       	 });
	});
	return this;
};

})(jQuery);</pre>
<p>&nbsp;</p>
<p>ok，大学信息的下拉框的插件就完成了，可以看到createUnivContextBox中也包含了createContextBox方法，并且适当的添加了它自身特有的一些代码就构造成了一个可以选择学校的下拉框了。</p>
<p>写个名称为school_contextbox.html来对她测试一下。</p>
<pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=GBK"&gt;
&lt;title&gt;school context box sample&lt;/title&gt;
&lt;style type="text/css"&gt;
a {color: #104d6c;text-decoration: underline;}
em a {color:#f06;}
a:hover,
em a:hover {color: #f63;text-decoration: underline;}
a:focus {-moz-outline-style: none;}
a.close {display:block;overflow:hidden;width:16px;height:16px;background:url(http://js2.pp.sohu.com.cn/ppp/blog/styles_ppp_v_081008/images/ico_cls.gif) center no-repeat;text-indent:-9999px;}
div.contextbox {border:2px solid #ccc;background:#fff}
body {margin:0;padding:0;background:#fff;color:#666;font:normal 12px/1.6em Verdana,Arial,sans-serif,"宋体";}
.clearfix {display:block;}
.mod{margin:0 0 10px;}
	.mod .head {height:20px;padding:3px 7px;&gt;padding:4px 7px 2px;border-bottom:1px solid #ccc;}
		.mod .head h3,
		.mod .head h4 {float:left;margin:0;font:bold 12px/20px Verdana,Arial,Helvetica,sans-serif;}
		.mod .head select {height:18px;}
		*+html .mod .head select {height:20px;}
		.mod .head .option {float:right;}
	.mod .body {padding:10px 10px 0;}
		.mod .body .noItem {margin:0 -10px;padding:15px 25px 25px 80px;border-bottom:1px solid #ccc;}
	.mod .foot {}
/* pageNav */
.pageNav {padding:0 0 5px;line-height:20px;font-family:Tahoma,Verdana,Arial,Helvetica,sans-serif;text-align:right;}
	.pageNav span,
	.pageNav a {padding:0 4px 0 3px;}
	.pageNav span {font-weight:bold;}
	.pageNav a {text-decoration:underline;}
	.pageNav a.prev {float:left;}
	.pageNav a.next {float:right;}

table.popLayer {border:1px solid #ccc;}
	table.popLayer td {overflow:hidden;padding:0;!important;}
	table.popLayer .lt,
	table.popLayer .lm,
	table.popLayer .lb,
	table.popLayer .rt,
	table.popLayer .rm,
	table.popLayer .rb {width:4px;!important;font-size:0;line-height:0;}
	table.popLayer .lt,
	table.popLayer .mt,
	table.popLayer .rt,
	table.popLayer .lb,
	table.popLayer .mb,
	table.popLayer .rb {height:4px;!important;font-size:0;line-height:0;}
	table.popLayer .rm,
	table.popLayer .mb,
	table.popLayer .rb {background:#333;!important;filter:alpha(opacity=50);-moz-opacity: 0.5;}
	table.popLayer .rt,
	table.popLayer .lb {border:2px solid #333;!important;filter:alpha(opacity=50);-moz-opacity: 0.5;}
	table.popLayer .lt,
	table.popLayer .mt,
	table.popLayer .lm,
	table.popLayer .mm {border:2px solid #ccc;!important;background:#fff;!important;}
	table.popLayer .lt {border-width:2px 0 0 2px;!important;}
	table.popLayer .rt {border-width:0;!important;*border-width:0 0 2px 0;!important;}
	table.popLayer .mt {border-width:2px 2px 0 0;!important;}
	table.popLayer .lm {border-width:0 0 2px 2px;!important;}
	table.popLayer .mm {border-width:0 2px 2px 0;!important;padding:0 3px 3px 0;!important;}
	table.popLayer .lb {border-width:0 2px 0 0;!important;}
hr {clear:both;height:1px;margin:7px 0;&gt;margin:0;padding:0;border:0 none;border-top:1px dashed #ccc;line-height:1px;}
&lt;/style&gt;
&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.contextbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.schoolcontextbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$().ready(function() {
 $("#univs_1_school_name").createUnivContextBox({'width':'510px'});
});
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table class="tableForm" width="100%" border="0" cellspacing="8" cellpadding="0"&gt;
&lt;tr&gt;
 &lt;td class="formLable" width="60"&gt;大学：&lt;/td&gt;
 &lt;td class="formEle"&gt;
  &lt;input id="univs_1_school_name" class="popup" title="请点击选择" name="univs[1][school_name]" value="" readonly="true"/&gt;
  &lt;input id="univs_1_school_id" name="univs[1][school_id]" type="hidden" value="7"/&gt;
 &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>&nbsp;</p>
<p>html代码看上去有点多，主要是css样式表较多的缘故，其实最为核心的代码也就是下面这几行：</p>
<pre name="code" class="html">&lt;script type="text/javascript" src="jquery.contextbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.schoolcontextbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$().ready(function() {
 $("#univs_1_school_name").createUnivContextBox({'width':'510px'});
});
&lt;/script&gt;</pre>
<p>1.分别引入了jquery.contextbox.js、jquery.schoolcontextbox.js两个js。</p>
<p>2.给你的文本框执行一下createUnivContextBox({'width':'510px'})方法。</p>
<p>&nbsp;</p>
<p>看到jQuery写插件的好处了吧！jQuery基于插件的开发方式让你的js代码达到最低的耦合、极高的复用。</p>
<p>&nbsp;</p>
<p>在项目开发过程中，随着js代码的不断增多，js的维护量也越来越大，那么你还能持续的让你的js的代码处于一种高度可维护，可复用的状态吗？如果你正在为此而焦头烂额的话。那么我觉得你可以考虑考虑采用jQuery了。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251722" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 00:30:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251722</link>
        <guid>http://www.javaeye.com/topic/251722</guid>
      </item>
          <item>
        <title>表单域与json数据间的交互</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://johncon.javaeye.com">johncon</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250780" style="color:red;">http://www.javaeye.com/topic/250780</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>找了几个javascript的框架，都没有找到我想要的： <br />提供函数，把某个表单的所有域封装成json数据格式的对象，唯有自己实现一个。 <br /><br />包括对象中有集合属性、对象中引用其他对象属性：&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="js">/**
**json对象数据设置到表单域中
*/
function jsonObjectToForm(form, jsonObject){
	for(i = 0, max = form.elements.length; i &lt; max; i++) {
		e = form.elements[i];
		eName = e.name;
		if(eName.indexOf('.') &gt; 0){
			dotIndex = eName.indexOf('.');
			parentName = eName.substring(0, dotIndex);
			childName = eName.substring(dotIndex+1);
			//迭代判断eName，组装成json数据结构
			eValue = iterValueFromJsonObject(jsonObject, parentName, childName);
		}else{
			eValue = jsonObject[eName];
		}
		if(eValue &amp;&amp; eValue != "undefined" &amp;&amp; eValue != "null"){
			switch(e.type){
				case 'checkbox': 
				case 'radio': 
					if(e.value == eValue){
						e.checked = true;
					}
					break;
				case 'hidden': 
				case 'password': 
				case 'textarea':
				case 'text': 
					e.value = eValue;
					break;
				case 'select-one':
				case 'select-multiple':
					for(j = 0; j &lt; e.options.length; j++){
						op = e.options[j];
						//alert("eName : " + eName + "; op value : " + op.value + "; eValue : " + eValue);
						if(op.value == eValue){
							op.selected = true;
						}
					}
					break;
				case 'button': 
				case 'file': 
				case 'image': 
				case 'reset': 
				case 'submit': 
				default:  
			}
		}
	}
}

/**
* json数组读写有两种方式
* 1: a.bs[0].id
* 2: a["bs"][0]["id"]
* 把表单转换成json数据格式
*/
function formToJsonObject(form){
	var jsonObject = {};
	for(i = 0, max = form.elements.length; i &lt; max; i++) {
		e = form.elements[i];
		em = new Array();
		if(e.type == 'select-multiple'){
			for(j = 0; j &lt; e.options.length; j++){
				op = e.options[j];
				if(op.selected){
					em[em.length] = op.value;
				}
			}
		}
		switch(e.type){
			case 'checkbox': 
			case 'radio': 
				if (!e.checked) { break; } 
			case 'hidden': 
			case 'password': 
			case 'select-one':
			case 'select-multiple':
			case 'textarea':
			case 'text': 
				eName = e.name;
				if(e.type == 'select-multiple'){
					eValue = em;
				}else{
					eValue = e.value.replace(new RegExp('(["\\\\])', 'g'), '\\$1');
				}
				//判断是否是对象类型数据
				if(eName.indexOf('.') &gt; 0){
					dotIndex = eName.indexOf('.');
					parentName = eName.substring(0, dotIndex);
					childName = eName.substring(dotIndex+1);
					//迭代判断eName，组装成json数据结构
					iterJsonObject(jsonObject, parentName, childName, eValue);
				}else{
					jsonObject[eName] = eValue;
				}
				break; 
			case 'button': 
			case 'file': 
			case 'image': 
			case 'reset': 
			case 'submit': 
			default:  
		}
	}
	return jsonObject;
}

/**
* 把表单元素迭代转换成json数据
*/
function iterJsonObject(jsonObject, parentName, childName, eValue){
	//pArrayIndex用于判断元素是否是数组标示
	pArrayIndex = parentName.indexOf('[');
	//判断是否集合数据，不是则只是对象属性
	if(pArrayIndex &lt; 0){
		var child = jsonObject[parentName];
		if(!child){
			jsonObject[parentName] = {};
		}
		dotIndex = childName.indexOf('.');
		if(dotIndex &gt; 0){
			iterJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
		}else{
			jsonObject[parentName][childName] = eValue;
		}
	}else{
		pArray = jsonObject[parentName.substring(0, pArrayIndex)];
		//若不存在js数组，则初始化一个数组类型
		if(!pArray){
			jsonObject[parentName.substring(0, pArrayIndex)] = new Array();
		}
		//取得集合下标，并判断对应下标是否存在js对象
		arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
		var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
		if(!c){
			jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex] = {};
		}
		dotIndex = childName.indexOf('.');
		if(dotIndex &gt; 0){
			iterJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1), eValue);
		}else{
			jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName] = eValue;
		}
	}
}

/**
* 迭代json数据对象设置到表单域中
*/
function iterValueFromJsonObject(jsonObject, parentName, childName){
	//pArrayIndex用于判断元素是否是数组标示
	pArrayIndex = parentName.indexOf('[');
	//判断是否集合数据，不是则只是对象属性
	if(pArrayIndex &lt; 0){
		dotIndex = childName.indexOf('.');
		if(dotIndex &gt; 0){
			return iterValueFromJsonObject(jsonObject[parentName], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
		}else{
			return jsonObject[parentName][childName]
		}
	}else{
		pArray = jsonObject[parentName.substring(0, pArrayIndex)];
		//取得集合下标，并判断对应下标是否存在js对象
		arrayIndex = parentName.substring(pArrayIndex+1, parentName.length-1);
		var c = jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex];
		dotIndex = childName.indexOf('.');
		if(dotIndex &gt; 0){
			return iterValueFromJsonObject(jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex], childName.substring(0, dotIndex), childName.substring(dotIndex+1));
		}else{
			return jsonObject[parentName.substring(0, pArrayIndex)][arrayIndex][childName]
		}
	}
}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>欢迎大家讨论，最近在研究jsp页面纯净，只与js有关，但这将导致rich client</p>
<p>&nbsp;</p>
<p>so bad&nbsp; 不知道有什么好的建议没&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250780" style="color:red;">已有 <strong>14</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 15:14:28 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250780</link>
        <guid>http://www.javaeye.com/topic/250780</guid>
      </item>
          <item>
        <title>DWR实例详解</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://collonn.javaeye.com">collonn</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251588" style="color:red;">http://www.javaeye.com/topic/251588</a>&nbsp;
          发表时间: 2008年10月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><strong>1:</strong></p>
<p>请先参阅--DWR中文文档 v0.9 -- For <strong>Dwr 2.0</strong>--这是最新版的DWR中文教程，在百度一下载吧</p>
<p>DWR相关.jar包和.js文件下载地址: <a href="http://directwebremoting.org/dwr/download">http://directwebremoting.org/dwr/download</a>&nbsp;找到</p>
<p>
<table class="rowed" border="0">
<tbody>
<tr>
<th>Download</th><th>Version 2.0.5</th><th>Size</th>
</tr>
<tr>
<td><strong>JAR File</strong>:</td>
<td><a href="https://dwr.dev.java.net/files/documents/2427/101132/dwr.jar">dwr.jar</a>(<strong>下载</strong>)</td>
<td><small><span style="font-size: x-small;">(490Kb)</span></small></td>
</tr>
<tr>
<td><strong>WAR File</strong>:</td>
<td><a href="https://dwr.dev.java.net/files/documents/2427/101133/dwr.war">dwr.war</a></td>
<td><small><span style="font-size: x-small;">(2.14Mb)</span></small></td>
</tr>
<tr>
<td><strong>Sources</strong>:</td>
<td><a href="https://dwr.dev.java.net/files/documents/2427/101134/dwr-2.0.5-src.zip">dwr-2.0.5-src.zip</a>&nbsp;(<strong>下载</strong>)</td>
<td><small><span style="font-size: x-small;">(20.77Mb)</span></small></td>
</tr>
</tbody>
</table>
</p>
<p><strong>2:</strong></p>
<p>将dwr.jar放到: 你的工程/WEB-INF/lib/下</p>
<p>用解压缩软件打开-src.zip文件，进入目录:\/java\org\directwebremoting，找到engine.js和util.js并将其解压出来，在 你的工程/WebRoot/ 下新建文件夹 dwr\interface，将engine.js和util.js放在dwr\下</p>
<p>以下两步为必要的准备工作，如果你要在html中测试dwr的话</p>
<p><strong>3:</strong></p>
<p>打开WEB-INF\web.xml，修改为如下：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" <br /><span style="color: #000000;">&nbsp;xmlns="</span><a href="http://java.sun.com/xml/ns/j2ee"><span style="color: #000000;">http://java.sun.com/xml/ns/j2ee</span></a><span style="color: #000000;">" <br />&nbsp;xmlns:xsi="</span><a href="http://www.w3.org/2001/XMLSchema-instance"><span style="color: #000000;">http://www.w3.org/2001/XMLSchema-instance</span></a><span style="color: #000000;">" <br />&nbsp;xsi:schemaLocation="</span><a href="http://java.sun.com/xml/ns/j2ee"><span style="color: #000000;">http://java.sun.com/xml/ns/j2ee</span></a><span style="color: #000000;"> <br />&nbsp;</span><a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><span style="color: #000000;">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</span></a><span style="color: #000000;">"&gt;</span><br />&lt;servlet&gt; <br />&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&nbsp; <strong>&lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt;</strong> <br />&nbsp; &lt;init-param&gt;<br />&nbsp; &nbsp;&lt;param-name&gt;debug&lt;/param-name&gt;<br />&nbsp; &nbsp;&lt;param-value&gt;true&lt;/param-value&gt;<br />&nbsp; &lt;/init-param&gt;<br />&lt;/servlet&gt;<br />&lt;servlet-mapping&gt; <br />&nbsp; &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt; <br />&nbsp; &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt; <br />&lt;/servlet-mapping&gt; <br />&lt;/web-app&gt;</p>
<p><span style="color: #0000ff;"><span style="color: #000000;">其中黑体加粗部分为</span><strong>DWR2.x版</strong></span><span style="color: #000000;">的DwrServlet位置</span>，如果用DWR1.x,应改为:&lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;，开发者应该参考dwr.jar文件中的实际位置写</p>
<p><strong>4:</strong></p>
<p>写一个简单的类文件：</p>
<p>package collon;</p>
<p>public class Service {<br />&nbsp;public String sayHello(String yourName){<br />&nbsp;&nbsp;return "Welcome :" + yourName;<br />&nbsp;}<br />}</p>
<p><strong>5:</strong></p>
<p>在WEB-INF\下新建dwr.xml，内容为下：</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt; <br />&lt;!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting <strong>2.0</strong>//EN" <span style="color: #000000;">"</span><a href="http://www.getahead.ltd.uk/dwr/dwr20.dtd"><span style="color: #000000;">http://www.getahead.ltd.uk/dwr/<strong>dwr20.dtd</strong></span></a><span style="color: #000000;">"&gt;</span> <br />&lt;dwr&gt;<br />&nbsp;&lt;allow&gt;<br />&nbsp;&nbsp;&lt;create creator="new" javascript="service"&gt;<br />&nbsp;&nbsp;&nbsp;&lt;param name="class" value="collon.Service"/&gt;<br />&nbsp;&nbsp;&nbsp;&lt;include method="sayHello"/&gt;<br />&nbsp;&nbsp;&lt;/create&gt;<br />&nbsp;&lt;/allow&gt;<br />&lt;/dwr&gt;</p>
<p>注意黑体加粗字，是dwr2.0的标准DTD文档声明，其中，javascript="service"为要生成的，可远程调用的，javascript方法名</p>
<p><strong>6：</strong></p>
<p>启动tomcat服务器吧</p>
<p><strong>7：</strong></p>
<p>打开网页，输入<a href="http://localhost:8080/">http://localhost:8080/</a>你的工程/dwr&nbsp;&nbsp; 按回车，测试吧，会有如下输出:</p>
<h2>Classes known to DWR:</h2>
<ul>
<li><a href="/firstDwr/dwr/test/service">service</a> (collon.Service) </li>
</ul>
<p>点service，会进入如下页面：</p>
<h2>Methods For: service (collon.Service)</h2>
<p>To use this class in your javascript you will need the following script includes:</p>
<pre>  &lt;script type='text/javascript' src=<strong>'</strong><a href="/firstDwr/dwr/interface/service.js"><strong><span style="color: #000000;">/firstDwr/dwr/interface/service.js</span></strong></a><strong><span style="color: #000000;">'</span></strong>&gt;&lt;/script&gt;
  &lt;script type='text/javascript' src='<a href="/firstDwr/dwr/engine.js">/firstDwr/dwr/engine.js</a>'&gt;&lt;/script&gt;
</pre>
<p>In addition there is an optional utility script:</p>
<pre>  &lt;script type='text/javascript' src='<a href="/firstDwr/dwr/util.js">/firstDwr/dwr/util.js</a>'&gt;&lt;/script&gt;
</pre>
<p>Replies from DWR are shown with a yellow background if they are simple or in an alert box otherwise.<br />The inputs are evaluated as Javascript so strings must be quoted before execution.</p>
<p>There are 10 declared methods:</p>
<ul>
<li>sayHello( <input maxlength="2147483647" size="10" class="itext" title="Will be converted to: java.lang.String" id="p00" type="text" value="&quot;&quot;" /> ); <input maxlength="2147483647" size="20" class="ibutton" title="Calls service.sayHello(). View source for details." type="button" value="Execute" onclick="service.sayHello(objectEval($(&quot;p00&quot;).value), reply0);" />
<script type="text/javascript"></script>
(<strong>在双引号中输入字符串，可以测试了)...............</strong></li>
</ul>
<p><strong>8：</strong></p>
<p>点击 '<a href="/firstDwr/dwr/interface/service.js"><span style="color: #000000;">/firstDwr/dwr/interface/service.js</span></a><span style="color: #000000;">' 将其保荐到 \WebRoot\dwr\interface 下</span></p>
<p><strong>9：</strong></p>
<p>新建html页面，代码如下:</p>
<p>&lt;%@ page language="java" import="java.util.*" pageEncoding="gbk"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&nbsp; &lt;head&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;My Dwr Testing&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='/你的工程/<strong>dwr/interface/service.js'</strong>&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='/你的工程/<strong>dwr/engine.js'</strong>&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='/你的工程/<strong>dwr/util.js'</strong>&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script type='text/javascript' src='/你的工程/<strong>js/first.js'</strong>&gt;&lt;/script&gt;<br />&nbsp; &lt;/head&gt;<br />&nbsp; <br />&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;input type="text" width="100" id="yourName" /&gt;&lt;input type="button" value="Click Me" onclick="demo();" /&gt;&lt;br /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp; &lt;/body&gt;<br />&lt;/html&gt;</p>
<p>注：请注意各.js文件的位置要准确无误</p>
<p><strong>10:</strong></p>
<p>建立/你的工程/<strong>js/first.js</strong> 文件，内容如下:</p>
<p>function demo(){<br />&nbsp;&nbsp;&nbsp; &nbsp;service.sayHello($('yourName').value,callback);//注意，service.sayHello是js文件代码，不是Java类Service.sayHello<br />&nbsp;&nbsp;&nbsp; }<br />function callback(msg){<br />&nbsp;DWRUtil.setValue("result",msg);<br />}</p>
<p><strong>11:</strong></p>
<p>输入页面测试吧</p>
<p><strong>12:</strong></p>
<p><strong>请我们看一看DwrServlet生成的.js代码:</strong></p>
<p>// Provide a default path to dwr.engine<br />if (dwr == null) var dwr = {};<br />if (dwr.engine == null) dwr.engine = {};<br />if (DWREngine == null) var DWREngine = dwr.engine;</p>
<p>if (service == null) var service = {};<br />service._path = '/firstDwr/dwr';<br />service.sayHello = function(<span style="color: #0000ff;">p0,</span> <span style="color: #0000ff;">callback</span>) {<br />&nbsp; dwr.engine._execute(service._path, 'service', <span style="color: #0000ff;">'sayHello', p0, callback</span>);<br />}</p>
<p>不知道大家看出点什么没有</p>
<p>&nbsp;</p>
<p>好了，就写到就里了，有时间再研究一下 DWR 的 源代码</p>
<p><strong>本实例源码下载：</strong><a href="http://www.box.net/shared/ql013z0j7k"><strong>http://www.box.net/shared/ql013z0j7k</strong></a></p>
<p><strong><span style="color: #0000ff;">Fighting!!</span></strong></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251588" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Oct 2008 12:43:05 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251588</link>
        <guid>http://www.javaeye.com/topic/251588</guid>
      </item>
          <item>
        <title>兼容IE与Firefox浏览器的跨域操作</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cxlh.javaeye.com">kongshanxuelin</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251299" style="color:red;">http://www.javaeye.com/topic/251299</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在我们编写大型Web项目时，有时不可避免的会有跨域读取的操作，一般都会采用script标签的src方式，我也采用了这种方式，但一开始是利用给src赋值的方法实现跨域操作，但很奇怪的是在IE下运行一切正常，但在Firefox浏览器下却不工作，后来采用如下方式解决问题：</p>
<pre name="code" class="js">if(document.getElementById(this.scriptelementid)){
	var el=document.getElementById(this.scriptelementid);
	var p=el.parentNode;  
	p.removeChild(el);   
}
var head = document.getElementsByTagName(&quot;head&quot;).item(0);  
var script = document.createElement (&quot;script&quot;);  
script.src = url;
script.id=this.scriptelementid;
head.appendChild(script);  
</pre>
&nbsp;
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251299" style="color:red;">已有 <strong>3</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 14:51:35 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251299</link>
        <guid>http://www.javaeye.com/topic/251299</guid>
      </item>
          <item>
        <title>用jQuery动手写一个插件：实现一个下拉框效果</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://freeway2000.javaeye.com">freeway2000</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251554" style="color:red;">http://www.javaeye.com/topic/251554</a>&nbsp;
          发表时间: 2008年10月11日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>前段时间在项目中运用到了jQuery，的确是个好东西，不敢私藏，特拿出来分享一下。</p>
<p>jQuery 是一种 JavaScript 库，它是开发人员简化动态富 Internet 应用程序创建的最佳选择。至少我是这么认为。除开jQuery的易用性以外，她最为强大的地方就是她的插件功能，jQuery官网上成百上千个插件足以证明这一事实。jQuery开发插件同样也是一件非常的简单而愉快的事情。接下来要做的就是用jQuery写一个下拉框效果的插件。</p>
<p>本文要求对jQuery以及javascript知识有一定了解的人，如果你还不熟悉，你可以先阅读<a href="http://www.k99k.com/jQuery_getting_started.html">http://www.k99k.com/jQuery_getting_started.html</a></p>
<p>首先去<a href="http://jqueryjs.googlecode.com/files/jquery-1.2.6.js">http://jqueryjs.googlecode.com/files/jquery-1.2.6.js</a>下载jQuery的源码。</p>
<p>接下来创建一个下拉框插件的js文件，将其命名为jquery.contextbox.js。</p>
<p>我们需要给插件加入三个功能：1.创建下拉框 2.隐藏下拉框 3.隐藏所有的下拉框</p>
<pre name="code" class="js">;(function($) {
/**
* 创建一个下拉框
* @name     createContextBox
* @param    options 可选参数，参数包含如下：
*    width:设置下拉框宽度(可选) 
*    offsetX:下拉框的X坐标偏移量(可选)
*    offsetY:下拉框的Y坐标偏移量(可选)
*    content:下拉框中说呈现的内容
* @author   hu wei
* @type     jQuery
* @example $("#contextbox").createContextBox({'width':'500px','offsetX':-220,content:'haha,test!'}); 
*/
$.fn.createContextBox = function(options) {
var contextBoxDivE = $('&lt;div class="contextbox" style="display:none;position:absolute;z-index:1005;" &gt;&lt;/div&gt;');
this.contextBoxDivE = contextBoxDivE;
contextBoxDivE.contextBox = this;
//设置下拉框的可选数据
if (options) {
   var content = options['content'];
   this.content = $(content);
   if (content)contextBoxDivE.html(this.content);
   var width = options['width'];
   if (width)contextBoxDivE.css("width",width);
}
//存入缓存
var contextBoxs = $('body').data('contextBoxs');
if (!contextBoxs) contextBoxs = [];
contextBoxs.push(this);
$('body').data('contextBoxs',contextBoxs);
if (jQuery.browser.msie) {
   //如果是IE需要加入iframe，以防止&lt;select&gt;这样的控件显现在div的上面
   var ieiframeE = $('&lt;iframe style="display:none;position:absolute;z-index:1000;border-width:0px;" &gt;&lt;/iframe&gt;');
   this.ieiframeE = ieiframeE;
   this.after(ieiframeE);
   this.after(contextBoxDivE);
   this.bind("click", function(e){
    var contextBoxs = $('body').data('contextBoxs');
      for (var i = 0;i&lt;contextBoxs.length;i++) {
      contextBoxs[i].hideContextBox();
      }
      var offset = $(this).offset();
          ieiframeE.css("top",offset.top+24+(options&amp;&amp;options['offsetY']?options['offsetY']:0));
          ieiframeE.css("left",offset.left+(options&amp;&amp;options['offsetX']?options['offsetX']:0));
          ieiframeE.show();
          contextBoxDivE.css("top",offset.top+24+(options&amp;&amp;options['offsetY']?options['offsetY']:0));
          contextBoxDivE.css("left",offset.left+(options&amp;&amp;options['offsetX']?options['offsetX']:0));
       contextBoxDivE.show();
       ieiframeE.height(contextBoxDivE.height());
       ieiframeE.width(contextBoxDivE.width());
      });
      contextBoxDivE.resize(function(){
      $(this).next().height($(this).height());
      $(this).next().width($(this).width());
      });
} else {
   //将下拉框放置在你说点击的对象后面
   this.after(contextBoxDivE);
   //点击这个对象后弹出下拉框
   this.bind("click", function(e){
   var contextBoxs = $('body').data('contextBoxs');
   for (var i = 0;i&lt;contextBoxs.length;i++) {
      contextBoxs[i].hideContextBox();
   }
   //设置下拉框的位置
   var offset = $(this).offset();
        contextBoxDivE.css("top",offset.top+24+(options&amp;&amp;options['offsetY']?options['offsetY']:0));
        contextBoxDivE.css("left",offset.left+(options&amp;&amp;options['offsetX']?options['offsetX']:0));
        //显示下拉框
     contextBoxDivE.show();
      });
}
return this;
};
/**
* 隐藏下拉框
* @name     hideContextBox
* @author   hu wei
* @type     jQuery
* @example $("#contextbox").hideContextBox(); 
*/
$.fn.hideContextBox = function() {
this.next().hide();
if (jQuery.browser.msie) this.next().next().hide();
return this;
};

$.hideAllContextBox = function(options) {
var contextBoxs = $('body').data('contextBoxs');
for (var i = 0;i&lt;contextBoxs.length;i++) {
   contextBoxs[i].hideContextBox();
}
};

})(jQuery);
</pre>
<p>&nbsp;</p>
<p>OK插件已经写完了，不到100行的代码，简单吧！</p>
<p>接下来写一个用于测试这个插件的html页面，将这个名称命名为contextbox.html，代码如下：</p>
<pre name="code" class="html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;title&gt;context box sample&lt;/title&gt;
&lt;style type="text/css"&gt;
div.contextbox {border:2px solid #ccc;background:#fff}
&lt;/style&gt;
&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="jquery.contextbox.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;
$().ready(function() {
$("#contextbox1").createContextBox(
{"content":"&lt;div&gt;哈哈，我是下拉框1！&lt;br/&gt;我终于现身了！&lt;br/&gt;&lt;input type='button' id='colsecontextbox1' value='关闭' /&gt;&lt;/div&gt;"});
$("#contextbox2").createContextBox(
{"content":"&lt;div&gt;哈哈，我是下拉框2！&lt;br/&gt;我终于现身了！&lt;br/&gt;&lt;input type='button' id='colsecontextbox2' value='关闭' /&gt;&lt;/div&gt;"});
$("#colsecontextbox1").click(function(){$("#contextbox1").hideContextBox();});
$("#colsecontextbox2").click(function(){$("#contextbox2").hideContextBox();});
});
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a id="contextbox1" href="javascript:void(0);"&gt;点击弹出下拉框1&lt;/a&gt;
&lt;a id="contextbox2" href="javascript:void(0);"&gt;点击弹出下拉框2&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;

</pre>
<p>&nbsp;<br />可以看到创建一个下拉框控件，你只需要两个步骤：</p>
<p>1.在你的html页面中加入&lt;script type="text/javascript" src="jquery.contextbox.js"&gt;&lt;/script&gt;</p>
<p>2.给你的dom元素上执行一下createContextBox方法就可以了：<br />$("#contextbox1").createContextBox({"content":"XXXX"});</p>
<p>&nbsp;</p>
<p>运行这html文件，你就会看到如下样式的效果了。</p>
<div>
<p><img src="/upload/attachment/41990/f23ae2d3-92f9-3266-81a3-5b77e8989020.jpg" height="115" alt="" width="300" /></p>
<p>&nbsp;</p>
<p>呵呵，当然看上去有些简陋，但是如果细细加工的话，完全能够弄成像搜狐通行证的那种下拉框的效果。</p>
<p>&nbsp;</p>
<div>
<p><img src="/upload/attachment/41992/ae5df21f-43ab-3019-a87a-d7683225af2d.jpg" alt="" /></p>
<p><br />后面的一篇文章，将会在这个下拉框的基础之上再作进一步的扩展，实现一个能够查看学校信息的下拉框的插件。</p>
</div>
</div>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251554" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 11 Oct 2008 11:18:37 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251554</link>
        <guid>http://www.javaeye.com/topic/251554</guid>
      </item>
          <item>
        <title>Show一下ROR结合Ext的成果</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://taito.javaeye.com">taito</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250835" style="color:red;">http://www.javaeye.com/topic/250835</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用到<strong>ext</strong>的 data, tree, grid,form, panel, layout等<br /><br />主要是生成ext 的 <strong>json</strong>格式数据，及<strong>ror </strong><strong>rest</strong>方法有些麻烦，其它的到还好，多看API文档就行了。<br /><br />其中rails后台部分，用到了betternestedset插件。<br /><br /><br />*:<br /><br /><span style="color: brown">因为还没有找到一家稳定又方便的ror服务器提供商，所以现在在网上看不到实际的应用效果。<br /><br />目前为止只能在本机浏览，有提供ror支持的服务器商可以推荐一下。</span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250835" style="color:red;">已有 <strong>2</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 16:46:46 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250835</link>
        <guid>http://www.javaeye.com/topic/250835</guid>
      </item>
          <item>
        <title>扩展了一棵jquery的树插件SimpleTree，加上了json格式数据异步加载能力</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://bluespring.javaeye.com">bluespring</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/249851" style="color:red;">http://www.javaeye.com/topic/249851</a>&nbsp;
          发表时间: 2008年10月07日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>学习使用jquery以来，一直没找到一棵简单并且支持异步加载的树，无奈只有自己扩展一下。jquery官方ui的treeView功能单一且不够小巧。偶然发现<a href="http://news.kg/wp-content/uploads/tree/" title="simpleTree Plugin" target="_blank">SimpleTree</a>
插件发现它小巧而且支持拖拽很方便扩展，于是在simpleTree基础上做了json格式数据异步加载和树上使用的图片路径自适应的扩展。做的较为粗糙，请大家指点！</p>
<p>&nbsp;</p>
<p>因为实在实际项目中使用，下面的例子是基于struts2的，除struts2环境还需要struts-json插件<a href="http://code.google.com/p/jsonplugin/downloads/list" title="jsonPlugin">jsonPlugin</a>
 ，对于直接使用servlet仅需要使用jsonlib中的静态方法将java List转换为json字符串。</p>
<p>&nbsp;</p>
<p><span style="color: #339966;">修改后树的初始化方式</span>
</p>
<pre name="code" class="js">$(document).ready(function(){
	simpleTreeCollection = $('#simpleTree').simpleTree({
		autoclose: true,
		animate:true,
		dataType:"json",
		url:"tree!demoTest.action"
	});
	
});</pre>
&nbsp;
<pre name="code" class="html">&lt;body&gt; &lt;ul id="simpleTree" class="simpleTree"&gt;&lt;/ul&gt;&lt;/body&gt;</pre>
&nbsp;
<p>&nbsp;</p>
<p><span style="color: #339966;">修改后的初始化树的默认选项的代码</span>
</p>
<pre name="code" class="js">TREE.option = {
			drag:		true,
			animate:	false,
			autoclose:	false,
			speed:		'fast',
			afterAjax:	false,
			afterMove:	false,
			afterClick:	false,
			afterDblClick:	false,
			// added by Erik Dohmen (2BinBusiness.nl) to make context menu cliks available
			afterContextMenu:	false,
			docToFolderConvert:false,
			//***added by Bluespring to enable json dataType***
			dataType:"json", //value is json or html
			async:true,
			jsonWrap:{//if your dataType of json differ from following default type,you can wrap it
				id:"id",//node id
				parentId:"parentId",//parent node id
				text:"text",//node text
				isfolder:"isfolder",//indication node whether or not folder, value is true or false,if not need, set it to null for nothing to do
				attrs:"attrs"//addition data for special action to customize function,if not need, set it to null for nothing to do
			},
			url:null, //if null,will use simple tree default setting. if not null,simpleTree defalut setting will be cover
			parm:{},//parameters for ajax request, always add or overwrite a key/value(key:jsonWrap.id,value:folder id) when expand folder
			responseDataName:"nodes",//if your java nodeList name differ from "nodes", set it as your nodeList name
			treeName:"tree"
		};

</pre>
<p>&nbsp;</p>
<p>E文不好注释有点乱，请大家别介意。代码中的jsonWrap选项是转换器，有了它我们就不必在后台封装特定对象的List传出来，只有返回List中的对象具有对应于id、parentId、text的属性就可以。当然如果你界面上自定制的功能需要用到额外的数据的话，必须的在后台自己封装如下的对象的List</p>
<pre name="code" class="java">package util.tree.bean;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class SimpleTreeNode {
	private Object id;
	private String text;
	private Object parentId;
	
	/**
	 * 仅用于需要异步读取数据的文件夹节点。当节点有子节点时，该属性不起作用。节点永远为文件夹节点 
	 */
	private boolean isFolder=false; 
	private HashMap&lt;String, Object&gt; attrs=new HashMap&lt;String,Object&gt;();
	
	public SimpleTreeNode(Object id, String text,Object parentId){
		this.id=id;
		this.text=text;
		this.parentId=parentId;
	}
	
	public SimpleTreeNode(Object id, String text, Object parentId,boolean isFolder){
		this.id=id;
		this.text=text;
		this.parentId=parentId;
		this.isFolder=isFolder;
	}
	
	public SimpleTreeNode(Object id, String text, Object parentId,boolean isFolder,HashMap&lt;String,Object&gt; attrs){
		this.id=id;
		this.text=text;
		this.parentId=parentId;
		this.isFolder=isFolder;
		this.attrs=attrs;
	}
	
	public void addAttribute(String key,Object value){
		this.attrs.put(key, value);
	}
	
	public Object getId() {
		return id;
	}
	public void setId(Object id) {
		this.id = id;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public Object getParentId() {
		return parentId;
	}
	public void setParentId(Object parentId) {
		this.parentId = parentId;
	}

	public boolean isFolder() {
		return isFolder;
	}

	public void setFolder(boolean isFolder) {
		this.isFolder = isFolder;
	}

	public HashMap&lt;String, Object&gt; getAttrs() {
		return attrs;
	}

	public void setAttrs(HashMap&lt;String, Object&gt; attrs) {
		this.attrs = attrs;
	}
	
	
	
}</pre>
<p>&nbsp;</p>
<p><span style="color: #339966;">js端使用异步数据生成树节点代码</span>
</p>
<pre name="code" class="js">//***added by Bluespring for auto imgPath***
		//get js path
		var jsPath = "";
            var js = $("script[src]").get();
            for (var i = js.length; i &gt; 0; i--) {
                if (js[i - 1].src.indexOf("tree.js") &gt; -1) {
                    jsPath = js[i - 1].src.substring(0, js[i - 1].src.lastIndexOf("/") + 1);
                }
        }
		//***added by Bluespring to enable json dataType***
		var coverJsonToHtml=function(nodeArray){
			//create tree node
			var ul=$("&lt;ul&gt;");
			var nodeWrap=TREE.option.jsonWrap;
			var tempLi=null;
			for(var i in nodeArray){
				tempLi=$('&lt;li id="'+nodeArray[i][nodeWrap.id]+'"&gt;&lt;span&gt;'+nodeArray[i][nodeWrap.text]+'&lt;/span&gt;&lt;/li&gt;');
				if(nodeWrap.attrs!=null){
					tempLi.attr(nodeArray[i][nodeWrap.attrs]);
				}
				if(null!=nodeArray[i][nodeWrap.parentId]){
					tempLi.get(0).parentId=nodeArray[i][nodeWrap.parentId];
					tempLi.get(0).isFolder=nodeWrap.isFolder!=null?nodeArray[i][nodeWrap.isFolder]:false;
				}
				ul.append(tempLi);
			}
			//arrange tree node
			var parentLi=null;
			$("&gt; li",ul).each(function(){
				if(this.parentId){
					parentLi=$("#"+$(this).attr("parentId"),ul);
					if($("ul",parentLi).size()==0){
						parentLi.append("&lt;ul&gt;");
					}
					$(this).appendTo($("ul",parentLi));
				}
				if(this.isFolder&amp;&amp;$("ul",this).size()==0){
					$(this).append("&lt;ul&gt;");
				}
			});
			$("ul",ul).each(function(){
				if($("li",this).size()==0){
					$(this).addClass("ajax");
				}
	
			});
			return ul;
		};</pre>
&nbsp;
<p>在此附上测试用的action类及struts配置</p>
<p>&nbsp;</p>
<pre name="code" class="java">package org.wisdoor.web.util;

import java.util.ArrayList;
import java.util.List;

import org.wisdoor.web.WisdoorAction;

import util.tree.bean.SimpleTreeNode;


public class TreeAction extends WisdoorAction {
	
	private List&lt;SimpleTreeNode&gt; nodes=new ArrayList();
	
	
	public String demoTest(){
		for(int i=0;i&lt;10;i++){
			nodes.add(new SimpleTreeNode(""+i,"node_"+i,null,true));
			for(int n=0;n&lt;5;n++){
				nodes.add(new SimpleTreeNode((""+i)+"_"+n,"node_"+i+"_"+n,""+i));
			}
		}
		return SUCCESS;
	}
	

	public List&lt;SimpleTreeNode&gt; getNodes() {
		return nodes;
	}

	public void setNodes(List&lt;SimpleTreeNode&gt; nodes) {
		this.nodes = nodes;
	}
	
	
}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="xml">&lt;!-- Tree --&gt;&lt;package name="tree" extends="json-default"&gt;&lt;action name="tree" class="org.wisdoor.web.util.TreeAction" &gt;&lt;result type="json"&gt;&lt;param name="ignoreHierarchy"&gt;
                    false&lt;/param&gt;&lt;/result&gt;&lt;/action&gt;&lt;/package&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; 在插件目录下有测试用的页面，需要后台准备数据</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;<span style="color: #ff9900;">修改了TREE的初始化参数，新增了parm参数和responsDateName参数，parm是访问数据需要传后台的数据，responsDateName是后台返回的list的name</span></p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/249851" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 07 Oct 2008 14:44:18 +0800</pubDate>
        <link>http://www.javaeye.com/topic/249851</link>
        <guid>http://www.javaeye.com/topic/249851</guid>
      </item>
          <item>
        <title>美工在项目中的位置是什么?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://superxielei.javaeye.com">superxielei</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250912" style="color:red;">http://www.javaeye.com/topic/250912</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近完成了一个项目，现在希望将项目产品化。但是有一个问题，没有美工~~~<br />当初完成项目是在外边借了一个美工来做的，大概做了1个月，然后就走了。当时美工完成了大部分的页面，全部table，在后期有调整的时候出现了很多问题，项目组能共灵活编写界面的人不多，基本就是2个人会。而且都是习惯div+css的，看table一个头两个大，造成的后果就是。最后项目的页面充实着零碎的div+css，显的很零乱，而且是两个人做的，很多东西没能实现良好的衔接和复用。<br /><br />一个美工2000人月左右(沈阳地区个人猜测的价格)，这个项目完成用了6个月，美工满打满算需要工作2个月的时间。<br />如果是借人，那么4000一个人月是要的吧?2个月就是8000。。<br />自己聘跟随项目6个月，那就需要12000。<br /><br />我相信借来的人和公司本身的人在工作的时候热情度是不一样的。那么工作质量也就会有差别。谁好谁坏大家心里有数。<br />对于一个项目美工的设计需要的时间并不会跟项目同样长的时间，最长在项目做一半的时候也就都结束了，再有的也就是小的调整，那么其他时间可以在其他项目组工作。其他项目组都没工作的时候，也可以安排一些整理页面，实现可复用等工作。如果对代码有兴趣还可以让其学习一些新的技术，flex等等，接触一些代码也会给以后的工作带来很大的便利。<br />虽然在工资上可能说自己请的美工要贵一些，但是考虑到其他因素还是很划算的。<br /><br />为什么公司就一直没有美工呢？美工能难找吗？还是我理解的不对，美工是可有可无的呢？<br />现在要做产品，那么没有美工怎么办?一个美工对于一个项目他的位置何在?
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250912" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 20:32:36 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250912</link>
        <guid>http://www.javaeye.com/topic/250912</guid>
      </item>
          <item>
        <title>json+pop窗体实现的无限菜单（网上的代码改进）</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yxylwt.javaeye.com">yxylwt</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250595" style="color:red;">http://www.javaeye.com/topic/250595</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          从后台代码直接返回json对象就可以显示成菜单了<br />&lt;HTML><br />&lt;HEAD><br />&lt;style><br />body,td{<br />	font-size:9pt;margin:0;overflow:hidden;border:0;<br />}<br />.PopMenuOutset{border:1px solid;border-color: buttonface threeddarkshadow threeddarkshadow buttonface;FILTER: progid:DXImageTransform.Microsoft.Shadow(direction=135,color=buttonshadow,strength=3); }<br />.PopMenuInset{border:1px solid;border-color: buttonhighlight buttonshadow buttonshadow buttonhighlight;}<br />.PopMenu{background-color: buttonface;}<br />.PopMenuItem{height:18px;cursor:default;}<br />.PopMenuItemOver{height:18px;background-color: highlight;color:highlighttext;cursor:default;}<br />.PopMenuItemOver img{height:18px;background-color: highlight;color:highlighttext;cursor:default;}<br />&lt;/style><br /><br />&lt;SCRIPT LANGUAGE="JScript"><br /><br />var Menu={<br />&nbsp;&nbsp;&nbsp; MenuItem:[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:1,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:"menu1",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MenuItem:[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {id:11,title:"menu11"},{id:12,title:"menu12",MenuItem:[{id:121,title:"menu121"}]}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:2,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:"menu2"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id:3,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:"menu3"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; ]<br />}<br /><br /><br />// 当前展开的菜单项<br />var preObj = null;<br /><br />// 创建当前窗体（可以是IE窗体也可以是Popup窗体）的Popup对象<br />// 这个Popup对象就是用来存储子菜单数据的<br />var oPopup = document.parentWindow.createPopup(); <br /><br /><br />// 鼠标经过菜单项<br />function ItemOver(obj)<br />{<br />	// 隐藏已经打开的菜单项<br />	if (preObj != null)<br />	{<br />		if (preObj == obj)<br />			return;<br />		oPopup.hide();<br />		<br />		// 要清空原Popup中的数据——document.write()方法是接着原来的内容往里面写，所以如果不清空会出现重复数据<br />		oPopup =&nbsp; document.parentWindow.createPopup();<br />		<br />		// 恢复前一个菜单项的状态<br />		ItemNormal(preObj);<br />		preObj = null;<br />	}<br /><br />	if (obj.cells(2).children.length > 0) //有子菜单<br />	{<br />		// 根据子菜单xml数据和当前xsl文档生成HTML<br />		var sHtml = document.documentElement.outerHTML;<br /><br />		sHtml=sHtml.replace(/&lt;TABLE class(=+[\s\S]*)&lt;\/TD>&lt;\/TR>&lt;\/TBODY>&lt;\/TABLE>&lt;\/TD>&lt;\/TR>&lt;\/TBODY>&lt;\/TABLE>&lt;\/TD>&lt;\/TR>&lt;\/TBODY>&lt;\/TABLE>/ig,'');<br />		<br />		sHtml=sHtml.replace(/document.write\(ShowMenu\(([^\(]*)\)\)/,'document.write(ShowMenu("'+obj.cells(1).id+'"))');<br />				<br />		oPopup.document.write(sHtml);<br />		<br />		// 计算popup内容的实际宽度高度<br />		oPopup.show(0, 0, 1, 1, document.body);<br />		var width = oPopup.document.body.scrollWidth;<br />		var height = oPopup.document.body.scrollHeight;<br />		oPopup.hide();<br /><br />		// 显示菜单<br />		oPopup.show(obj.offsetWidth, 0, width, height, document.body);<br />		<br />		preObj = obj;<br />		obj.cells(2).children(0).src = "images/ArrowRHighlight.gif";<br />	}<br />	obj.className='PopMenuItemOver';<br />}<br /><br />function ItemClick(obj)<br />{<br />	ItemOver(obj);<br />}<br /><br /><br />// 鼠标移出菜单项<br />function ItemOut(obj)<br />{<br />	if (oPopup.isOpen &amp;&amp; preObj == obj) // 如果子菜单被打开则跳过<br />		return;<br />	ItemNormal(obj);<br />}<br /><br />// 恢复到菜单项的默认状态<br />function ItemNormal(obj)<br />{<br />	obj.className='PopMenuItem';<br />	if (obj.cells(2).children.length > 0)<br />	{<br />		obj.cells(2).children(0).src = "images/ArrowR.gif";<br />	}<br />}<br /><br /><br />function ShowMenu(id){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; var shtml="";<br />&nbsp;&nbsp;&nbsp; shtml+="&lt;table&nbsp; id=popupmenu border='0' cellpadding='0' cellspacing='0' width='110' class='PopMenuOutset' >";<br />	shtml+="&lt;tr>&lt;td>&lt;table border='0' cellpadding='1' cellspacing='0' width='100%' class='PopMenuInset'>";<br />	shtml+="&lt;tr>&lt;td class='PopMenu'>&lt;table border='0' cellpadding='0' cellspacing='0' width='100%' onselectstart='return false;'>";<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; for (var i=0; i&lt; eval(id+".length");i++){<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;tr height=18 onmouseover='ItemOver(this)' onmouseout='ItemOut(this)' onclick='ItemClick(this)' >";&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;td width='17' align='center'>&lt;IMG SRC='images/dot1.gif' WIDTH='6' HEIGHT='6' BORDER='0' ALT=''/>&lt;/td>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;td id='"+id+"["+i+"].MenuItem'>"+eval(id+"["+i+"].title")+"&lt;/td>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;td width='20' align='right' valign='top' style='padding-right: 6px; padding-top:4px;'>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (eval(id+"["+i+"].MenuItem")!=null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;img src='images/arrowR.gif'/>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shtml+="&lt;/td>&lt;/tr>";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp; shtml+="&lt;/table>&lt;/td>&lt;/tr>&lt;/table>&lt;/td>&lt;/tr>&lt;/table>";<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; return shtml;<br /><br />}<br /><br /><br />&lt;/SCRIPT><br /><br />&lt;/head><br /><br />&lt;body> <br />&nbsp;&nbsp;&nbsp; &lt;script>document.write(ShowMenu("Menu.MenuItem"));&lt;/script><br />&lt;/body><br /><br />&lt;/html>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250595" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 09:53:32 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250595</link>
        <guid>http://www.javaeye.com/topic/250595</guid>
      </item>
          <item>
        <title>jPagination </title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cuilidong.javaeye.com">cuilidong</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250566" style="color:red;">http://www.javaeye.com/topic/250566</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          利用JQuery方便实现基于Ajax的数据查询、排序和分页功能 <br />前很少会用javascript去实现页功能主要怕麻烦，但了解JQuery后这种想法发生了变化；有了这样的脚本组件就可以在编写脚本时方便和HTML隔离出来，这样编写高重用性的脚本就更方便。下面就是介绍在学习JQuery过程中编写的基于Ajax的数据查询、排序和分页功能的复用脚本，只要遵循脚本的某些规则描述HTML把脚本文件引入就可以方便实现以上描述的功能。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先看下实现功能的脚代码：<br /><br />/**应用脚本规则：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引用脚本: JQuery脚本和JQuery的form插件脚本<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form的ID:&nbsp;&nbsp;&nbsp; viewform<br /><br />&nbsp;&nbsp;&nbsp; 显示数据的div的ID: listview<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 分页按钮HTML属性: pageindex="1"<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 排序按钮HTML属性: orderfield="employeeid desc";<br /><br />提效排序字段Input的ID,Name: orderfield<br /><br />提交分页索引Input的ID,Name: pageindex<br /><br />**/<br /><br />function onInitPaging()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; $("#listview").find("[@orderfield]").each(function(i)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ordervalue = $(this).attr("orderfield");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).click(function()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#orderfield").val(ordervalue);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onSubmitPage();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; );<br /><br />&nbsp;&nbsp;&nbsp; $("#listview").find("[@pageindex]").each(function(i)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var piValue = $(this).attr("pageindex");<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(this).click(function()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#pageindex").val(piValue);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onSubmitPage();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; );<br /><br />}<br /><br />function onSubmitPage()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp; var options = {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success: function SubmitSuccess(data){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#listview").html(data);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onInitPaging();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; };<br /><br />&nbsp;&nbsp;&nbsp; $('#viewform').ajaxSubmit(options);<br /><br />}<br /><br />$(document).ready(<br /><br />&nbsp;&nbsp;&nbsp; function()<br /><br />&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#search").click(function(){<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $("#pageindex").val('0');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onSubmitPage()<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onSubmitPage();<br /><br />&nbsp;&nbsp;&nbsp; }<br /><br />);<br /><br />约束规则巧用了html的自定义属性，以上代码描述查询，排序和分页的ajax提交处理。在编写HTML时只需要遵循描述的规则即可，你并不需要在编写任何脚本代码；只需要把脚本添加到页面里：<br />http://www.knowsky.com<br />&nbsp;&nbsp;&nbsp; &lt;script src=jquery-latest.js>&lt;/script><br /><br />&nbsp;&nbsp;&nbsp; &lt;script src=form.js>&lt;/script><br /><br />&nbsp;&nbsp;&nbsp; &lt;script src=calendar.js>&lt;/script><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;script src=calendar-setup.js>&lt;/script><br /><br />&nbsp;&nbsp;&nbsp; &lt;script src="lang/calendar-en.js">&lt;/script><br /><br />&nbsp;&nbsp;&nbsp; &lt;script src=pagination.js>&lt;/script><br /><br />&nbsp;&nbsp;&nbsp; &lt;form id="viewform"&nbsp; method="post" action="FrmOrderView.aspx"><br /><br />&nbsp;&nbsp;&nbsp; &lt;input id="orderfield" name="orderfield" type="hidden" value="" /><br /><br />&nbsp;&nbsp;&nbsp; &lt;input id="pageindex" name="pageindex" type="hidden" value ="0"/><br /><br />&nbsp;&nbsp;&nbsp; &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td valign="top" align="left"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width="550" cellpadding="0" cellspacing="0"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 63px; height: 17px; background-color: gainsboro;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CompanyName&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 114px; height: 17px;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="Text1" name="companyname" type="text" />&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 63px; height: 17px; background-color: gainsboro;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShipCity&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 126px; height: 17px;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="Text2" name="shipcity" type="text" />&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 63px; height: 14px; background-color: gainsboro;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OrderDate&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 240px; height: 14px;" align="left"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="Text3" name="OrderDate_Begin" type="text" /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="button1" DateField="Text3" type="button" value="..." />&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 63px; height: 14px; background-color: gainsboro;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 240px; height: 14px;" align="left"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="Text4" type="text" name="OrderDate_End" /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="button2" DateField="Text4" type="button" value="..." />&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="height: 50px" align="left" colspan="4"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input id="search" type="button" value="Search" />&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td height="99%"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;div id="listview">&lt;/div><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form><br /><br /><br />数据提供页面:<br /><br /><br />&lt;%@ Page Language="C#" AutoEventWireup="true" Inherits="HFSoft.MVC.DataViewContext" %><br /><br />&lt;%@ Import Namespace="NorthWind.Entities" %><br /><br />&lt;%<br /><br />&nbsp;&nbsp;&nbsp; HFSoft.MVC.IDataViewContext dataview = (HFSoft.MVC.IDataViewContext)this;<br /><br /> %><br /><br />&lt;table width="100%" ><br /><br />&nbsp;&nbsp; &lt;% if(dataview.PageCount >0){%><br /><br />&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="7" style="height: 20px"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" pageindex="0" >首页&lt;/a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" pageindex="&lt;% =dataview.PrevPage%>">上一页&lt;/a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" pageindex="&lt;% =dataview.NextPage %>" >下一页&lt;/a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" pageindex="&lt;% =dataview.PageCount-1%>">末页&lt;/a><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前&lt;%=dataview.PageIndex+1%>页／共&lt;%=dataview.PageCount %>页<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br /> <br /><br />&nbsp;&nbsp;&nbsp; &lt;%}%><br /><br />&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" orderfield="&lt;%=dataview.GetOrderInfo("CompanyName")%>" >CustomerName&lt;/a>&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" orderfield="&lt;%=dataview.GetOrderInfo("Employees.EmployeeID")%>" >EmployeeName&lt;/a>&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" orderfield="&lt;%=dataview.GetOrderInfo("OrderDate")%>" >OrderDate&lt;/a>&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a href="#" orderfield="&lt;%=dataview.GetOrderInfo("RequiredDate")%>" >RequireDate&lt;/a>&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShipAddress&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ShipCity&lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px; font-weight: bold; background-color: activeborder;"><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SipCountry&lt;/td><br /><br />&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp; &lt;%foreach(Order_v item in dataview.DataItems)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { %><br /><br />&nbsp;&nbsp;&nbsp; &lt;tr><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.CustomerName)%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.EmployeeName)%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.OrderDate, "{0:d}")%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.RequiredDate, "{0:d}")%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.ShipAddress)%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;%=dataview.ToValue(item.ShipCity)%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 100px">&lt;% =dataview.ToValue(item.ShipCountry)%><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td><br /><br />&nbsp;&nbsp;&nbsp; &lt;/tr><br /><br />&nbsp;&nbsp;&nbsp; <br /><br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;% } %><br /><br />&nbsp;&nbsp; <br /><br />&lt;/table><br /><br /><br />数据提供页相关Controller代码:<br /><br /><br />[HFSoft.MVC.FormMapper("~/frmorderview.aspx")]<br /><br />public void OrderView()<br /><br />{<br /><br />&nbsp;&nbsp;&nbsp; HFSoft.MVC.IDataViewContext viewcontext = (HFSoft.MVC.IDataViewContext)this.FormContext;<br /><br />&nbsp;&nbsp;&nbsp; IExpression exp;<br /><br />&nbsp;&nbsp;&nbsp; FieldAdapter[] orderby = null;<br /><br />&nbsp;&nbsp;&nbsp; OrderSearch search = viewcontext.BindObject&lt;OrderSearch>();<br /><br />&nbsp;&nbsp;&nbsp; exp = search.GetExpression();<br /><br />&nbsp;&nbsp;&nbsp; if (viewcontext.OrderField != null &amp;&amp; viewcontext.OrderField != string.Empty)<br /><br />&nbsp;&nbsp;&nbsp; {<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orderby = new FieldAdapter[]{new FieldAdapter(viewcontext.OrderField, null)};<br /><br />&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp; Region region = new Region(viewcontext.PageIndex * 10, viewcontext.PageIndex * 10+10);<br /><br />&nbsp;&nbsp;&nbsp; viewcontext.DataItems = exp.List&lt;Order_v>(region, orderby);<br /><br />&nbsp;&nbsp;&nbsp; viewcontext.PageSize = 10;<br /><br />&nbsp;&nbsp;&nbsp; viewcontext.RecordCount = exp.CountOf&lt;Order_v>();<br /><br />}<br /><br />下载例程代码和脚源码:http://www.cnblogs.com/Files/henryfan/AjaxSearchDataSample.rar
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250566" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 09:04:06 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250566</link>
        <guid>http://www.javaeye.com/topic/250566</guid>
      </item>
          <item>
        <title>常见js函数</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://spitcold.javaeye.com">spitcold</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250558" style="color:red;">http://www.javaeye.com/topic/250558</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          /*根据元素ID查找元素*/<br />function $() {<br />	var elements = new Array();<br />	for (var i = 0; i &lt; arguments.length; i++) {<br />		var element = arguments[i];<br />		if (typeof element == 'string')<br />			element = document.getElementById(element);	<br />	&nbsp;&nbsp;&nbsp; if (arguments.length == 1)<br />			return element;<br />		elements.push(element);<br />&nbsp; }<br />&nbsp; return elements;<br />}<br /><br />/*根据元素ID取得元素*/<br />function $E(elemid) {<br />	return document.getElementById(elemid);<br />}<br /><br />/*根据元素ID取得元素的value*/<br />function $Vo(elemid) {<br />	return document.getElementById(elemid).value;<br />}<br /><br />/*根据元素ID取得元素的innerHTML*/<br />function $H(elemid) {<br />	return document.getElementById(elemid).innerHTML;<br />}<br /><br />/*根据元素ID隐藏该元素*/<br />function $Hide(id) {<br />&nbsp;&nbsp;&nbsp; document.getElementById(id).style.display = 'none';<br />}<br /><br />/*根据元素ID显示该元素*/<br />function $Display(id) {<br />&nbsp;&nbsp;&nbsp; document.getElementById(id).style.display = 'block';<br />}<br /><br />/*根据元素ID设置该元素为空*/<br />function $Dlose(id) {<br />&nbsp;&nbsp;&nbsp; document.getElementById(id).innerHTML='';<br />}<br /><br />/*网页转向*/<br />function $U(url){<br />	window.location.href=url;<br />}<br /><br />/*取字符长度，一个中文字符为两个字节*/<br />function $Len(str){<br />	return (''+str).replace(/[^\x0000-\xFF00]/gi,'xx').length;<br />}<br /><br />//用正则表达式将前后空格用空字符串替代。<br />function trim(strSrc)<br />{<br />	return strSrc.replace(/(^\s*)|(\s*$)/g, "");<br />}
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250558" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 08:28:15 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250558</link>
        <guid>http://www.javaeye.com/topic/250558</guid>
      </item>
          <item>
        <title>Google Chrome 浏览器常见问题</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jindw.javaeye.com">jindw</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250487" style="color:red;">http://www.javaeye.com/topic/250487</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>Google Chrome 雷区之一：与众不同的eval实现</strong><br /><br />运行代码：<br /><pre name="code" class="java">
javascript:var eval2 = eval;with({a:1})eval2("a+2")</pre><br /><br />在chrome上运行是要报错的。<br /><br />记得ecma262 3rd上有一句，eval不应该通过引用别名调用（可能是处于优化的考虑吧）。<br />不过以往的实现中都没把这句话放在心上。<br /><br />chrome虽然没有完全严格遵循ecma的的限制，不过，貌似还是充分利用理ecma的优化指导。<br />好同学，不愧是时下最快的js引擎。<br /><br />貌似Chrome在eval的实现上，更加贴近标准了。<br />不过，这也许仅仅是chrome的一个bug，也许会在若干明主的口水淹没后，开始兼容更多的事实标准。<br /><br /><strong>Google Chrome 雷区之二：警惕中文</strong><br />var x = {<br />&nbsp;&nbsp; "中文":"安全"<br />}<br /><br />压缩后将变成：<br /><br />var x={<br />中文:"危险"<br />}<br /><br /><br />基于rhino的压缩工具（JSA，YUI-Compressor），都会自动做上述优化，但是，貌似目前chrome对中文代码的支持有限<br /><br /><br /><br /><strong>Google Chrome雷区之三－－莫动arguments对象</strong><br /><br />arguments与参数变量的关联<br /><br />javascript:+function(a){var a= 'false';alert(arguments[0])}(true)<br /><br />输出的是:false,<br />firefox3 也是如此<br /><br /><br />javascript:+function(a){Array.prototype.splice.call(arguments,0,1);alert(a)}(1)<br />输出的是undefined 其他浏览器都不是。<br /><br /><br />再翻阅一下ECMA标准的描述<br /><br />10.1.8 Arguments Object<br /><br />&nbsp;&nbsp;&nbsp; When control enters an execution context for function code, an arguments object is created and initialised as follows:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * The value of the internal [[Prototype]] property of the arguments object is the original Object prototype object, the one that is the initial value of Object.prototype (see 15.2.3.1).<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * A property is created with name callee and property attributes { DontEnum }. The initial value of this property is the Function object being executed. This allows anonymous functions to be recursive.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * A property is created with name length and property attributes { DontEnum }. The initial value of this property is the number of actual parameter values supplied by the caller.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * For each non-negative integer, arg, less than the value of the length property, a property is created with name ToString(arg) and property attributes { DontEnum }. The initial value of this property is the value of the corresponding actual parameter supplied by the caller. The first actual parameter value corresponds to arg = 0, the second to arg = 1, and so on. In the case when arg is less than the number of formal parameters for the Function object, this property shares its value with the corresponding property of the activation object. This means that changing this property changes the corresponding property of the activation object and vice versa.<br /><br />应该说，Google的实现是最贴近标准的。<br />而其他浏览器都或多或少没能实现。<br /><br />这时为什么呢？自然有他的理由....<br /><br /><br />而我们能做的，那就是开发过程中，少动这个对象吧。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250487" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 21:00:30 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250487</link>
        <guid>http://www.javaeye.com/topic/250487</guid>
      </item>
          <item>
        <title>对事件追加的小改造</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://campaign.javaeye.com">campaign</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250381" style="color:red;">http://www.javaeye.com/topic/250381</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我觉得对元素的事件添加有一下问题<br />1.ie中this指针问题<br />2.不能传递参数<br />3.ie泄露问题<br />我写了个封装程序，应该能觉得上述问题，欢迎拍砖<br /><pre name="code" class="java">
&lt;body>
	&lt;input id='aa' />
	&lt;input onclick=util.remEvt(o,'click',test) />
&lt;/body>
&lt;/html>
&lt;script>
var util = {
		addEvt:function(o,e,f,p){
				f.Elm = o;
				o[e+f] = function(){return function(event){f.apply(f.Elm,[event||window.event].concat(p))}}()
    			document.all?o.attachEvent('on'+e,o[e+f]):o.addEventListener(e,o[e+f],false);
    			o = null;
		},
		remEvt:function(o,e,f){
			document.all?o.detachEvent('on'+e,o[e+f]):o.removeEventListener(e,o[e+f],false);
			o[e+f] = f.Elm = null;
		}
}
function test(e,p){
	alert([this.tagName,(e.srcElement||e.target).tagName,p])
}
var o = document.getElementById('aa');
util.addEvt(o,'click',test,'bb')	
&lt;/script>
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250381" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 16:35:00 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250381</link>
        <guid>http://www.javaeye.com/topic/250381</guid>
      </item>
          <item>
        <title>DashLine</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://flysnail.javaeye.com">flysnail</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250300" style="color:red;">http://www.javaeye.com/topic/250300</a>&nbsp;
          发表时间: 2008年10月08日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          &lt;?xml version="1.0" encoding="utf-8"?><br />&lt;mx:Label xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"><br />&nbsp;&nbsp;&nbsp; &lt;mx:Script><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; import mx.core.UIComponent;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if flag is true,draw horizon line ,else vertical line.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Bindable]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public var flag : Boolean = true;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super.updateDisplayList(unscaledWidth, unscaledHeight);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*&nbsp; var num : Array = [2,3];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dashLineToPattern(this, 10000,50,60,50,num); */<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var labelX:Number = this.x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var labelY:Number = this.y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; drawDashLineType(flag, labelX, labelY);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public function drawDashLineType(flag : Boolean, labelX : Number, labelY : Number) : void<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var ToX:Number;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp