<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[wind]]></title>
<link>http://feng.kiyeer.net/</link>
<description><![CDATA[创造机会的人是勇者；等待机会的人是愚者]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[yong8868@163.com(wind)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>wind</title>
	<url>http://feng.kiyeer.net/images/logos.gif</url>
	<link>http://feng.kiyeer.net/</link>
	<description>wind</description>
</image>

			<item>
			<link>http://feng.kiyeer.net/article.asp?id=435</link>
			<title><![CDATA[关于 0x04bd8 的解释]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[web技术]]></category>
			<pubDate>Mon,20 Dec 2010 16:31:03 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=435</guid>
		<description><![CDATA[var lunarInfo=new Array(<br/>0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,<br/>0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,<br/>0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,<br/>0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,<br/>0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,<br/>0x06ca0,0x0b550,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,<br/>0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,<br/>0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,0x195a6,<br/>0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,<br/>0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,<br/>0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,<br/>0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,<br/>0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,<br/>0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,<br/>0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,<br/>0x14b63);<br/><br/> <br/><br/>正确的解释是：<br/><br/> <br/>二进制形式 xxxx &#160;&#160;&#160;&#160;xxxx &#160;&#160;&#160;&#160;xxxx &#160;&#160;&#160;&#160;xxxx &#160;&#160;&#160;&#160;xxxx<br/>20-17 &#160;&#160;&#160;&#160;16-12 &#160;&#160;&#160;&#160;12-9 &#160;&#160;&#160;&#160;8-5 &#160;&#160;&#160;&#160;4-1<br/><br/> <br/><br/>1-4: 表示当年有无闰年，有的话，为闰月的月份，没有的话，为0。<br/><br/>5-16：为除了闰月外的正常月份是大月还是小月，1为30天，0为29天。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意：从1月到12月对应的是第16位到第5位。<br/><br/>17-20：表示闰月是大月还是小月，仅当存在闰月的情况下有意义。<br/><br/>举个例子：<br/><br/>1980年的数据是： 0x095b0<br/><br/>二进制：0000&nbsp;&nbsp;&nbsp;&nbsp;1001 0101 1011 0000<br/><br/> 表示1980年没有闰月，从1月到12月的天数依次为：30、29、29、30、29、30、29、30、30、29、30、30。<br/><br/>1982年的数据是：0x0a974<br/><br/>0000 1010 1010 0111 0100<br/><br/>表示1982年的4月为闰月，即有第二个4月，且是闰小月。<br/><br/>从1月到13月的天数依次为：30、29、30、29、29(闰月)、30、29、30、29、29、30、30、30。]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=434</link>
			<title><![CDATA[jQuery滑动代码返回顶部]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[web技术]]></category>
			<pubDate>Tue,12 Oct 2010 22:35:11 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=434</guid>
		<description><![CDATA[其实这篇文章是从木木那里借鉴过来的，也可以说是完全翻版过来的，呵呵，但是记得好像有朋友问过，那今天就来写一下教程吧。<br/><br/>效果图就不发了，大家可以看见我博客左边的三个滑动按钮，第一个是返回顶部，第二个是来到评论，最后一个是去到底部。当然，首页就只有返回顶部和底部。罗嗦了这么多，咱们开始折腾。<br/><br/>首先呢，得有这三张小图片，不用急，Nox会把下载地址给大家的。<br/><br/>下面在index.php文件下，加入以下代码：<br/><br/>&lt;div id=&#34;shangxia&#34; &gt;&lt;div id=&#34;shang&#34;&gt;&lt;/div&gt;&lt;div id=&#34;xia&#34; &gt;&lt;/div&gt;&lt;/div&gt;<br/>（这里是让首页只显示上下滑动按钮。）<br/><br/>然后在把下面的代码加入到single.php文件里：<br/><br/>&lt;div id=&#34;shangxia&#34;&gt;&lt;div id=&#34;shang&#34;&gt;&lt;/div&gt;&lt;div id=&#34;comt&#34;&gt;&lt;/div&gt;&lt;div id=&#34;xia&#34;&gt;&lt;/div&gt;&lt;/div&gt;<br/>（这里是阅读文章的时候，三个按钮都显示。）<br/><br/>下面新建一个名为shangxia.js的JS文件，复制下面的代码，然后保存上传到当前使用的主题目录里。<br/><br/>jQuery(document).ready(function($){<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#shang&#39;).click(function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;html,body&#39;).animate({scrollTop: &#39;0px&#39;}, 800);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}); <br/>&nbsp;&nbsp;&nbsp;&nbsp;//点击id=&#34;shang&#34;对象时，滑动至相对浏览器滚动条为0px（即顶部），时间为800毫秒<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#comt&#39;).click(function(){$(&#39;html,body&#39;).animate({<br/>&nbsp;&nbsp;&nbsp;&nbsp;scrollTop:$(&#39;#comments&#39;).offset().top}, 800);<br/>&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;//点击id=&#34;comt&#34;对象时，滑动至id=&#34;comment&#34;相对浏览器滚动条的距离，时间为800毫秒<br/>&nbsp;&nbsp;&nbsp;&nbsp;$(&#39;#xia&#39;).click(function(){$(&#39;html,body&#39;).animate({<br/>&nbsp;&nbsp;&nbsp;&nbsp;scrollTop:$(&#39;#footer1&#39;).offset().top}, 800);<br/>&nbsp;&nbsp;&nbsp;&nbsp;});<br/>});<br/>在然后，在CSS文件里，添加以下代码：<br/><br/>#shangxia{position:fixed;top:40%;left:50%;margin-left:-520px;display:block;}<br/>/* 使用fixed使id=“shangxia”的对象固定于浏览器中，相对的上距离为40%，左距离为50%（即居中），然后向左移动520px（需自行调整！！！） */<br/>#shang{background:url(images/shang.gif) no-repeat;position:relative;cursor:pointer;height:32px;width:32px;margin:10px 0;}<br/>#xia{background:url(images/xia.gif) no-repeat;position:relative;cursor:pointer;height:32px;width:32px;margin:10px 0;}<br/>#comt{background:url(images/comt.gif) no-repeat;position:relative;cursor:pointer;height:32px;width:32px;margin:10px 0;}<br/>然后在header.php页面加载jQuery，如果你以前加载过，就可以跳过这一步了。<br/><br/>&lt;script type=&#34;text/javascript&#34; src=&#34;<a href="http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js" target="_blank" rel="external">http://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js</a>&#34;&gt;&lt;/script&gt;<br/>最后一步，在header.php页面(也就是上面的代码下面）加载刚刚创建的JS文件，顺序一定不能颠倒，一定要在jQuery库后面加载。<br/><br/>&lt;script type=&#34;text/javascript&#34; src=&#34;&lt;?php bloginfo(&#39;template_url&#39;); ?&gt;/shangxia.js&#34;&gt;&lt;/script&gt;<br/>到这里就全部完工了，呵呵，大家去试试，效果不错，用起来很也方便，特别是评论很多，而且不翻页显示的博客，例如小邪，619的博客，就是评论不翻页。<br/><br/>好了，有什么问题，可以给Nox留言哦，Nox一定会及时的回复。<br/><br/>对了，还有三张图片的下载地址：点我去下载 （把图片上传到当前使用主题的images文件夹内。）]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=433</link>
			<title><![CDATA[jQuery获得页面元素的绝对/相对位置]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[web技术]]></category>
			<pubDate>Tue,12 Oct 2010 16:46:35 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=433</guid>
		<description><![CDATA[获取页面某一元素的绝对X,Y坐标，可以用offset()方法：<br/><br/><br/>var X = $(&#39;#DivID&#39;).offset().top;<br/>var Y = $(&#39;#DivID&#39;).offset().left;<br/>获取相对(父元素)位置:<br/><br/><br/>var X = $(&#39;#DivID&#39;).position().top;<br/>var Y = $(&#39;#DivID&#39;).position().left;<br/>]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=432</link>
			<title><![CDATA[yahoo yui css框架]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Sun,19 Sep 2010 11:07:01 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=432</guid>
		<description><![CDATA[非常强大的一个css框架，使用起来非常方便，很值得去学习里面的架构。<br/>主要特色<br/>* 负Margin技术<br/>* 使用度量单位em<br/>* 清除布局的浮动<br/>另外针对不想深入了解的一般用户设计了一个在线编辑的工具非常使用，简单的网页布局不到一分钟可以直接生成。<br/>框架生成地址：<a href="http://developer.yahoo.com/yui/grids/builder/" target="_blank" rel="external">http://developer.yahoo.com/yui/grids/builder/</a>]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=431</link>
			<title><![CDATA[YAHOO YUI工具库]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Fri,17 Sep 2010 11:29:51 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=431</guid>
		<description><![CDATA[1.1. YAHOO工具库提供的方法<br/>l namespace<br/><br/>用于创建一个全局的命名空间，使用YUI时，首先会自动创建widget,util,example三个命名空间，使用时也可以自定义命名空间。类似于在程序中建了了一个static变量。<br/><br/>l lang<br/><br/>javascript扩展的语言工具，用于判别对象的类型。<br/><br/>l lang.extend<br/><br/>用于从一个对象上扩展出另一个对象，模拟了类的继承的方式，但不同的是，在创建子对象时，父对象的构造函数不会自动调用。父对象的引用存放在了子对象的 supperclass中，构成了一个链状继承关系。在2.2.2的版本中，YAHOO.lang.extend和YAHOO.extend指向同一函数对象。<br/><br/>l lang.augment<br/><br/>将一个对象的属性（部分或全部）复制到另一个对象，但并非真正意义上的复制，只是一种引用。YAHOO.augment=YAHOO.lang.augment。<br/><br/>l log<br/><br/>用来调试的一个工具，将信息显示到log控件。<br/><br/>l env<br/><br/>环境信息和YUI组件信息<br/><br/>l YUI_config.listener<br/><br/>可以定义自己的回调函数，当有新的YUI组件加载到页面时将会调用YUI_config.listener指向的函数。<br/><br/><br/><br/>2. YUI提供的Dom操作<br/>特点：对于大部分DOM操作提供了批量操作的功能，而对用户只需使用统一的函数接口就能完成单个或批量的操作，主要得益于DOM内部的batch方法。<br/><br/><br/><br/>2.1. Element的查找<br/>YAHOO.util.Dom.get(element)<br/><br/>调用document.getElementById(element)，获取指定的页面元素。<br/><br/><br/><br/>YAHOO.util.Dom.getElementsBy(method,tagName,rootNode)<br/><br/>在 rootNode的子节点中按照用户提供的method方法在所有标签为tagName的element中查找符合条件的节点。rootNode不指定则在整个Document中查找，method是一个method(elementID)类型的函数对象，该函数对象的返回值为Boolean值。<br/><br/><br/><br/>YAHOO.util.Dom.getElementsByClassName(className, tagName, rootNode)<br/><br/>返回指定根节点下所有标签为tagName,class为className的DOM节点数组。根节点为可选参数，不指定时在整个页面中查找<br/><br/><br/><br/>YAHOO.util.Dom.inDocument(el)<br/><br/>判断元素el是否在当前的DOM中，支持批量操作。<br/><br/><br/><br/>2.2. 样式控制和访问<br/>YAHOO.util.Dom.hasClass(element, className)<br/><br/>判断element标签上是否指明了className的class，支持批量操作<br/><br/><br/><br/>YAHOO.util.Dom.addClass(element, className)<br/><br/>给指定标签增加名为className的class，支持批量操作.<br/><br/><br/><br/>YAHOO.util.Dom.removeClass(element, className)<br/><br/>删除element上的名为className的class，支持批量操作<br/><br/><br/><br/>YAHOO.util.Dom.replaceClass(element, oldClassName, newClassName)<br/><br/>替换element上的oldClassName样式为newClassName，支持批量操作<br/><br/><br/><br/>YAHOO.util.Dom.getStyle(element, property)<br/><br/>获取element的style中的property属性，支持批量操作<br/><br/><br/><br/>YAHOO.util.Dom.setStyle(element,property,pValue)<br/><br/>设置element的style的property属性为pValue，支持批量操作<br/><br/><br/><br/>注：本节中的class指的是CSS中定义的class。<br/><br/><br/><br/>2.3. 位置控制和访问<br/>位置控制的相关函数<br/><br/>YAHOO.util.Dom.setX<br/><br/>YAHOO.util.Dom.setY<br/><br/>YAHOO.util.Dom.setXY<br/><br/>YAHOO.util.Dom.getX<br/><br/>YAHOO.util.Dom.getXY 返回元素坐标 [ left,top ]<br/><br/>YAHOO.util.Dom.getRegion<br/><br/>获取元素的坐标Region对象{left,top,right,bottom}<br/><br/>可支持批量操作<br/><br/><br/><br/>获取页面可视面积的高度和宽度<br/><br/>YAHOO.util.Dom.getClientWidth<br/><br/>YAHOO.util.Dom.getClientHeight<br/><br/><br/><br/>获取Document的高度和宽度<br/><br/>YAHOO.util.Dom.getDocumentWidth<br/><br/>YAHOO.util.Dom.getDocumentHeight<br/><br/><br/><br/>获取页面可视区域的高度和宽度（不包含滚动条）<br/><br/>YAHOO.util.Dom.getViewportHeight<br/><br/>YAHOO.util.Dom.getViewportWidth<br/><br/><br/><br/>Region对象：{left,top,right,bottom}<br/><br/>YUI提供的一个对象，用于完成多个矩形区域间的计算（如相交，包含。<br/><br/>YAHOO.util.Region.contains(region)<br/><br/>判断是否包含了region区域<br/><br/>YAHOO.util.Region.getArea<br/><br/>计算面积<br/><br/>YAHOO.util.Region.intersect(region)<br/><br/>计算与region区域的交迭区域<br/><br/>YAHOO.util.Region.union(region)<br/><br/>计算与region区域求并集（即包含两个区域的最小区域）<br/><br/><br/><br/>Point对象：{x,y}<br/><br/>YUI提供的对象，用于定义坐标点。<br/><br/>3. YUI提供的element工具<br/>YUI 提供了一组操作页面element的工具，是对标准HTML elements的一种封装，能够直接通操作element的实例，使得增加监听器，操作DOM，设置/获取element的属性等工作变得很简单。部分方法是直接调用YUI的DOM工具集提供的方法，如对class操作的相关方法、获取element的相关方法等等，在此不再重复。<br/><br/>YAHOO.util.Element(elementId)<br/><br/>创建element，如果elementId在Document中还不存在，仍然可以通过YUI对他进行属性设置，增加监听器等操作， Element工具集会自动等到该elementId可用后执行这些操作，实际上真正的操作是等到contentReady事件发生后才进行的。<br/><br/><br/><br/>YAHOO.util.Element.appendChild(child)<br/><br/>在DOM结构中element下增加子节点<br/><br/><br/><br/>YAHOO.util.Element.getElementsByTagName(tag)<br/><br/>获取tagName为tag的所有页面元素<br/><br/><br/><br/>YAHOO.util.Element.hasChildNodes<br/><br/>判断是否具有子节点<br/><br/><br/><br/>YAHOO.util.Element.ins&#101;rtBefore(element, before)<br/><br/>在元素before前插入element<br/><br/><br/><br/>YAHOO.util.Element.removeChild(child)<br/><br/>删除DOM中元素的child子节点<br/><br/><br/><br/>YAHOO.util.Element.replaceChild (newNode , oldNode)<br/><br/>替换子节点oldNode为newNode<br/><br/>4. YUI提供的Event工具集<br/>YUI 提供的Event工具集简化了浏览器中事件驱动程序的编写，提供了一种简单的接口来定制事件和检查浏览器中的event对象。YUI事件工具集提供了自定义事件对象(Custom Event)，通过自定义事件对象可以“发布”自己感兴趣的时刻或事件，页面中的YUI组件能够响应这些自定义的事件并做出回应。<br/><br/>YUI对事件响应的顺序：通过YUI Event工具集添加的事件，默认是在冒泡过程中执行事件处理函数的。从DOM节点上来说，是从子节点向根节点响应事件。<br/><br/><br/><br/>Event需要的引入<br/>&lt;!-- Dependency --&gt;<br/><br/>build/yahoo/yahoo-min.js<br/><br/>&lt;!-- Event source file --&gt;<br/><br/>build/event/event-min.js<br/><br/><br/><br/>Event和Custom Event分别定义在YAHOO.util.Event和YAHOO.util.CustomEvent中<br/><br/>Event工具集提供的方法<br/>YAHOO.util.Event.addListener(element,eventType,fn,obj,override)<br/><br/>参数：<br/><br/>element：为绑定事件的元素id，可以是一个数组，以支持批量操作<br/><br/>eventType：为事件类型<br/><br/>fn：为事件响应的回调函数<br/><br/>obj：当override为true时，为回调函数传入的参数对象；当override为false时，该参数被忽略。<br/><br/>override：<br/><br/>返回值类型：Boolean<br/><br/>功能：给指定的element绑定事件响应函数<br/><br/><br/><br/><br/><br/>YAHOO.util.Event.removeListener:function(element,eventType,fn)<br/><br/>参数：<br/><br/>element：为绑定事件的元素id,<br/><br/>eventType：事件类型<br/><br/>fn：为事件响应函数<br/><br/>返回值类型：Boolean<br/><br/>功能：给指定的element解除绑定事件<br/><br/><br/><br/>YAHOO.util.Event.purgeElement ( el , recurse , sType )<br/><br/>参数：<br/><br/>el：为绑定事件的元素id,<br/><br/>recurse：Boolean值，是否解除子节点的事件绑定<br/><br/>sType：事件类型<br/><br/>返回值类型：Boolean<br/><br/>功能：给指定的element解除绑定的同一类型的事件，也可以解除子节点上绑定的这一类型的事件<br/><br/><br/><br/>YAHOO.util.on<br/><br/>addListener的函数别名<br/><br/><br/><br/>YAHOO.util.Event.onAvailable( p_id , p_fn , p_obj , p_override )<br/><br/>参数：<br/><br/>p_id：为绑定事件的元素id,<br/><br/>p_fn：为事件响应函数<br/><br/>p_obj：同addListener的obj参数<br/><br/>p_override：同addListener的override参数<br/><br/>返回值类型：无<br/><br/>功能：当指定的element的p_id出现时，执行事件响应函数。如果在页面初始化之前执行这一函数，当页面加载时（可能还未完成时），就会执行响应的事件响应函数；如果放在页面加载之后执行这一函数，将以固定的时间轮询，当element可用时响应这一事件。这个轮询的的时间是可以配置的，缺省的时间是 10秒一次。<br/><br/><br/><br/>YAHOO.util.Event.onContentReady( p_id , p_fn , p_obj , p_override )<br/><br/>参数：<br/><br/>p_id：为绑定事件的元素id,<br/><br/>p_fn：为事件响应函数<br/><br/>p_obj：同addListener的obj参数<br/><br/>p_override：同addListener的override参数<br/><br/>返回值类型：无<br/><br/>功能：与onAvailable类似，但不同的是事件响应函数是等到element可以安全的修改的时候才响应。<br/><br/><br/><br/>YAHOO.util.Event.onDOMReady ( p_fn , p_obj , p_scope )<br/><br/>参数：<br/><br/>p_fn：为事件响应函数<br/><br/>p_obj：同addListener的obj参数<br/><br/>p_scope：同addListener的override参数<br/><br/>返回值类型：无<br/><br/>功能：当DOM第一次可用时执行响应函数。<br/><br/><br/><br/>YAHOO.util.Event.preventDefault ( event)<br/><br/>参数：<br/><br/>event：事件对象<br/><br/>返回值类型：无<br/><br/>功能：阻止事件的缺省行为发生。<br/><br/><br/><br/>YAHOO.util.Event.getListeners ( el , sType )<br/><br/>参数：<br/><br/>el：HTML element<br/><br/>sType：事件类型，String类型<br/><br/>返回值类型：Object{<br/><br/>type：事件类型<br/><br/>fn：addListener添加的事件响应函数<br/><br/>obj：提供给事件响应函数的参数对象<br/><br/>adjust：否获取缺省的事件监听器<br/><br/>index：UI事件监听器列表中的位置<br/><br/>}<br/><br/>功能：阻止事件的缺省行为发生。<br/><br/><br/><br/>YAHOO.util.Event.getTime( event)<br/><br/>参数：<br/><br/>event：事件对象<br/><br/>返回值类型：Date对象<br/><br/>功能：获取事件发生时的时间。<br/><br/><br/><br/>YAHOO.util.Event.getTarget(ev , resolveTextNode)<br/><br/>参数：<br/><br/>evt：事件对象<br/><br/>resolveTextNode：<br/><br/>返回值类型： HTML element<br/><br/>功能：获取事件发生时的页面标签。对于IE即window.event.srcElement<br/><br/><br/><br/><br/><br/>5. YUI提供的CSS样式<br/>5.1. Fonts<br/>字体的规范样式，需要引入build/fonts/fonts-min.css<br/><br/>5.2. Reset<br/>规范了所有HTML element的缺省样式，需要引入build/fonts/reset-min.css<br/><br/>5.3. Grids<br/>提供了用于页面排版的CSS样式，需要引入build/fonts/grids-min.css<br/><br/><br/><br/>6. YUI组件<br/>6.1. Connection Manager<br/>提供了访问XMLHttpRequest对象的一个简单接口<br/><br/>对象定义：<br/>YAHOO.util.Connect.asyncRequest<br/><br/>Connection的引入：<br/>&lt;!-- Dependency --&gt;<br/><br/>build/yahoo/yahoo-min.js<br/><br/>&lt;!—可选项: 用到事件时引入 --&gt;<br/><br/>build/event/event-min.js<br/><br/>build/connection/connection-min.js<br/><br/>Connection的使用<br/>1. 创建对象<br/><br/>var transaction = YAHOO.util.Connect.asyncRequest(&#39;GET&#39;, sUrl, callback, null);<br/><br/>第一个参数：指明http请求的方式，可用的方式包括GET、POST、HEAD、PUT、Del&#101;te，但PUT和Del&#101;te可能在一些A级浏览器上不支持。<br/><br/>第二个参数：请求的URL<br/><br/>第三个参数：回调函数，用于服务器返回数据时调用的客户端处理程序<br/><br/>第四个参数：POST方式时，提供给URL的POST参数信息。<br/><br/>[注]：A级浏览器A-Grade browsers是YUI对浏览器的一个等级划分，具体划分原则详见<a href="http://developer.yahoo.com/yui/articles/gbs/index.html" target="_blank" rel="external">http://developer.yahoo.com/yui/articles/gbs/index.html</a><br/><br/>2. 定义回调函数<br/><br/>l 在异步事物中，可以创建回调函数处理服务器的响应和相关数据，如果你不关心服务器的返回信息，也可以忽略这些回调函数，所有这些回调函数对象都是可选的，然而在大多数情况下，应该至少提供以下三个回调函数：<br/><br/>success：服务器做出有效响应时的回调函数<br/><br/>failure：服务器响应了但提供了错误信息时的回调函数<br/><br/>argument：success和failure为了处理返回信息需要的参数，可以是对象、字符串、数字或者包含了数据的数组。<br/><br/>l 在使用YAHOO.util.Connect.setForm上载文件时，需要定义upload回调函数代替success和failure<br/><br/>l 在回调函数中this将失去作用范围，这种情况下需要通过一个指向父对象的引用的参数来访问对象的成员。为了能够使用对象的方法作为回调函数，并维持成员的作用范围，需要定义回调函数对象的成员scope，作为this的值。<br/><br/>6.2. Button<br/>对象定义：YAHOO.widget.Button<br/><br/>与传统HTML Form的按钮类似，不同的是它的label可以与 value不一致。还可以创建带菜单的按钮，或者radio button、checkbox<br/><br/>分类：<br/>可以创建几种类型的按钮：<br/><br/>button:普通的下压式按钮，可以在按钮按下时执行用户指定的代码<br/><br/>link:按下时导航至相应的URL<br/><br/>submit:作用相当于form的提交按钮<br/><br/>reset:form的reset按钮<br/><br/>checkbox:<br/><br/>radio:<br/><br/>menubutton:按下时显示隐藏按钮<br/><br/>splitbutton:按下时执行命令或显示菜单的按钮<br/><br/><br/><br/>使用Button必需的引入:<br/>&lt;!-- CSS --&gt;<br/><br/>build/fonts/fonts-min.css<br/><br/>build/button/assets/button.css<br/><br/><br/><br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>build/element/element-beta-min.js<br/><br/><br/><br/>&lt;!—使用menubutton和splitbutton要用到的 --&gt;<br/><br/>build/container/container_core-min.js<br/><br/>build/menu/menu-min.js<br/><br/><br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/button/button-beta-min.js<br/><br/>初始化的方式：<br/>1．使用替换&lt;input&gt;或&lt;span&gt;的方式<br/><br/>constructor：YAHOO.widget.Button(sourceElementId,{配置集})<br/><br/>Button的构造器首先根据sourceElementId在DOM中查找&lt;input&gt;，一旦找到，就通过DOM的 replaceChild方法替换掉&lt;input&gt;<br/><br/><br/><br/>2．使用新建的方式<br/><br/>constructor:YAHOO.widget.Button({配置集})<br/><br/>这种情况下根据配置集中指明的父id(Container)创建按钮，如果配置集中没有指明按钮则使用YAHOO.Dom.generateId生成button的ID,<br/><br/><br/><br/>Button的配置集<br/>属性名称<br/>含义<br/>备注<br/><br/>id<br/>替换后的新的element id<br/><br/><br/>label<br/>按钮上显示的文字<br/><br/><br/>check<br/>按钮选中/未选中的状态<br/>checkbox用到<br/><br/>type<br/>指明button的类型<br/>缺省为button<br/><br/>container<br/>按钮的父id<br/>使用新建方式时会用到<br/><br/>srcelement<br/>使用替换方式时<br/><br/><br/>menu<br/>按钮对应的菜单YAHOO.widget.menu<br/><br/><br/>title<br/>按钮title<br/>没有指定label时使用title<br/><br/>href<br/>按钮导航URL<br/>仅在按钮类型为link时有效<br/><br/>target<br/>&lt;a&gt;中的target<br/>仅在按钮类型为link时有效<br/><br/>tabindex<br/>按tab切换焦点时的顺序号<br/><br/><br/>onclick<br/>click事件的响应函数<br/>onclick:{<br/>fn: Function, // 事件的响应函数.<br/>obj: Object, // An object to pass back to the handler.<br/>scope: Object // The object to use for the scope of the handler.<br/>} }<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>6.3. ButtonGroup<br/>对象定义：YAHOO.widget.ButtonGroup<br/><br/>ButtonGroup是一组按钮，同组中只能有一个按钮被选中。根节点为&lt;div&gt;<br/><br/><br/><br/><br/><br/>6.4. AutoComplete<br/>用户在文本输入框中输入文字时，该组件通过输入的内容查找符合输入条件的内容，并显示出所有符合条件的内容，供用户能够很快的完成正确的输入。<br/><br/><br/><br/>AutoComplete的引入<br/>&lt;!-- 必须引入 --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!-- 可选: Connection(用到 XHR数据源时需要的引入) --&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!--可选: 用到动画效果时需要的引入 --&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/autocomplete/autocomplete-min.js<br/><br/><br/><br/>控制AutoComplete的配置集<br/>属性名称<br/>含义<br/>备注<br/><br/>animVert<br/>控制下拉框向下展开的动画效果<br/><br/><br/>animHoriz<br/>控制下拉框水平方向展开的动画效果<br/><br/><br/>animSpeed<br/>控制动画的速度<br/><br/><br/>delimChar<br/>一行显示多条记录时的分隔符，可以是字符串数组或字符串<br/><br/><br/>maxResultsDisplayed<br/>结果集的最大显示行数<br/><br/>minQueryLength<br/>进行查询前的输入的字符个数<br/><br/>queryDelay<br/>用户键入字符后多少秒开始查询，默认0.5<br/><br/>autoHighlight<br/>查询出来的结果集显示后，是否高亮显示第一条，默认为true<br/><br/>highlightClassName<br/>高亮显示的样式名，默认为yui-ac-highlight<br/><br/>prehightlightClassName<br/>鼠标移动到下拉框的一行上时，那一行的样式，默认为yui-ac-prehighlight<br/><br/>useShadow<br/>下拉框是否有阴影<br/><br/>useIFrame<br/>下拉框欠套在一个iframe中，用于解决IE中覆盖&lt;sel&#101;ct&gt;的问题<br/><br/>forceSel&#101;ction<br/>限制输入内容必须为查询结果中的内容，如果不是则输入内容被删除<br/><br/>typeAhead<br/>是否自动根据查询结果的第一条补齐到autocomplete中<br/><br/>allowBrowserAutocomplete<br/>是否允许浏览器提供的输入框记忆功能，默认为false<br/><br/>alwaysShowContainer<br/>是否始终显示查询结果的下拉框，默认为false<br/><br/><br/><br/>AutoComplete的使用<br/>1 自定义事件(CustomEvent)<br/><br/>AutoComplete除了默认的事件外，还有自定义的事件，以下为AutoComplete用到的各种CustomEvent<br/><br/>事件回调函数<br/>含义<br/>备注<br/><br/>textboxFocusEvent<br/>输入框获得焦点的事件<br/>textboxFocus<br/><br/>textboxKeyEvent<br/>按键弹起时的事件<br/>textboxKey<br/><br/>dataRequestEvent<br/>发出数据查询请求时的事件<br/>dataRequest<br/><br/>dataReturnEvent<br/>数据查询请求返回时的事件<br/>dataReturn<br/><br/>dataErrorEvent<br/>返回结果为空时的事件<br/>dataError<br/><br/>containerExpandEvent<br/>展开下拉框时的事件<br/>containerExpand<br/><br/>typeAheadEvent<br/>符合条件的结果自动用到第一条记录补齐时的事件<br/>typeAhead<br/><br/>itemMouseOverEvent<br/>鼠标移动到结果项上的事件<br/>itemMouseOver<br/><br/>itemMouseOutEvent<br/>鼠标移出结果项的事件<br/>itemMouseOut<br/><br/>itemArrowToEvent<br/>移动到某一选择项时的事件<br/>itemArrowTo<br/><br/>itemArrowFromEvent<br/>移出某一选择项时的事件<br/>itemArrowFrom<br/><br/>itemSel&#101;ctEvent<br/>选中某一选择项的事件<br/>itemSel&#101;ct<br/><br/>unmatchedItemSel&#101;ctEvent<br/>forceSel&#101;ction为false时，如果输入了不符合查询结果的内容时触发本事件。<br/>unmatchedItemSel&#101;ct<br/><br/>sel&#101;ctionEnforceEvent<br/>强制从结果集中选择输入项时触发的事件<br/>sel&#101;ctionEnforce<br/><br/>containerCollapseEvent<br/>下拉框收缩时的事件<br/>containerCollapse<br/><br/>textboxBlurEvent<br/>输入框失去焦点时的事件<br/>textboxBlur<br/><br/><br/><br/>可以根据需要重载自定义的事件<br/><br/>例：输入框获得焦点时自动进行查询，可以重载textboxFocusEvent<br/><br/>myAutoComp.textboxFocusEvent.subscribe(<br/><br/>//发送一个查询条件为空的查询请求<br/><br/>function(){myAutoComp.sendQuery(&#34;&#34;);}<br/><br/>);<br/><br/>2 格式化下拉框的输出<br/><br/>如果返回的结果集中有多个属性，可以通过重载formatResult来格式化结果项的输出<br/><br/>oAutoComp.formatResult = function(oResultItem, sQuery) {<br/><br/>var sMarkup = o&#114;esultItem[0] + &#34; (&#34; + o&#114;esultItem[1] + &#34;)&#34; ;<br/><br/>return (sMarkup);<br/><br/>}<br/><br/>3 AutoComplete的数据源<br/><br/>l DS_JSArray<br/><br/>data = [&#34;AAA&#34;,&#34;BBB&#34;,&#34;BCC&#34;];<br/><br/>var myDataSource = new YAHOO.widget.DS_JSArray(data);<br/><br/>可以通过DWR的方式调用java方法获得一字符串数组作为查询的下拉框，并在回调函数中可以直接使用，如：<br/><br/>l DS_JSFunction<br/><br/>l DS_XHR<br/><br/>对于JSArray方式取数时，AutoComplete可以自动根据输入的内容查在JSArray中查找符合条件的结果项，但在使用XHR方式时，YUI并没有提供默认的查找功能，必须由用户通过控制URL参数方式来实现这一功能。<br/><br/>JSON方式：<br/><br/>使用JSON格式时，创建数据源YAHOO.widget.DS_XHR时第一个参数为请求的URL，第二个参数为一数组，这一数组的第一条记录表示结果集在JSON对象的哪个对象属性下，如类似于下面结构的JSON对象<br/><br/>{<br/><br/>Result:{<br/><br/>data:[ {username:”Tom”,oldname:”Tom”,age:12”},<br/><br/>{username:”Jack”,oldname:”Jack”,age:16”}<br/><br/>]<br/><br/>}<br/><br/>}<br/><br/>如果是要查询username则结果集应该表示为”Result.data”，<br/><br/>第二条记录为搜索的主键，同上面的例子中如果是要查找出符合条件的username，则第二个数组应为”username”,如果返回的结果集中还需要返回oldname属性，则应该指名数组的第三条记录”oldname”,后面还可以指定更多的需要返回的属性。<br/><br/>因此第二个数组对象参数可以用以下方法表示：<br/><br/>[结果对象,搜索的主键,额外的返回属性1,…额外的返回属性N]<br/><br/>function initAutocomplete(){<br/><br/>var myDataSource1 = new YAHOO.widget.DS_XHR(<br/><br/>&#34;./queryUsername.action&#34;,<br/><br/>[&#34;data&#34;,&#34;username&#34;]);<br/><br/>myDataSource1.responseType = YAHOO.widget.DS_XHR.TYPE_JSON;<br/><br/>//myDataSource1.scriptQueryAppend = &#34;output=json&amp;results=100&#34;;<br/><br/>var oAutoComp = new YAHOO.widget.AutoComplete(&#34;user_username&#34;,<br/><br/>&#34;usernameContainer&#34;, myDataSource1);<br/><br/>oAutoComp.dataRequestEvent.subscribe(<br/><br/>function(oSelf,sQuery){<br/><br/>myDataSource1.scriptQueryParam = &#34;username&#34;;<br/><br/>});<br/><br/>}<br/><br/><br/><br/>XML方式：<br/><br/>应用方式与JSON方式类似，只是将reponseType指定为<br/><br/>myDataSource1.responseType = YAHOO.widget.DS_XHR.TYPE_XML<br/><br/><br/><br/>FlatData方式：<br/><br/>6.5. DataTable<br/>DataTable的引入<br/>&lt;!—需要的CSS --&gt;<br/><br/>build/datatable/assets/datatable.css<br/><br/>&lt;!--必须的引入 --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!-- 可选项，用到XHR取数方式时需要 --&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!—可选项，用到调整列宽时需要 --&gt;<br/><br/>build/dragdro&#112;/dragdro&#112;-min.js<br/><br/>&lt;!-- Source files --&gt;<br/><br/>build/datasource/datasource-beta-min.js<br/><br/>build/datatable/datatable-beta-min.js<br/><br/>DataTable的使用<br/><br/><br/>1. 定义表头<br/><br/>var myColumnHeaders = [<br/><br/>{key:&#34;name&#34;, text:&#34;姓名&#34;},<br/><br/>{key:&#34;stdno&#34;, text:&#34;学号&#34;},<br/><br/>{key:&#34;age&#34;, text:&#34;年龄&#34;, type:&#34;number&#34;}<br/><br/>];<br/><br/>YAHOO.widget.ColumnSet的属性说明<br/><br/>属性名称<br/>含义<br/><br/>key<br/>列的属性名<br/><br/>text<br/>列的显示名称<br/><br/>type<br/>列的类型，包括&#34;string&#34;, &#34;number&#34;, &#34;date&#34;, &#34;currency&#34;, &#34;checkbox&#34;, &#34;sel&#101;ct&#34;, &#34;email&#34;, &#34;link&#34;，缺省为”string”<br/><br/>resizeable<br/>Boolean值，是否可通过拖动改变列宽度<br/><br/>sortable<br/>Boolean值，是否可排序<br/><br/>abbr<br/><br/><br/>children<br/>定义子表头，类型为YAHOO.widget.ColumnSet<br/><br/>width<br/>列宽度，单位为px<br/><br/>className<br/>定义本列单元格的样式名称<br/><br/>formatter<br/>定义本列单元格的格式化函数<br/><br/>function(elCell, o&#114;ecord, oColumn, oData)<br/><br/>parse<br/><br/><br/>editor<br/>定义可编辑的列，可用的值为”textbox”，”textarea”<br/><br/>descFunction<br/>递减排序的函数function(a,b)<br/><br/>ascFunction<br/>递增排序的函数function(a,b)<br/><br/><br/><br/><br/><br/>2. 创建datatable<br/><br/>var myDataTable = new YAHOO.widget.DataTable(<br/><br/>&#34;myContainer&#34;, //datatable绑定的页面element(DIV)<br/><br/>myColumnSet, //表头定义, YAHOO.widget.ColumnSet<br/><br/>myDataSource, //数据源<br/><br/>{caption:&#34;My Caption&#34;,summary:&#34;摘要&#34;} //datatable的配置集<br/><br/>);<br/><br/>DataTable的配置集<br/><br/>属性名称<br/>含义<br/><br/>caption<br/>表格的表头文字<br/><br/>summary<br/>表格摘要<br/><br/>paginator<br/>Boolean值，是否分页，缺省为false<br/><br/>paginatorOptions<br/>{<br/><br/>containers:<br/><br/>rowsPerPage: 每页显示的记录数,<br/><br/>pageLinks: 最多显示的页面链接数，0为全部<br/><br/>currentPage:当前页<br/><br/>dro&#112;downOptions:下拉框选择项，null表示不使用下拉框<br/><br/>}<br/><br/>initialRequest<br/>XHR方式下，附加的请求参数<br/><br/>fixedWidth<br/>固定表格宽度<br/><br/>scrollable<br/>表格有滚动条，滚动时表格表头保持不动，Boolean值<br/><br/>rowSingleSel&#101;ct<br/>只允许选择一行，Boolean值<br/><br/>contextMenu<br/>表格的上下文菜单，右键弹出，YAHOO.widget.ContextMenu<br/><br/>sortedBy<br/>{colKey：排序的列,<br/><br/>dir: 排序的方向，&#34;desc&#34;和&#34;asc&#34; }<br/><br/>pageCurrent<br/>表格的当前页<br/><br/><br/><br/><br/><br/>3. DataTable的数据源<br/><br/>DS_JSArray<br/><br/>以对象数组的方式使用，可以是在客户端定义对象数组，也可以通过DWR的方式调用JAVA的方法获取一个JAVA类的List列表，在回调函数中以数组方式使用。<br/><br/>var commonDataSource = new YAHOO.util.DataSource(data);<br/><br/>//data可以为用javascript定义的对象数组，也可以是DWR方式下回调函数的参数<br/><br/>commonDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;<br/><br/>JSON<br/><br/>使用JSON对象时<br/><br/>var myDataSource = new YAHOO.util.DataSource(&#34;query.action&#34;);<br/><br/>myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;<br/><br/>myDataSource.responseSchema = {<br/><br/>resultsList: &#34;result.data&#34;,// 结果集所在的JSON结构中的对象<br/><br/>fields: [&#34;id&#34;,&#34;username&#34;,&#34;email&#34;,&#34;monicker&#34;,&#34;edit&#34;,&#34;del&#34;]<br/><br/>};<br/><br/>XML<br/><br/>var myDataSource = new YAHOO.util.DataSource(&#34;query.action&#34;);<br/><br/>myDataSource.responseType = YAHOO.util.DataSource.TYPE_XML;<br/><br/>myDataSource.responseSchema = {<br/><br/>resultNode: &#34;Item&#34;, // 结果集所在的XML结构中的结点<br/><br/>fields: [&#34;Company&#34;,&#34;Title&#34;,&#34;Name&#34;,&#34;Phone&#34;,&#34;Email&#34;] //表格的列<br/><br/>};<br/><br/>Plain Text Data<br/><br/>var myDataSource = new YAHOO.util.DataSource(&#34;query.action&#34;);<br/><br/>myDataSource.responseType = YAHOO.util.DataSource.TYPE_TEXT;<br/><br/>myDataSource.responseSchema = {<br/><br/>recordDelim: &#34;&#34;n&#34;, // 记录的分割符<br/><br/>fieldDelim: &#34;,&#34;, // 字段的分割符<br/><br/>fields: [&#34;Company&#34;,&#34;Title&#34;,&#34;Name&#34;,&#34;Phone&#34;,&#34;Email&#34;] //表格的列<br/><br/>};<br/><br/>4. DataTable数据的访问<br/><br/>这里主要指通过javascript访问DataTable数据时采用的方式。<br/><br/>var rs = YAHOO.Claim.commonDataTable.getRecordSet();<br/><br/>var obj = rs.getRecord(i); //获取第i行的数据对象<br/><br/>对象obj的属性就是定义表头时指定的各列的key值，可以通过obj[key值]访问该行上的各列属性值。<br/><br/>5. 测试<br/><br/>6.6. DragDro&#112;<br/>6.7. TreeView<br/>6.8. Container<br/>一组模拟windows控件的组件<br/><br/>Container下的控件继承关系<br/>Overlay<br/><br/>Module<br/><br/>ToolTip<br/><br/>Dialog<br/><br/>SimpleDialog<br/><br/>Panel<br/><br/><br/><br/>Container的引入<br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!—可选项：如果不使用Dialog/SimpleDialog则不需要 --&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!—可选项：使用动画效果时用到 --&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/container/container-min.js<br/><br/>6.8.1. Container下的控件<br/>由于Container下的控件的创建方式和属性控制方式基本相同，可以在创建组件时通过config对象指定控件的各项属性，也可以在创建后通过 myContainer.cfg.setAttribute来设置控件属性，通过对这些属性的控制来实现控件的不同动作表现。因此对于各个子控件的属性在下面采用配置集的方式用一个表格来说明。<br/><br/>Module<br/>一种最基础的控件模块，通过Module可以创建一个从HTML中继承下来的javascript对象，你可以操作页面中的module,也可以动态创建新的module。module是没有预定义样式的，必须手动定义。<br/><br/>使用Module必需的引入<br/>build/yahoo-demo/yahoo-dom-event.js<br/><br/>build/container/container_core-min.js<br/><br/><br/><br/>初始化的方式：<br/>constructor：YAHOO.widget.Module(ModuleId,{配置集});<br/><br/>moduleId如果页面中已经定义了moduleId,则可以直接调用render函数将设置的各种属性直接应用到module上，如果页面中没有定义这个id,则必须调用render(DOM中已经存在的element)将module插入到DOM中。<br/><br/>显示/隐藏Module<br/>方式一：<br/><br/>myModule.show();<br/><br/>myModule.hide();<br/><br/>方式二：<br/><br/>myModule.cfg.setProperty(&#34;visible&#34;, true);<br/><br/>myModule.cfg.setProperty(&#34;visible&#34;, false);<br/><br/>配置集的说明<br/>属性名称<br/>含义<br/>备注<br/><br/>visible<br/>Module是否可见，Boolean值<br/><br/><br/>monitorresize<br/>设置是否创建一个不可见的屏幕元素用来监听DOM中文字大小的改变，Boolean值<br/><br/><br/><br/><br/><br/><br/>6.8.2. Overlay<br/>对Module的一种扩展，但和Module不同的是Overlay可以通过绝对方式定位，并且是浮动窗口，不会影响页面中原有的内嵌标签的布局。与Module相同的是：也没有预先定义样式，必须手动设置。<br/><br/>初始化的方式<br/>与Module相同<br/><br/>位置设定<br/>1．绝对定位：<br/><br/>myOverlay.cfg.setProperty(&#34;x&#34;, 100);<br/><br/>myOverlay.cfg.setProperty(&#34;y&#34;, 200);<br/><br/>myOverlay.cfg.setProperty(&#34;xy&#34;, [100,200]);<br/><br/>2．居中<br/><br/>窗口中居中：myOverlay.center();<br/><br/>屏幕居中：myOverlay.cfg.setProperty(&#34;fixedcenter&#34;, true);<br/><br/>3．对齐<br/><br/>// myOverlay&#39;s右上角对齐myContextEl的左上角<br/><br/>myOverlay.cfg.setProperty(&#34;context&#34;, [&#34;myContextEl&#34;, &#34;tr&#34;, &#34;tl&#34;]);<br/><br/>设置过对齐方式后可以直接使用align来改变对齐方式<br/><br/>// myOverlay&#39;s 右上角对齐 &#34;myContextEl&#34;&#39;s 左下角.<br/><br/>myOverlay.align(&#34;tr&#34;, &#34;bl&#34;);<br/><br/>注：对齐方式的写法: top-&gt;t ,left -&gt;l, ,bottom-&gt;,right-&gt;r<br/><br/>top-left 就表示为tl<br/><br/><br/><br/>配置集<br/>属性名称<br/>含义<br/><br/>x<br/>设置元素的left属性<br/><br/>y<br/>设置元素的top属性<br/><br/>xy<br/>设置元素的top,left属性<br/><br/>context<br/>停靠位置，[element, Overlay的顶角, 被停靠的element顶角]<br/><br/>effect<br/>当Overlay显示或隐藏时的特效对象.<br/><br/>fixedcenter<br/>窗口大小改变或滚屏时保持居中<br/><br/>width<br/>设置元素的width<br/><br/>height<br/>设置元素的height<br/><br/>zIndex<br/>设置Overlay的遮盖顺序<br/><br/>constraintoviewport<br/>设置为true时保持在视窗边界以内<br/><br/>iframe<br/>设置为true时在Overlay后将存在一个ifram,防止被Z序高的element覆盖<br/><br/><br/><br/><br/><br/>已知的特效：<br/><br/>YAHOO.widget.ContainerEffect.SLIDE<br/><br/>YAHOO.widget.ContainerEffect.FADE 逐步变淡<br/><br/>OverlayManage<br/>用于管理多个Overlay的组件，能够模拟类似于多窗口管理系统的交互，使得各个Overlay之间的能够正确的覆盖、获得焦点/失去焦点。<br/><br/>使用这一功能需要的代码很简单，只需要通过register方法登记所有需要纳入窗口管理的Overlay就可以了。<br/><br/>//示例：<br/><br/>YAHOO.namespage(“demo”);<br/><br/>YAHOO.demo.manager = new YAHOO.widget.OverlayManager();<br/><br/>YAHOO.demo.manager.register( [Overlay的数组列表] );<br/><br/>6.8.3. Tooltip<br/>对象定义：YAHOO.widget.Tooltip<br/><br/>从overlay上扩展出来的控件，小的浮动窗口，动态生成，提供了预定义的样式。<br/><br/><br/><br/>Tooltip的引入<br/>&lt;!-- CSS --&gt;<br/><br/>build/container/assets/container.css<br/><br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!—如果要改变页面元素的属性需要引入--&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/container/container-min.js<br/><br/>Tooltip初始化方式<br/>constructor：YAHOO.widget.Tooltip(tooltipId , { 配置集 } );<br/><br/>tooltipId可以是页面中未声明的控件。<br/><br/><br/><br/>Tooltip配置集<br/>属性名称<br/>含义<br/><br/>text<br/>提示文字<br/><br/>context<br/>鼠标停靠element ID<br/><br/>container<br/>缺省为document.body，指明容器元素<br/><br/>preventoverlap<br/>缺省为true,指明是否使用覆盖方式<br/><br/>showdelay<br/>显示tooltip的延迟时间，单位毫秒<br/><br/>hidedelay<br/>隐藏tooltip的延迟时间，单位毫秒<br/><br/>autodismissdelay<br/>The number of milliseconds to wait before automatically dismissing a Tooltip after the mouse has been resting on the context element.<br/><br/><br/><br/>同时还继承了Module,Overlay的所有属性<br/><br/><br/><br/>6.8.4. Panel<br/>从overlay扩展出来的一个组件，类似于操作系统的窗口。他不同于浏览器的弹出窗口，是内嵌在页面文件中的一种动态Html的element。他在overlay的基础上扩展了一些窗口的功能，如关闭、拖放等。Panel使用了预定义的样式表<br/><br/>Panel的引入<br/>&lt;!-- CSS --&gt;<br/><br/>build/container/assets/container.css<br/><br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!—可选项：如果用到动画时需要引入 --&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!—可选项：如果用到拖放时需要引入--&gt;<br/><br/>build/dragdro&#112;/dragdro&#112;-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/container/container-min.js<br/><br/>Panel的初始化<br/>constructor：<br/><br/>YAHOO.widget.Panel(panelId); //使用缺省配置选项<br/><br/>YAHOO.widget.Panel(panelId,{自定义的配置项}); //使用自定义的配置项<br/><br/>Panel的配置集<br/>属性名称<br/>含义<br/><br/>close<br/>是否显示关闭按钮，true/false<br/><br/>draggable<br/>是否可以拖动<br/><br/>underlay<br/>阴影显示方式 shadow,none,matte,缺省为shadow，none为无阴影，matte为白色边界<br/><br/>modal<br/>Panel获得焦点时，是否允许使用Panel以外的控件获得焦点，类似于MFC的模态/无模态对话框<br/><br/>keylisteners<br/>响应按键事件的监听器列表<br/><br/><br/><br/>Panel同时还继承了Module,Overlay的属性<br/><br/>6.8.5. Dialog<br/>从 Panel上扩展出来的组件，类似于Windows的窗口，在浏览器中提供了一种不用页面跳转就能使用交互来获取用户输入的交互方式，用户输入的数据都是通过一个标准的HTML Form获取的，并支持多种的获取输入数据的方式：普通的Form的提交，XMLHttpRequest，或者完全通过脚本来读取。<br/><br/>Dialog的引入<br/>&lt;!-- CSS --&gt;<br/><br/>build/container/assets/container.css<br/><br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!—可选项: Animation (only required if enabling Animation) --&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!—可选项: Drag &amp; Dro&#112; (only required if enabling Drag &amp; Dro&#112;) --&gt;<br/><br/>build/dragdro&#112;/dragdro&#112;-min.js<br/><br/>&lt;!--可选项: Connection (only required if performing asynchronous submission) --&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/container/container-min.js<br/><br/>Dialog的初始化<br/>constructor：YAHOO.widget.Dialog(dialogId);<br/><br/>dialogId为页面中已经申明的element<br/><br/>Dialog的配置集<br/>属性名称<br/>含义<br/><br/>postmethod<br/>窗口提交的方式，async：异步，form：标准的submit，none：不提交<br/><br/>buttons<br/>dialog中的button数组列表，<br/><br/><br/><br/>同时继承了Overlay，Panel的属性<br/><br/>单个按钮对象的定义方式：<br/><br/>{ text:按钮上的文本,<br/><br/>handler:按钮的click事件响应函数<br/><br/>isDefault:是否缺省按钮},<br/><br/><br/><br/>6.8.6. SimpleDialog<br/>从Dialog上扩展出来的一个组件,主要用于处理用户选择Yes/NO，OK/Cancel的交互<br/><br/>SimpleDialog的引入<br/>&lt;!-- CSS --&gt;<br/><br/>build/container/assets/container.css<br/><br/>&lt;!-- Dependencies --&gt;<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>&lt;!—可选项：用到动画效果时使用 --&gt;<br/><br/>build/animation/animation-min.js<br/><br/>&lt;!—可选项：用到拖放功能时使用--&gt;<br/><br/>build/dragdro&#112;/dragdro&#112;-min.js<br/><br/>&lt;!—可选项：用到异步提交方式时使用) --&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/container/container-min.js<br/><br/>SimpleDialog的初始化<br/>constructor：YAHOO.widget.SimpleDialog(dialogId,{配置集});<br/><br/>dialogId为页面中已经申明的element<br/><br/>SimpleDialog的配置集<br/>属性名称<br/>含义<br/><br/>text<br/>对话框中显示的提示信息<br/><br/>icon<br/>按钮图标：<br/><br/>ICON_BLOCK,<br/><br/>ICON_WARN,<br/><br/>ICON_HELP,<br/><br/>ICON_INFO,<br/><br/>ICON_ALARM,<br/><br/>ICON_TIP.<br/><br/><br/><br/><br/><br/>6.9. Grids<br/>支持不规定宽度的设计<br/><br/>一组用于定义界面版式的样式表(CSS文件)<br/><br/>6.10. TabView<br/>用来创建导航tab栏组件<br/><br/>可以从HTML中的已经存在的标签来创建，也可以完全通过javascript创建，该组件的最上层元素为&lt;div&gt;，每一个tab页面项使用&lt;li&gt;<br/><br/>TableView的引入<br/>&lt;!-- Dependencies --&gt;<br/><br/>&lt;!-- core CSS --&gt;<br/><br/>/build/tabview/assets/tabview.css<br/><br/>&lt;!-- optional skin for border tabs --&gt;<br/><br/>build/tabview/assets/border_tabs.css<br/><br/>build/yahoo-dom-event/yahoo-dom-event.js<br/><br/>build/element/element-beta-min.js<br/><br/>&lt;!—可选项: 使用动态加载时使用--&gt;<br/><br/>build/connection/connection-min.js<br/><br/>&lt;!-- Source file --&gt;<br/><br/>build/tabview/tabview-min.js<br/><br/>TableView的初始化<br/>constructor：YAHOO.widget.TabView(tableViewId);<br/><br/>创建的方式：<br/><br/>1．页面中存在id<br/><br/>&lt;div id=&#34;demo&#34; class=&#34;yui-navset&#34;&gt;<br/><br/>&lt;ul class=&#34;yui-nav&#34;&gt;<br/><br/>&lt;li class=&#34;sel&#101;cted&#34;&gt;&lt;a href=&#34;#tab1&#34;&gt;&lt;em&gt;Tab One Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br/><br/>&lt;li&gt;&lt;a href=&#34;#tab2&#34;&gt;&lt;em&gt;Tab Two Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br/><br/>&lt;li&gt;&lt;a href=&#34;#tab3&#34;&gt;&lt;em&gt;Tab Three Label&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;<br/><br/>&lt;/ul&gt;<br/><br/>&lt;div class=&#34;yui-content&#34;&gt;<br/><br/>&lt;div&gt;&lt;p&gt;Tab One Content&lt;/p&gt;&lt;/div&gt;<br/><br/>&lt;div&gt;&lt;p&gt;Tab Two Content&lt;/p&gt;&lt;/div&gt;<br/><br/>&lt;div&gt;&lt;p&gt;Tab Three Content&lt;/p&gt;&lt;/div&gt;<br/><br/>&lt;/div&gt;<br/><br/>&lt;/div&gt;<br/><br/><br/><br/>注：<br/><br/>yui-navset为css文件中定义的TableView的样式<br/><br/>yui-nav为css文件中定义的Tab页标签的样式<br/><br/><br/><br/>2．完全使用JavaScript创建TabView<br/><br/>&lt;script type=&#34;text/javascript&#34;&gt;<br/><br/>var myTabs = new YAHOO.widget.TabView(&#34;demo&#34;);<br/><br/><br/><br/>myTabs.addTab( new YAHOO.widget.Tab({<br/><br/>label: &#39;Tab One Label&#39;,<br/><br/>content: &#39;&lt;p&gt;Tab One Content&lt;/p&gt;&#39;,<br/><br/>active: true<br/><br/>}));<br/><br/><br/><br/>myTabs.addTab( new YAHOO.widget.Tab({<br/><br/>label: &#39;Tab Two Label&#39;,<br/><br/>content: &#39;&lt;p&gt;Tab Two Content&lt;/p&gt;&#39;<br/><br/>}));<br/><br/><br/><br/>myTabs.appendTo(document.body);<br/><br/>&lt;/script&gt;<br/><br/><br/><br/>TableView的配置集<br/>属性名称<br/>含义<br/><br/>activeIndex<br/>当前激活的Tab页面编号，第一页为0<br/><br/>activeTab<br/>YAHOO.widget.Tab，指向被激活的Tab页，<br/><br/>element<br/>被绑定的HTML元素<br/><br/>o&#114;ientation<br/>页面标签所在的位置，top，bottom，left，right 默认为top<br/><br/>tabs<br/>标签页(Tab)的数组列表，只读<br/><br/><br/><br/><br/><br/>Tab的配置集<br/><br/><br/>属性名称<br/>含义<br/><br/>active<br/>当前Tab页面是否激活，Boolean值<br/><br/>cacheData<br/>Tab页加载数据的时候是否隐藏，只有dataSrc可用的时候有效<br/><br/>content<br/>激活页面的文字标签<br/><br/>contentEl<br/><br/><br/>dataLoaded<br/>数据是否加载完成<br/><br/>dataSrc<br/>如果设置了这一属性，当Tab页被激活时，页面数据从这个URL处加载，需要用到Connection Manager<br/><br/>dataTimeout<br/>Tab页加载的超时时间，单位微秒，只有在设置了dataSrc才有效<br/><br/>disabled<br/>是否禁止激活本Tab页，缺省为false<br/><br/>label<br/>Tab页的标签<br/><br/>labelEl<br/>Tab页的HTML容器元素<br/><br/>loadMethod<br/>数据请求的方式，缺省为GET，只有在设置了dataSrc才有效<br/><br/><br/><br/><br/><br/>TabView用到的CSS定义<br/>Class<br/>描述<br/><br/>yui-navset<br/>TabView的&lt;div&gt;<br/><br/>yui-nav<br/>TabView的&lt;ul&gt;<br/><br/>yui-content<br/>TabView的&lt;div&gt;的下一级&lt;div&gt;<br/><br/>disabled<br/>Tab页面不可用时的样式，应用在&lt;ul&gt;上<br/><br/>sel&#101;cted<br/>Tab页面激活时的样式，应用在&lt;ul&gt;上<br/><br/>loading<br/>Tab页面加载时的样式，TabView的&lt;div&gt;的下一级&lt;div&gt;的样式<br/><br/><br/><br/><br/><br/>7. 常见问题<br/>7.1. YUI提供的javascript的文件引入<br/>关于引入的版本：<br/>YUI对于需要引入的js文件都提供了多个版本：<br/><br/>1 min是去掉空格后的版本，在正式项目中建议使用min版。<br/><br/>2 debug是调试的版本，主要结合YUI的log组件使用。<br/><br/>3 beta版<br/><br/>4 不带后缀的为便于阅读的版本<br/><br/><br/><br/>yahoo-dom-event.js是包含了yahoo.js，dom.js，event.js的内容，使用了前者后就无需再引入后面三个文件。<br/><br/>关于引入的顺序：<br/>1．大部分组件都是依赖于事件驱动，并通过YUI提供的工具集进行DOM操作的，因此yahoo.js，dom.js，event.js或者这三个文件的合成文件yahoo-dom-event.js必须早于其他YUI的js文件引入<br/><br/>2．Autocomplete 如果需要从服务器取数据时，要用到YUI提供的datasource.js，因此datasource.js必须在autocomplete.js之前引入；如果是以XHR（JSON，XML等）的方式取数，还要用到YUI提供的connection，因此connection.js也必须在 autocomplete.js之前引入；如果用到了动画方式展开下拉框，则需要保证animation.js在autocomplete.js之前引入。<br/><br/>3．Datatable中列宽度的调整，Container组件中的Overlay以及从Overlay继承下来的 Dialog，SimpleDialog的窗口拖动，需要用到dragdro&#112;.js，因此dragdro&#112;.js必须在datatable.js和 container.js之前引入；如果要用到Dialog的动画显示效果，则需要先引入animation.js。 ]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=430</link>
			<title><![CDATA[javascript(js)中的 substring和substr方法 ]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Wed,15 Sep 2010 10:11:12 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=430</guid>
		<description><![CDATA[1.substring 方法<br/><br/>定义和用法<br/><br/>substring 方法用于提取字符串中介于两个指定下标之间的字符。<br/><br/>语法<br/><br/>stringObject.substring(start,stop)<br/><br/>参数&nbsp;&nbsp;&nbsp;&nbsp; 描述<br/>start&nbsp;&nbsp;&nbsp;&nbsp; 必需。一个非负的整数，规定要提取的子串的第一个字符在 stringObject 中的位置。<br/>stop&nbsp;&nbsp;&nbsp;&nbsp; 可选。一个非负的整数，比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数，那么返回的子串会一直到字符串的结尾。<br/><br/>返回值<br/><br/>一个新的字符串，该字符串值包含 stringObject 的一个子字符串，其内容是从 start 处到 stop-1 处的所有字符，其长度为 stop 减 start。<br/><br/>说明<br/><br/>substring 方法返回的子串包括 start 处的字符，但不包括 end 处的字符。<br/>如果 start 与 end 相等，那么该方法返回的就是一个空串（即长度为 0 的字符串）。<br/>如果 start 比 end 大，那么该方法在提取子串之前会先交换这两个参数。<br/>如果 start 或 end 为负数，那么它将被替换为 0。<br/><br/>2.substr 方法<br/><br/>定义和用法<br/><br/>substr 方法用于返回一个从指定位置开始的指定长度的子字符串。<br/><br/>语法<br/><br/>stringObject.substr(start [, length ])<br/><br/>参数&nbsp;&nbsp;&nbsp;&nbsp;描述<br/>start&nbsp;&nbsp; 必需。所需的子字符串的起始位置。字符串中的第一个字符的索引为 0。<br/>length 可选。在返回的子字符串中应包括的字符个数。<br/><br/>说明<br/><br/>如果 length 为 0 或负数，将返回一个空字符串。<br/>如果没有指定该参数，则子字符串将延续到stringObject的最后。<br/><br/>举例：<br/>var str = &#34;0123456789&#34;;<br/><br/>alert(str.substring(0));------------&#34;0123456789&#34;<br/>alert(str.substring(5));------------&#34;56789&#34;<br/>alert(str.substring(10));-----------&#34;&#34;<br/>alert(str.substring(12));-----------&#34;&#34;<br/>alert(str.substring(-5));-----------&#34;0123456789&#34;<br/>alert(str.substring(-10));----------&#34;0123456789&#34;<br/>alert(str.substring(-12));----------&#34;0123456789&#34;<br/>alert(str.substring(0,5));----------&#34;01234&#34;<br/>alert(str.substring(0,10));---------&#34;0123456789&#34;<br/>alert(str.substring(0,12));---------&#34;0123456789&#34;<br/>alert(str.substring(2,0));----------&#34;01&#34;<br/>alert(str.substring(2,2));----------&#34;&#34;<br/>alert(str.substring(2,5));----------&#34;234&#34;<br/>alert(str.substring(2,12));---------&#34;23456789&#34;<br/>alert(str.substring(2,-2));---------&#34;01&#34;<br/>alert(str.substring(-1,5));---------&#34;01234&#34;<br/>alert(str.substring(-1,-5));--------&#34;&#34;<br/><br/>alert(str.substr(0));---------------&#34;0123456789&#34;<br/>alert(str.substr(5));---------------&#34;56789&#34;<br/>alert(str.substr(10));--------------&#34;&#34;<br/>alert(str.substr(12));--------------&#34;&#34;<br/>alert(str.substr(-5));--------------&#34;0123456789&#34;<br/>alert(str.substr(-10));-------------&#34;0123456789&#34;<br/>alert(str.substr(-12));-------------&#34;0123456789&#34;<br/>alert(str.substr(0,5));-------------&#34;01234&#34;<br/>alert(str.substr(0,10));------------&#34;0123456789&#34;<br/>alert(str.substr(0,12));------------&#34;0123456789&#34;<br/>alert(str.substr(2,0));-------------&#34;&#34;<br/>alert(str.substr(2,2));-------------&#34;23&#34;<br/>alert(str.substr(2,5));-------------&#34;23456&#34;<br/>alert(str.substr(2,12));------------&#34;23456789&#34;<br/>alert(str.substr(2,-2));------------&#34;&#34;<br/>alert(str.substr(-1,5));------------&#34;01234&#34;<br/>alert(str.substr(-1,-5));-----------&#34;&#34;&nbsp;&nbsp;&nbsp;&nbsp;<br/>]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=429</link>
			<title><![CDATA[js/jquery 获取url参数]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Wed,15 Sep 2010 09:06:24 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=429</guid>
		<description><![CDATA[js代码：<br/><br/>function GetQueryString(name)<br/>{<br/>var reg = new RegExp(&#34;(^|&amp;)&#34;+ name +&#34;=([^&amp;]*)(&amp;|$)&#34;);<br/>var r = window.location.search.substr(1).match(reg);<br/>if (r!=null) return unescape(r[2]); return null;<br/>}&nbsp;&nbsp;<br/><br/>URL的参数&amp;参数名1=XXXX&amp;参数名2=XXXX&amp;参数名3=XXXX&nbsp;&nbsp;<br/><br/>alert(GetQueryString(&#34;参数名1&#34;));<br/>alert(GetQueryString(&#34;参数名2&#34;));<br/>alert(GetQueryString(&#34;参数名3&#34;));<br/><br/>jquery 代码：<br/><br/>把下面代码。放到js文件中<br/><br/>/**<br/> * jQuery.query - Query String Modification and Creation for jQuery<br/> * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)<br/> * Licensed under the WTFPL (<a href="http://sam.zoy.org/wtfpl/" target="_blank" rel="external">http://sam.zoy.org/wtfpl/</a>).<br/> * Date: 2009/8/13<br/> *<br/> * @author Blair Mitchelmore<br/> * @version 2.1.6<br/> *<br/> **/<br/>new function(settings) { <br/>&nbsp;&nbsp;// Various Settings<br/>&nbsp;&nbsp;var $separator = settings.separator || &#39;&amp;&#39;;<br/>&nbsp;&nbsp;var $spaces = settings.spaces === false ? false : true;<br/>&nbsp;&nbsp;var $suffix = settings.suffix === false ? &#39;&#39; : &#39;[]&#39;;<br/>&nbsp;&nbsp;var $prefix = settings.prefix === false ? false : true;<br/>&nbsp;&nbsp;var $hash = $prefix ? settings.hash === true ? &#34;#&#34; : &#34;?&#34; : &#34;&#34;;<br/>&nbsp;&nbsp;var $numbers = settings.numbers === false ? false : true;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;jQuery.query = new function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;var is = function(o, t) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return o != undefined &amp;&amp; o !== null &amp;&amp; (!!t ? o.constructor == t : true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;var parse = function(path) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var m, rx = /\[([^[]*)\]/g, match = /^([^[]+?)(\[.*\])?$/.exec(path), base = match[1], tokens = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (m = rx.exec(match[2])) tokens.push(m[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return [base, tokens];<br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;var set = function(target, tokens, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var o, token = tokens.shift();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (typeof target != &#39;object&#39;) target = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (token === &#34;&#34;) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!target) target = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is(target, Array)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (is(target, Object)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var i = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (target[i++] != null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (token &amp;&amp; token.match(/^\s*[0-9]+\s*$/)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var index = parseInt(token, 10);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!target) target = [];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (token) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var index = token.replace(/^\s*|\s*$/g, &#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!target) target = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is(target, Array)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var temp = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var i = 0; i &lt; target.length; ++i) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[i] = target[i];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target = temp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return target;<br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var queryObject = function(a) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var self = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.keys = {};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (a.queryObject) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(a.get(), function(key, val) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.SET(key, val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(arguments, function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var q = &#34;&#34; + this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q = q.replace(/^[?#]/,&#39;&#39;); // remove any leading ? || #<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q = q.replace(/[;&amp;]$/,&#39;&#39;); // remove any trailing &amp; || ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($spaces) q = q.replace(/[+]/g,&#39; &#39;); // replace +&#39;s with spaces<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(q.split(/[&amp;;]/), function(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var key = decodeURIComponent(this.split(&#39;=&#39;)[0] || &#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var val = decodeURIComponent(this.split(&#39;=&#39;)[1] || &#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!key) return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($numbers) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val = parseFloat(val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val = parseInt(val, 10);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val = (!val &amp;&amp; val !== 0) ? true : val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (val !== false &amp;&amp; val !== true &amp;&amp; typeof val != &#39;number&#39;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;val = val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.SET(key, val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self;<br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;queryObject.prototype = {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queryObject: true,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has: function(key, type) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var value = this.get(key);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return is(value, type);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GET: function(key) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is(key)) return this.keys;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var parsed = parse(key), base = parsed[0], tokens = parsed[1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var target = this.keys[base];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (target != null &amp;&amp; tokens.length != 0) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target = target[tokens.shift()];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return typeof target == &#39;number&#39; ? target : target || &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;get: function(key) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var target = this.GET(key);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is(target, Object))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return jQuery.extend(true, {}, target);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if (is(target, Array))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return target.slice(0);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return target;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SET: function(key, val) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var value = !is(val) ? null : val;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var parsed = parse(key), base = parsed[0], tokens = parsed[1];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var target = this.keys[base];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.keys[base] = set(target, tokens.slice(0), value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set: function(key, val) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.copy().SET(key, val);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REMOVE: function(key) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.SET(key, null).COMPACT();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remove: function(key) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.copy().REMOVE(key);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EMPTY: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var self = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(self.keys, function(key, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;del&#101;te self.keys[key];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return self;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;load: function(url) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, &#34;$1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, &#34;$1&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new queryObject(url.length == search.length ? &#39;&#39; : search, url.length == hash.length ? &#39;&#39; : hash);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.copy().EMPTY();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return new queryObject(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPACT: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function build(orig) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var obj = typeof o&#114;ig == &#34;object&#34; ? is(orig, Array) ? [] : {} : o&#114;ig;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (typeof o&#114;ig == &#39;object&#39;) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function add(o, key, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (is(o, Array))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.push(value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o[key] = value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(orig, function(key, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is(value)) return true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(obj, key, build(value));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return obj;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.keys = build(this.keys);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compact: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.copy().COMPACT();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toString: function() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var i = 0, queryString = [], chunks = [], self = this;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var encode = function(str) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str = str + &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($spaces) str = str.replace(/ /g, &#34;+&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return encodeURIComponent(str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var addFields = function(arr, key, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!is(value) || value === false) return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var o = [encode(key)];<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (value !== true) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.push(&#34;=&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o.push(encode(value));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr.push(o.join(&#34;&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var build = function(obj, base) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var newKey = function(key) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return !base || base == &#34;&#34; ? [key].join(&#34;&#34;) : [base, &#34;[&#34;, key, &#34;]&#34;].join(&#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.each(obj, function(key, value) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (typeof value == &#39;object&#39;) <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build(value, newKey(key));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addFields(chunks, newKey(key), value);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build(this.keys);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (chunks.length &gt; 0) queryString.push($hash);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;queryString.push(chunks.join($separator));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return queryString.join(&#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return new queryObject(location.search, location.hash);<br/>&nbsp;&nbsp;};<br/>}(jQuery.query || {}); // Pass in jQuery.query as settings object<br/><br/> <br/><br/> <br/><br/>如果想获取test，则可以引入插件后，<br/>用如下方法获取：<br/>var test = $.query.get(&#39;test&#39;);<br/><br/>如果参数有多个相同的名称 ，则可以这样：<br/>var arr = $.query.get(&#39;testy&#39;);<br/>输出：&nbsp;&nbsp; [ 值1 ,&nbsp;&nbsp; 值2,&nbsp;&nbsp; 值3...]<br/><br/>如果要获取多个相同名称中的某一个，可以这样：<br/>var arrayElement = $.query.get(&#39;testy[1]&#39;);<br/><br/>此插件不仅能获取参数，也能设置参数。<br/><br/>设置一个参数：<br/>var newUrl = $.query.set(&#34;section&#34;, 5).toString(); <br/>输出&nbsp;&nbsp; ： &#34;?section=5&#34;<br/><br/>设置两个参数：<br/>var newUrl = $.query.set(&#34;section&#34;, 5).set(&#34;action&#34;, &#34;do&#34;).toString(); <br/>输出 :&nbsp;&nbsp; &#34;?action=do§ion=5&#34;<br/><br/><br/>删除一个参数：<br/>var oldQueryAgain = $.query.REMOVE(&#34;type&#34;);<br/><br/>清空所有参数：<br/>var emptyQuery = $.query.empty();<br/><br/>复制所有参数：<br/>var stillTheSame = $.query.copy();]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=428</link>
			<title><![CDATA[实例：JQuery读取XML文件数据并显示]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Tue,14 Sep 2010 22:46:50 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=428</guid>
		<description><![CDATA[快速导读<br/><br/>今天向大家演示如何通过JQuery框架为空白HTML文档加载从XML文件读取的数据并显示出来。我们将会主要用到JQuery自带过程 $.get 。<br/><br/>查看演示：点此查看<br/><br/>准备工作<br/><br/>在开始之前我们需要做如下准备工作：<br/><br/>1.创建一个名为DEMO.html空白html文件；（推荐使用Editplus创建）<br/><br/>2.熟悉JQuery框架的基本语法；（不熟悉没关系，后面我会注释得很详细）<br/><br/>3.创建一个名为data.xml的XML文件用来存储数据，XML的结构下面会涉及到，你也可以下载我打包好的文件查看；<br/><br/>4.一个loading.gif图片，这个图片用于在将XML读取出来的等待时间里面显示在空白html文档中<br/><br/>正式开始<br/><br/>Step 1:首先让我们看看这个data.xml的简单结构，我这里演示的数据是&#34;Saturn为您推荐的几本书&#34;，故为书籍信息，那么xml就包括书籍的名称，缩略图和书籍描述信息；<br/><br/>以下为XML文件代码：<br/><br/>&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34; ?&gt;&nbsp;&nbsp;<br/>&lt;books&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;book title=&#34;藏地密码&#34; imageurl=&#34;images/Tibet_Code.jpg&#34;&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp; 这里是概况(www.code52.net)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/book&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>&lt;book title=&#34;剑桥雅思6&#34; imageurl=&#34;images/ielts.jpg&#34;&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp; 这里是概况(www.code52.net)&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/book&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;book title=&#34;Professional ASP.NET&#34; imageurl=&#34;images/asp.jpg&#34;&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里是概况(www.code52.net)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/description&gt;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/book&gt;&nbsp;&nbsp;<br/>&lt;/books&gt;<br/><br/>其次，让我们看看加载在空白HTML文档里面的JavaScript代码：<br/><br/>&nbsp;&nbsp; 1. $(document).ready(function()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $.get(&#39;myData.xml&#39;, function(d){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(&#39;body&#39;).append(&#39;&lt;h1&gt; Saturn给你推荐几本书： &lt;/h1&gt;&#39;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(&#39;body&#39;).append(&#39;&lt;dl /&gt;&#39;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 6.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(d).find(&#39;book&#39;).each(function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp; 9.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var $book = $(this);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;10.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var title = $book.attr(&#34;title&#34;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;11.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var description = $book.find(&#39;description&#39;).text();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;12.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var imageurl = $book.attr(&#39;imageurl&#39;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;13.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;14.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var html = &#39;&lt;dt&gt; &lt;img class=&#34;bookImage&#34; alt=&#34;&#34; src=&#34;&#39; + imageurl + &#39;&#34; /&gt; &lt;/dt&gt;&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;15.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html += &#39;&lt;dd&gt; &lt;span class=&#34;loadingPic&#34; alt=&#34;Loading&#34; /&gt;&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;16.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html += &#39;&lt;p class=&#34;title&#34;&gt;&#39; + title + &#39;&lt;/p&gt;&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;17.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html += &#39;&lt;p&gt; &#39; + description + &#39;&lt;/p&gt;&#39; ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;18.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html += &#39;&lt;/dd&gt;&#39;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;19.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;20.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(&#39;dl&#39;).append($(html));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;21.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;22.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(&#39;.loadingPic&#39;).fadeOut(2000);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;23.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;24.&nbsp;&nbsp;&nbsp;&nbsp; });&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;25. });&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>Step 2:这里，我只讲下JavaScript代码原理与运行流程，不过分讨论语法，如果你对语法有任何疑问，请给我留言或者查看JQuery相关文档。<br/><br/>行1：当HTML文档准备完毕之后（即html和JavaScript都下载完毕），会自动触发JQuery的 $(document).ready方法及里面的过程。显然，这里首先执行的是$.get方法。<br/>行3：$.get的第一个参数是XML文件的相对路径（注意路径要填写正确，这里我们把XML和网页文件放在同一文件夹）。第二个参数是一个 Callback函数，即回调函数。就是说通过get方法来请求这个XML文件的内容，然后通过这个callback回调函数来操作里面的数据。而 callback的参数d表示从XML回调过来的所有数据，有了这个参数d，我们就好进行下面的内容了。<br/>行4：通过JavaScript在文档的BODY中动态添加一个标签&lt;h1&gt;，这个是页面的总标题，无关紧要；<br/>行5：同样在BODY中动态添加一个标签&lt;dl&gt;,用来作为包含循环下面的内容容器。（行20会用到）<br/>行7：这一行很重要，因为我们已经说过，回调函数的参数d表示从XML回调的所有数据，现在我们就需要对这些数据进行处理（筛选）和格式化；请注意：这里通过搜寻book标签（tag），然后循环执行each后面的函数，直到xml里面数据的条目完全循环完毕；（有点像PHP里面的foreach函数的功能）<br/>行9：$(this)实际上就创建一个对象，目的是将d的当前一条书籍信息对象实例化，方便进行操作，这就是$book；<br/>行10--行12：分别获取当前对象$book的书籍名称，描述和缩略图；（注意取属性值和取节点值的语法不同）<br/>行14-行18：格式化书籍信息，以便输出；<br/>行20：将格式化后的信息以HTML输出方式输出到文档中。<br/>行22：为了告诉用户我们当前的信息正在从XML中读取，2000毫秒（2秒）后，图片逐渐消失。<br/><br/>Step 3:至此，大功告成。欢迎大家给我留言，共同讨论JQuery的开发和你所碰到的问题，请不吝赐教。另外，请将下载后的文件夹放在WEB环境下运行（IIS或虚拟主机），请不要直接点开运行。]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=427</link>
			<title><![CDATA[asp.net输出XML的问题]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Tue,14 Sep 2010 22:16:31 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=427</guid>
		<description><![CDATA[这个问题早就碰到过，今天只是有兴趣，来说明一下罢了。<br/><br/>当我们做RSS输出时，一般会在<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected void Page_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GovListBuilerXML gbx = new GovListBuilerXML(top);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Response.Write(gbx.Builder().InnerXml.ToString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.Response.End();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>其中GovListBuilerXML 是要输出rss结构的XML文档的类；但是这种输出会有些问题，不能够正常显示。需要指明页面的输出编码，如下；<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected void Page_Load(object sender, EventArgs e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.ContentType = &#34;text/xml&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Response.Charset = &#34;utf-8&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GovListBuilerXML gbx = new GovListBuilerXML(top);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Response.Write(gbx.Builder().InnerXml.ToString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.Response.End();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>上段代码指明了页面输出编码为UTF-8，我们输出的XML也要是utf-8格式的，在XML文档的头部应该有这样一段<br/>&lt;?xml version=&#34;1.0&#34; encoding=&#34;utf-8&#34; ?&gt;<br/><br/>生成这种节点的C#代码为<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlDocument xmlDoc = new XmlDocument();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlDeclaration xmldecl;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmldecl = xmlDoc.Cr&#101;ateXmlDeclaration(&#34;1.0&#34;, null, null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmldecl.Encoding = &#34;utf-8&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置头部信息<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XmlElement root = xmlDoc.DocumentElement;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlDoc.Ins&#101;rtBefore(xmldecl, root);<br/><br/><br/>这样就正常了。]]></description>
		</item>
		
			<item>
			<link>http://feng.kiyeer.net/article.asp?id=426</link>
			<title><![CDATA[ 用户 &#39;NT AUTHORITY\SYSTEM&#39; 登录失败]]></title>
			<author>yong8868@163.com(feng)</author>
			<category><![CDATA[asp/.net/ajax]]></category>
			<pubDate>Tue,14 Sep 2010 08:38:59 +0800</pubDate>
			<guid>http://feng.kiyeer.net/default.asp?id=426</guid>
		<description><![CDATA[ 原创&nbsp;&nbsp;用户 &#39;NT AUTHORITY\SYSTEM&#39; 登录失败。 收藏<br/><br/>问题描述:[298] SQLServer 错误: 18456，用户 &#39;NT AUTHORITY\SYSTEM&#39; 登录失败。 [SQLSTATE 28000]<br/><br/>解决方法:查询分析器里面执行sp_grantlogin &#39;builtin\administrators&#39;授予登陆权限.在&#34;服务&#34;里面重新启动.继续出现错误&#34;本地计算机上面的SQLSERVERAGENT服务启动又停止了,一些服务自动停止,如果他们没有什么可作的,例如性能日志和警报服务.&#34;晕,我就是要用ServerAgent来进行数据库自动备份,在一想,原来需要把&#34;BUILTIN\Administrators&#34;服务器角色修改下,赋予它System Administrators角色,然后点击下面的&#34;属性&#34;,把Builtin \Administrators添加到System Administrators角色中,在重启SQLSERVERAGENT服务,搞定.<br/><br/>问题总结:为了数据库安全,我删除了SQL Server数据库安全选项里面的Builtin\Administrators Windows用户组.<br/><br/>问题描述:[364] 没有启动 Messenger 服务 — 将不发送 NetSend 通知.<br/><br/>企业管理器--&gt;你的远程实例--&gt;展开到“管理”--&gt;SQLServer代理--&gt;右键“SQLServer代理”--&gt;属性--&gt;改为本地登陆或指定adminstrator用户做为启动用户.在控制面板服务里面重启SQLSERVERAGENT即可. ]]></description>
		</item>
		
</channel>
</rss>

