<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>xiandai的博客</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx</link><ttl>60</ttl><description /><generator>SpaceBuilder v2.3</generator><item><title>从类型"DBNull"到类型"String"的强制转换无效的解决方法</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-101</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Tue, 23 Jun 2009 07:46:04 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:101</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-101</comments><slash:comments>0</slash:comments><description><![CDATA[<div>
<p>如果数据库中的某一个字段值是Null，那么我们在前台页面进行调用显示的时候，我们会出现如题的错误提示，那么我们用什么方法可以K掉他呢？OK，Look Like this：</p>
<p>&nbsp;</p>
<p><span style="color: red;">If&nbsp;</span><span style="color: red;">Not ds.Tables("file").Rows(0).Item(5).GetType Is System.DBNull.Value.GetType Then</span></p>
<p>Or</p>
<p style="color: red;">If not rs("advert") is DBNull.Value&nbsp; then</p>
<p style="color: red;"><span style="color: #000000;"><strong>当然我们也可以在绑定的时候用:</strong></span></p>
<p style="color: red;">VB.net 的IIF（<span style="color: #ff0000;">ds.Tables("file").Rows(0).Item(5).GetType Is System.DBNull.Value.GetType </span>，""，ds.Tables("file").Rows(0).Item(5).）函数</p>
<p style="color: red;">或</p>
<p style="color: red;">C#.net的ds.Tables("file").Rows(0).Item(5).GetType Is System.DBNull.Value.GetType ? "" :ds.Tables("file").Rows(0).Item(5).</p>
</div><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=101&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>jQuery基本操作篇</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-60</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Mon, 08 Jun 2009 12:17:08 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:60</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-60</comments><slash:comments>0</slash:comments><description><![CDATA[<p style="text-indent: 2em;">jQuery是一个轻量级的javascript类库, 只有14k(未压缩的版本有77k)</p>
<p style="text-indent: 2em;">jQuery有什么好处呢?</p>
<p style="text-indent: 2em;">我想好处有以下几点:</p>
<p style="text-indent: 2em;">1. 简化了html对象的操作, 起码写的字少了, 而且原来需要自己写循环做的, 现在一句话就搞定</p>
<p style="text-indent: 2em;">2. 提高了代码的浏览器兼容性. 现在的4种主流浏览器之间的js脚本或多或少都会存在兼容性问题, 用jQuery, 会让你不用关心兼容性.</p>
<p style="text-indent: 2em;">比如Ajax请求, ie和firefox的对象完全不一样</p>
<p style="text-indent: 2em;">还有box模型的问题, 比如一个div外面加了一个边框, 然后为这个div设定一个宽度, ie和firefox对这个div的实际宽度理解的就不一样. ie会认为div的实际宽度是div的宽度+边框宽度, 而firefox认为div的实际宽度就是你设定的宽度, 不过div的有效宽度就是div的宽度-边框宽度了, 这个问题会影响一个元素的实际位置. 所以一定要用jquery的offset方法来取元素的位置, 用width来取宽度</p>
<p style="text-indent: 2em;">所有的jQuery选择器返回值都是jQuery对象, 而不是html元素. 所以一些普通的用法, 比如InnerHTML都是无效的.</p>
<p style="text-indent: 2em;">更多更详细的参考请访问<a href="http://docs.jquery.com/Main_Page">http://docs.jquery.com/Main_Page</a></p>
<p style="text-indent: 2em;">别人写的基础教程 <a href="http://bbs.jquery.org.cn/frame.php?frameon=yes&amp;referer=http%3A//bbs.jquery.org.cn/viewthread.php%3Ftid%3D129%26highlight%3D">http://bbs.jquery.org.cn/frame.....ghlight%3D</a></p>
<p style="text-indent: 2em;">1. 选取元素</p>
<p style="text-indent: 2em;">$(&rdquo;#myid&rdquo;)效果等于document.getElementById(&rdquo;myid&rdquo;), 但是写的字符要少好多啊.</p>
<p style="text-indent: 2em;">如果需要将jQuery对象转换成html元素, 则只需要取其第0个元素即可. 例如$(&rdquo;#myid&rdquo;)返回的是jQuery对象, 而$(&rdquo;#myid&rdquo;)[0]返回的就是html元素</p>
<p style="text-indent: 2em;">如果选择所有的img元素, 那么这么写: $(&rdquo;img&rdquo;)</p>
<p style="text-indent: 2em;">如果选择带有class=&rdquo;TextBox&rdquo;的div元素(&lt;div class=&rdquo;TextBox&rdquo;&gt;&lt;/div&gt;), 那么这么写: $(&rdquo;div.TextBox&rdquo;)</p>
<p style="text-indent: 2em;">选择带有myattr属性的元素$(&rdquo;div[myattr]&rdquo;)</p>
<p style="text-indent: 2em;">选择带有myattr属性, 并且属性值等于myclass的元素$(&rdquo;div[myattr=&rsquo;myclass&rsquo;]&rdquo;)</p>
<p style="text-indent: 2em;">属性不等于[myattr!=&rsquo;myclass&rsquo;]</p>
<p style="text-indent: 2em;">属性以my开头[myattr^=&rsquo;my&rsquo;]</p>
<p style="text-indent: 2em;">属性以class结尾[myattr$=&rsquo;class&rsquo;]</p>
<p style="text-indent: 2em;">属性包含cla这三个字符[myattr*=&rsquo;cla&rsquo;]</p>
<p style="text-indent: 2em;">如果一个选择会返回多个元素, 并且希望每返回一个元素, 就把某些属性应用到该元素上, 可以这么写</p>
<p style="text-indent: 2em;">$(&rdquo;div&rdquo;).each(function()</p>
<p style="text-indent: 2em;">{</p>
<p style="text-indent: 2em;">$(this).css(&rdquo;background-color&rdquo;, &ldquo;#F00&Prime;);</p>
<p style="text-indent: 2em;">alert($(this).html());</p>
<p style="text-indent: 2em;">$(this).width(&rdquo;200px&rdquo;);</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">2.事件</p>
<p style="text-indent: 2em;">给页面加onload事件处理方法</p>
<p style="text-indent: 2em;">$(function()</p>
<p style="text-indent: 2em;">{</p>
<p style="text-indent: 2em;">alert(&rdquo;页面结构加载完毕, 但是可能某些图片尚未加载(一般情况下, 此事件就够用了)&rdquo;);</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">可以给页面绑定多个onload事件处理方法</p>
<p style="text-indent: 2em;">$(function()</p>
<p style="text-indent: 2em;">{</p>
<p style="text-indent: 2em;">alert(&rdquo;我首先被执行&rdquo;);</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">$(function()</p>
<p style="text-indent: 2em;">{</p>
<p style="text-indent: 2em;">alert(&rdquo;我第二被执行&rdquo;);</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">绑定特殊事件</p>
<p style="text-indent: 2em;">$(&rdquo;#myid&rdquo;).keydown(function()</p>
<p style="text-indent: 2em;">{</p>
<p style="text-indent: 2em;">alert(&rdquo;触发了keydown事件&rdquo;);</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">除了这些常用的, 不常用的事件需要通过bind方法绑定</p>
<p style="text-indent: 2em;">3. 元素属性/方法</p>
<p style="text-indent: 2em;">得到一个元素的高度, $(&rdquo;#myid&rdquo;).height()</p>
<p style="text-indent: 2em;">得到一个元素的位置, $(&rdquo;#myid&rdquo;).offset() 返回的是一个offset对象, 如果取元素位置的top, 则$(&rdquo;#myid&rdquo;).offset().top,?取left则$(&rdquo;#myid&rdquo;).offset().left</p>
<p style="text-indent: 2em;">得到一个元素的innerHTML, $(&rdquo;#myid&rdquo;).html()</p>
<p style="text-indent: 2em;">得到一个元素的innerText, $(&rdquo;#myid&rdquo;).text()</p>
<p style="text-indent: 2em;">得到一个文本框的值, $(&rdquo;#myid&rdquo;).val()</p>
<p style="text-indent: 2em;">得到一个元素的属性, $(&rdquo;#myid&rdquo;).attr(&rdquo;myattribute&rdquo;)</p>
<p style="text-indent: 2em;">以上这些方法有个基本特征, 就是不带参数表示取值, 带有参数表示设定值(除了offset), 例如</p>
<p style="text-indent: 2em;">$(&rdquo;#myid&rdquo;).height(&rdquo;20&Prime;);</p>
<p style="text-indent: 2em;">$(&rdquo;#myid&rdquo;).html(&rdquo;&lt;a href=&rdquo;&gt;asdasd&lt;/a&gt;&rdquo;)</p>
<p style="text-indent: 2em;">$(&rdquo;#myid&rdquo;).val(&rdquo;asdasd&rdquo;)</p>
<p style="text-indent: 2em;">需要注意, offset是只读的.</p>
<p style="text-indent: 2em;">给一个元素设置属性 $(&rdquo;#myid&rdquo;).attr(&rdquo;width&rdquo;, &ldquo;20%&rdquo;)</p>
<p style="text-indent: 2em;">读取一个属性 $(&rdquo;#myid&rdquo;).attr(&rdquo;width&rdquo;)</p>
<p style="text-indent: 2em;">一次指定多个属性 $(&rdquo;#myid&rdquo;).attr({disabled: &ldquo;disabled&rdquo;, width:&rdquo;20%&rdquo;, height: &ldquo;30&Prime;})</p>
<p style="text-indent: 2em;">删除属性$(&rdquo;#myid&rdquo;).removeAttr(&rdquo;disabled&rdquo;)</p>
<p style="text-indent: 2em;">应用样式$(&rdquo;#myid&rdquo;).addClass(&rdquo;myclass&rdquo;)</p>
<p style="text-indent: 2em;">删除样式$(&rdquo;#myid&rdquo;).removeClass(&rdquo;myclass&rdquo;)</p>
<p style="text-indent: 2em;">加一个样式$(&rdquo;#myid&rdquo;).css(&rdquo;height&rdquo;, &ldquo;20px&rdquo;)</p>
<p style="text-indent: 2em;">加一组样式$(&rdquo;#myid&rdquo;).css({height:&rdquo;20px&rdquo;, width:&rdquo;100px&rdquo;})</p>
<p style="text-indent: 2em;">需要注意的是: 如果是加一个样式, 这个样式的名字是css中的名字, 比如说style=&rdquo;background-color:#FF0000&Prime;, 对应的jQuery写法是$(&rdquo;#myid&rdquo;).css(&rdquo;background-color&rdquo;, &ldquo;#FF0000&Prime;)</p>
<p style="text-indent: 2em;">但是加一组样式的时候, 样式的名字就是javascript中的css名字了, 比如: myid.style.backgroundColor = &ldquo;#FF0000&Prime;, 对应的jQuery写法是$(&rdquo;#myid&rdquo;).css({backgroundColor:&rdquo;#FF0000&Prime;})</p>
<p style="text-indent: 2em;">4. 根据关系查找元素</p>
<p style="text-indent: 2em;">找和自己同级的下一个元素$(&rdquo;#myid&rdquo;).next()</p>
<p style="text-indent: 2em;">找和自己同级的所有位于自己之下的元素$(&rdquo;#myid&rdquo;).nextAll()</p>
<p style="text-indent: 2em;">找和自己同级的上一个元素$(&rdquo;#myid&rdquo;).prev()</p>
<p style="text-indent: 2em;">找和自己同级的所有位于自己之上的所有元素$(&rdquo;#myid&rdquo;).prevAll()</p>
<p style="text-indent: 2em;">找自己的第一代子元素$(&rdquo;#myid&rdquo;).children()</p>
<p style="text-indent: 2em;">找自己的第一个父元素$(&rdquo;#myid&rdquo;).parent()</p>
<p style="text-indent: 2em;">找自己的所有父元素$(&rdquo;#myid&rdquo;).parents()</p>
<p style="text-indent: 2em;">例子:</p>
<p style="text-indent: 2em;">$(&rdquo;div.l4&Prime;).parents().each(</p>
<p style="text-indent: 2em;">function() {</p>
<p style="text-indent: 2em;">alert($(this).html());</p>
<p style="text-indent: 2em;">});</p>
<p style="text-indent: 2em;">会把class=l4的div的所有父元素都得到, 并且alert出他们的html</p>
<p style="text-indent: 2em;">例子:</p>
<p style="text-indent: 2em;">$(&rdquo;div.l4&Prime;).parents(&rdquo;div.l2&Prime;).each(function() { alert($(this).html()); });</p>
<p style="text-indent: 2em;">会得到class=l4的父元素, 该父元素必须是div, 而且其class=l2</p>
<p style="text-indent: 2em;">这里说的所有方法, 都可以带表达式, 表达式的写法参考第一部分</p>
<p style="text-indent: 2em;">5. 维护元素</p>
<p style="text-indent: 2em;">在body中增加一个元素</p>
<p style="text-indent: 2em;">$(&rdquo;body&rdquo;).append(&rdquo;&lt;input type=&rsquo;text&rsquo; value=&rsquo;asd&rsquo; /&gt;&rdquo;)</p>
<p style="text-indent: 2em;">该语句会把这段html插入到body结束标签之前, 结果是&lt;input type=&rsquo;text&rsquo; value=&rsquo;asd&rsquo; /&gt;&lt;/body&gt;</p>
<p style="text-indent: 2em;">$(&rdquo;body&rdquo;).prepend(&rdquo;&lt;input type=&rsquo;text&rsquo; value=&rsquo;asd&rsquo; /&gt;&rdquo;)</p>
<p style="text-indent: 2em;">该语句会把这段html插入到body开始标签之后, 结果是&lt;body&gt;&lt;input type=&rsquo;text&rsquo; value=&rsquo;asd&rsquo; /&gt;</p>
<p style="text-indent: 2em;">6.AJAX</p>
<p style="text-indent: 2em;">用get方法请求一个页面</p>
<p style="text-indent: 2em;">$.get(&rdquo;<a href="http://www.google.com/">http://www.google.com&rdquo;</a>, &ldquo;q=jquery&rdquo;, function(data, status){alert(data)})</p>
<p style="text-indent: 2em;">表示请求http://www.google.com, 参数是q, 参数的值是jquery, 请求结束后(不管成功还是失败)执行后面的function, 该function有两个固定参数, data和status, data是返回的数据, status是本次请求的状态</p>
<p style="text-indent: 2em;">用post方法请求一个页面</p>
<p style="text-indent: 2em;">$.post(&hellip;&hellip;..) 参数同get方法</p>
<p style="text-indent: 2em;">7.其他方法</p>
<p style="text-indent: 2em;">$.trim(str) 将str前后空格去掉</p>
<p style="text-indent: 2em;">$.browser 返回当前用户浏览器的类型</p>
<p style="text-indent: 2em;">$.browser.version返回当前浏览器的版本</p>
<p style="text-indent: 2em;">8. 插件</p>
<p style="text-indent: 2em;">jQuery支持插件, <a href="http://jquery.com/plugins/">http://jquery.com/plugins/</a>上面有很多现成的插件, 也可以自己写</p>
<p style="text-indent: 2em;">自己写插件, 请参考<a href="http://docs.jquery.com/Core/jQuery.fn.extend#object">http://docs.jquery.com/Core/jQ.....end#object</a> 和<a href="http://docs.jquery.com/Core/jQuery.extend#object">http://docs.jquery.com/Core/jQuery.extend#object</a></p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=60&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>六个防止SQL注入式攻击的建议</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-57</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Mon, 01 Jun 2009 08:37:15 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:57</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-57</comments><slash:comments>0</slash:comments><description><![CDATA[<p>SQL注入攻击的危害性很大。在讲解其防止办法之前，数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。</p>
<p>　　一、 SQL注入攻击的简单示例。</p>
<p>　　statement := "SELECT * FROM Users WHERE Value= " + a_variable + "</p>
<p>　　上面这条语句是很普通的一条SQL语句，他主要实现的功能就是让用户输入一个员工编号然后查询处这个员工的信息。但是若这条语句被不法攻击者改装过后，就可能成为破坏数据的黑手。如攻击者在输入变量的时候，输入以下内容SA001&rsquo;;drop table c_order--。那么以上这条SQL语句在执行的时候就变为了SELECT * FROM Users WHERE Value= &lsquo;SA001&rsquo;;drop table c_order--。</p>
<p>　　这条语句是什么意思呢?&lsquo;SA001&rsquo;后面的分号表示一个查询的结束和另一条语句的开始。c_order后面的双连字符 指示当前行余下的部分只是一个注释，应该忽略。如果修改后的代码语法正确，则服务器将执行该代码。系统在处理这条语句时，将首先执行查询语句，查到用户编号为SA001 的用户信息。然后，数据将删除表C_ORDER(如果没有其他主键等相关约束，则删除操作就会成功)。只要注入的SQL代码语法正确，便无法采用编程方式来检测篡改。因此，必须验证所有用户输入，并仔细检查在您所用的服务器中执行构造 SQL命令的代码。</p>
<p>　　二、 SQL注入攻击原理。</p>
<p>　　可见SQL注入攻击的危害性很大。在讲解其防止办法之前，数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。</p>
<p>　　SQL注入是目前比较常见的针对数据库的一种攻击方式。在这种攻击方式中，攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到SQLServer数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则，则在代码编译与执行的时候，就不会被系统所发现。</p>
<p>　　SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。上面笔者举的例子就是采用了这种方法。由于其直接与SQL语句捆绑，故也被称为直接注入式攻击法。二是一种间接的攻击方法，它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中，以执行一些恶意的SQL代码。</p>
<p>　　注入过程的工作方式是提前终止文本字符串，然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候，先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串，因此攻击者常常用注释标记&ldquo;&mdash;&rdquo;来终止注入的字符串。执行时，系统会认为此后语句位注释，故后续的文本将被忽略，不背编译与执行。</p>
<p>　　三、 SQL注入式攻击的防治。</p>
<p>　　既然SQL注入式攻击的危害这么大，那么该如何来防治呢?下面这些建议或许对数据库管理员防治SQL注入式攻击有一定的帮助。</p>
<p>　　1、 普通用户与系统管理员用户的权限要有严格的区分。</p>
<p>　　如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句，那么是否允许执行呢?由于Drop语句关系到数据库的基本对象，故要操作这个语句用户必须有相关的权限。在权限设计中，对于终端用户，即应用软件的使用者，没有必要给他们数据库对象的建立、删除等权限。那么即使在他们使用SQL语句中带有嵌入式的恶意代码，由于其用户权限的限制，这些代码也将无法被执行。故应用程序在设计的时候，最好把系统管理员的用户与普通用户区分开来。如此可以最大限度的减少注入式攻击对数据库带来的危害。</p>
<p>　　2、 强迫使用参数化语句。</p>
<p>　　如果在编写SQL语句的时候，用户输入的变量不是直接嵌入到SQL语句。而是通过参数来传递这个变量的话，那么就可以有效的防治SQL注入式攻击。也就是说，用户的输入绝对不能够直接被嵌入到SQL语句中。与此相反，用户的输入的内容必须进行过滤，或者使用参数化的语句来传递用户输入的变量。参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。采用这种措施，可以杜绝大部分的SQL注入式攻击。不过可惜的是，现在支持参数化语句的数据库引擎并不多。不过数据库工程师在开发产品的时候要尽量采用参数化语句。</p>
<p>　　3、 加强对用户输入的验证。</p>
<p>　　总体来说，防治SQL注入式攻击可以采用两种方法，一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。在SQLServer数据库中，有比较多的用户输入内容验证工具，可以帮助管理员来对付SQL注入式攻击。测试字符串变量的内容，只接受所需的值。拒绝包含二进制数据、转义序列和注释字符的输入内容。这有助于防止脚本注入，防止某些缓冲区溢出攻击。测试用户输入内容的大小和数据类型，强制执行适当的限制与转换。这即有助于防止有意造成的缓冲区溢出，对于防治注入式攻击有比较明显的效果。</p>
<p>　　如可以使用存储过程来验证用户的输入。利用存储过程可以实现对用户输入变量的过滤，如拒绝一些特殊的符号。如以上那个恶意代码中，只要存储过程把那个分号过滤掉，那么这个恶意代码也就没有用武之地了。在执行SQL语句之前，可以通过数据库的存储过程，来拒绝接纳一些特殊的符号。在不影响数据库应用的前提下，应该让数据库拒绝包含以下字符的输入。如分号分隔符，它是SQL注入式攻击的主要帮凶。如注释分隔符。注释只有在数据设计的时候用的到。一般用户的查询语句中没有必要注释的内容，故可以直接把他拒绝掉，通常情况下这么做不会发生意外损失。把以上这些特殊符号拒绝掉，那么即使在SQL语句中嵌入了恶意代码，他们也将毫无作为。</p>
<p>　　故始终通过测试类型、长度、格式和范围来验证用户输入，过滤用户输入的内容。这是防止SQL注入式攻击的常见并且行之有效的措施。</p>
<p>　　4、 多多使用SQL Server数据库自带的安全参数。</p>
<p>　　为了减少注入式攻击对于SQL Server数据库的不良影响，在SQLServer数据库专门设计了相对安全的SQL参数。在数据库设计过程中，工程师要尽量采用这些参数来杜绝恶意的SQL注入式攻击。</p>
<p>　　如在SQL Server数据库中提供了Parameters集合。这个集合提供了类型检查和长度验证的功能。如果管理员采用了Parameters这个集合的话，则用户输入的内容将被视为字符值而不是可执行代码。即使用户输入的内容中含有可执行代码，则数据库也会过滤掉。因为此时数据库只把它当作普通的字符来处理。使用Parameters集合的另外一个优点是可以强制执行类型和长度检查，范围以外的值将触发异常。如果用户输入的值不符合指定的类型与长度约束，就会发生异常，并报告给管理员。如上面这个案例中，如果员工编号定义的数据类型为字符串型，长度为10个字符。而用户输入的内容虽然也是字符类型的数据，但是其长度达到了20个字符。则此时就会引发异常，因为用户输入的内容长度超过了数据库字段长度的限制。</p>
<p>　　5、 多层环境如何防治SQL注入式攻击?</p>
<p>　　在多层应用环境中，用户输入的所有数据都应该在验证之后才能被允许进入到可信区域。未通过验证过程的数据应被数据库拒绝，并向上一层返回一个错误信息。实现多层验证。对无目的的恶意用户采取的预防措施，对坚定的攻击者可能无效。更好的做法是在用户界面和所有跨信任边界的后续点上验证输入。如在客户端应用程序中验证数据可以防止简单的脚本注入。但是，如果下一层认为其输入已通过验证，则任何可以绕过客户端的恶意用户就可以不受限制地访问系统。故对于多层应用环境，在防止注入式攻击的时候，需要各层一起努力，在客户端与数据库端都要采用相应的措施来防治SQL语句的注入式攻击。</p>
<p>　　6、 必要的情况下使用专业的漏洞扫描工具来寻找可能被攻击的点。</p>
<p>　　使用专业的漏洞扫描工具，可以帮助管理员来寻找可能被SQL注入式攻击的点。不过漏洞扫描工具只能发现攻击点，而不能够主动起到防御SQL注入攻击的作用。当然这个工具也经常被攻击者拿来使用。如攻击者可以利用这个工具自动搜索攻击目标并实施攻击。为此在必要的情况下，企业应当投资于一些专业的漏洞扫描工具。一个完善的漏洞扫描程序不同于网络扫描程序，它专门查找数据库中的SQL注入式漏洞。最新的漏洞扫描程序可以查找最新发现的漏洞。所以凭借专业的工具，可以帮助管理员发现SQL注入式漏洞，并提醒管理员采取积极的措施来预防SQL注入式攻击。如果攻击者能够发现的SQL注入式漏洞数据库管理员都发现了并采取了积极的措施堵住漏洞，那么攻击者也就无从下手了。</p>
<p>&nbsp;</p>
<p>&nbsp;</p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=57&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>jQuery的html()等方法介绍</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-55</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Fri, 22 May 2009 08:18:52 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:55</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-55</comments><slash:comments>0</slash:comments><description><![CDATA[<p>本来是看到一篇文章，写研究的，想COPY过来就完事了。该来来自于cssRain，但是在看的过程中，发现内容和标准偏差很多，于是就贴上它的链接，然后自己谈谈理解吧。</p>
<p>CSSRAIN的链接为：http://www.cssrain.cn/article.asp?id=1176</p>
<p>在<strong style="color: black; background-color: #ffff66;">jQuery</strong>里面对于一些HTML的元素操作都是很简化的，这也是很多人选择使用<strong style="color: black; background-color: #ffff66;">jQuery</strong>的原因。</p>
<p>对于获取某一个元素的值，如input框，我们往往是用$('#test').val();</p>
<p>$('#test')这个我就不多说了，反正就是获取ID为test的这个元素。</p>
<p>$('#test').val()，也就是获取它的值，一般来说，凡是能够用在FORM里的元素，都可以用.val()来进行值的获取，如input,textarea,select等，都可以用.val()来获取它们的当前值</p>
<p>而.val('aa');则是设置该元素的值，$('#test').val('aa')，也就是相当于设置test元素的值为aa。</p>
<p>类似这样的用法还有两种：<a name="baidusnap1"></a><strong style="color: black; background-color: #a0ffff;">.html</strong>(),.text()，这两种用法往往用在div和span元素上，一般是为这两种元素进行赋值和取值。</p>
<p><strong style="color: black; background-color: #a0ffff;">.html</strong>()替代了以前的 .innerHTML , <strong style="color: black; background-color: #a0ffff;">.html</strong>('test') ，则是替代了 .innerHTML = 'test';</p>
<p>这些类似的简化写法让我们在实际的操作中感觉得更加流畅。</p>
<p>这些方法都是直接在方法名里加参数来进行赋值和取值的。还有一些是通过第二个参数进行取值的（说的不太清楚。。。），比如$('#test').attr('name')，那么，返回的值就是它的attribute中的name了，如果$('#test').attr('id','test2'),则是相当于把这个test元素的name设为test2,再进行取值的时候，name就是test2了。</p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=55&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>jQuery语法方法属性集合</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-54</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Fri, 22 May 2009 08:18:19 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:54</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-54</comments><slash:comments>0</slash:comments><description><![CDATA[<p><span style="font-size: medium;">Dom：</span></p>
<p><span style="font-size: medium;">Attribute：<br />$("p").addClass(css中定义的样式类型); 给某个元素添加样式<br />$("img").attr({src:"test.jpg",alt:"test Image"}); 给某个元素添加属性/值，参数是map<br />$("img").attr("src","test.jpg"); 给某个元素添加属性/值<br />$("img").attr("title", function() { return this.src }); 给某个元素添加属性/值<br />$("元素名称").html(); 获得该元素内的内容（元素，文本等）<br />$("元素名称").html("&lt;b&gt;new stuff&lt;/b&gt;"); 给某元素设置内容<br />$("元素名称").removeAttr("属性名称") 给某元素删除指定的属性以及该属性的值<br />$("元素名称").removeClass("class") 给某元素删除指定的样式<br />$("元素名称").text(); 获得该元素的文本<br />$("元素名称").text(value); 设置该元素的文本值为value<br />$("元素名称").toggleClass(class) 当元素存在参数中的样式的时候取消,如果不存在就设置此样式<br />$("input元素名称").val(); 获取input元素的值<br />$("input元素名称").val(value); 设置input元素的值为value<br />Manipulation：<br />$("元素名称").after(content); 在匹配元素后面添加内容<br />$("元素名称").append(content); 将content作为元素的内容插入到该元素的后面<br />$("元素名称").appendTo(content); 在content后接元素<br />$("元素名称").before(content); 与after方法相反<br />$("元素名称").clone(布尔表达式) 当布尔表达式为真时，克隆元素（无参时，当作true处理）<br />$("元素名称").empty() 将该元素的内容设置为空<br />$("元素名称").insertAfter(content); 将该元素插入到content之后<br />$("元素名称").insertBefore(content); 将该元素插入到content之前<br />$("元素").prepend(content); 将content作为该元素的一部分，放到该元素的最前面<br />$("元素").prependTo(content); 将该元素作为content的一部分，放content的最前面<br />$("元素").remove(); 删除所有的指定元素<br />$("元素").remove("exp"); 删除所有含有exp的元素<br />$("元素").wrap("html"); 用html来包围该元素<br />$("元素").wrap(element); 用element来包围该元素<br />Traversing：<br />add(expr)<br />add(html)<br />add(elements)<br />children(expr)<br />contains(str)<br />end()<br />filter(expression)<br />filter(filter)<br />find(expr)<br />is(expr)<br />next(expr)<br />not(el)<br />not(expr)<br />not(elems)<br />parent(expr)<br />parents(expr)<br />prev(expr)<br />siblings(expr)</span></p>
<p><span style="font-size: medium;">Core：<br />$(html).appendTo("body") 相当于在body中写了一段html代码<br />$(elems) 获得DOM上的某个元素<br />$(function(){&hellip;&hellip;..}); 执行一个函数<br />$("div &gt; p").css("border", "1px solid gray"); 查找所有div的子节点p，添加样式<br />$("input:radio", document.forms[0]) 在当前页面的第一个表单中查找所有的单选按钮<br />$.extend(prop) prop是一个jQuery对象，<br />举例：<br />jQuery.extend({<br />min: function(a, b) { return a &lt; b ? a : b; },<br />max: function(a, b) { return a &gt; b ? a : b; }<br />});<br />jQuery( expression, [context] ) ---$( expression, [context]); 在默认情况下，$()查询的是当前HTML文档中的DOM元素。</span></p>
<p><span style="font-size: medium;">each( callback ) 以每一个匹配的元素作为上下文来执行一个函数<br />举例：1<br />$("span").click(function){<br />$("li").each(function(){<br />$(this).toggleClass("example");<br />});<br />});<br />举例：2<br />$("button").click(function () {<br />$("div").each(function (index, domEle) {<br />// domEle == this<br />$(domEle).css("backgroundColor", "yellow");<br />if ($(this).is("#stop")) {<br />$("span").text("Stopped at div index #" + index);<br />return false;<br />}<br />});<br />});</span></p>
<p><br /><span style="font-size: medium;">jQuery Event:</span></p>
<p><span style="font-size: medium;">ready(fn); $(document).ready()注意在body中没有onload事件，否则该函数不能执行。在每个页面中可以<br />有很多个函数被加载执行，按照fn的顺序来执行。<br />bind( type, [data], fn ) 为每一个匹配元素的特定事件（像click）绑定一个或多个事件处理器函数。可能的事件属性有：blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove,<br />mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress,<br />keyup, error<br />one( type, [data], fn ) 为每一个匹配元素的特定事件（像click）绑定一个或多个事件处理器函数。在每个对<br />象上，这个事件处理函数只会被执行一次。其他规则与bind()函数相同。</span></p>
<p><span style="font-size: medium;">trigger( type, [data] ) 在每一个匹配的元素上触发某类事件。<br />triggerHandler( type, [data] ) 这一特定方法会触发一个元素上特定的事件(指定一个事件类型)，同时取消浏览器对此事件的默认行动<br />unbind( [type], [data] ) 反绑定，从每一个匹配的元素中删除绑定的事件。<br />$("p").unbind() 移除所有段落上的所有绑定的事件<br />$("p").unbind( "click" ) 移除所有段落上的click事件<br />hover( over, out ) over,out都是方法, 当鼠标移动到一个匹配的元素上面时，会触发指定的第一个函数。当鼠标移出这个元素时，会触发指定的第二个函数。<br />$("p").hover(function(){<br />$(this).addClass("over");<br />},<br />function(){<br />$(this).addClass("out");<br />}<br />);</span></p>
<p><span style="font-size: medium;">toggle( fn, fn ) 如果点击了一个匹配的元素，则触发指定的第一个函数，当再次点击同一元素时，则触发指定的第二个函数。<br />$("p").toggle(function(){<br />$(this).addClass("selected");<br />},<br />function(){<br />$(this).removeClass("selected");<br />}<br />);</span></p>
<p>&nbsp;</p>
<p><br /><span style="font-size: medium;">元素事件列表说明<br />注：不带参数的函数，其参数为可选的 fn。jQuery不支持form元素的reset事件。<br />事件 描述 支持元素或对象<br />blur( ) 元素失去焦点 a, input, textarea, button, select, label, map, area<br />change( ) 用户改变域的内容 input, textarea, select<br />click( ) 鼠标点击某个对象 几乎所有元素<br />dblclick( ) 鼠标双击某个对象 几乎所有元素<br />error( ) 当加载文档或图像时发生某个错误 window, img<br />focus( ) 元素获得焦点 a, input, textarea, button, select, label, map, area<br />keydown( ) 某个键盘的键被按下 几乎所有元素<br />keypress( ) 某个键盘的键被按下或按住 几乎所有元素<br />keyup( ) 某个键盘的键被松开 几乎所有元素<br />load( fn ) 某个页面或图像被完成加载 window, img<br />mousedown( fn ) 某个鼠标按键被按下 几乎所有元素<br />mousemove( fn ) 鼠标被移动 几乎所有元素<br />mouseout( fn ) 鼠标从某元素移开 几乎所有元素<br />mouseover( fn ) 鼠标被移到某元素之上 几乎所有元素<br />mouseup( fn ) 某个鼠标按键被松开 几乎所有元素<br />resize( fn ) 窗口或框架被调整尺寸 window, iframe, frame<br />scroll( fn ) 滚动文档的可视部分时 window<br />select( ) 文本被选定 document, input, textarea<br />submit( ) 提交按钮被点击 form<br />unload( fn ) 用户退出页面 window</span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">JQuery Ajax 方法说明:</span></p>
<p><span style="font-size: medium;">load( url, [data], [callback] ) 装入一个远程HTML内容到一个DOM结点。<br />$("#feeds").load("feeds.html"); 将feeds.html文件载入到id为feeds的div中<br />$("#feeds").load("feeds.php", {limit: 25}, function(){<br />alert("The last 25 entries in the feed have been loaded");<br />});</span></p>
<p><span style="font-size: medium;">jQuery.get( url, [data], [callback] ) 使用GET请求一个页面。<br />$.get("test.cgi", { name: "John", time: "2pm" }, function(data){<br />alert("Data Loaded: " + data);<br />});</span></p>
<p><span style="font-size: medium;">jQuery.getJSON( url, [data], [callback] ) 使用GET请求JSON数据。<br />$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){<br />alert("JSON Data: " + json.users[3].name);<br />});</span></p>
<p><span style="font-size: medium;">jQuery.getScript( url, [callback] ) 使用GET请求JavaScript文件并执行。<br />$.getScript("test.js", function(){<br />alert("Script loaded and executed.");<br />});<br />jQuery.post( url, [data], [callback], [type] ) 使用POST请求一个页面。</span></p>
<p><span style="font-size: medium;">ajaxComplete( callback ) 当一个AJAX请求结束后，执行一个函数。这是一个Ajax事件<br />$("#msg").ajaxComplete(function(request, settings){<br />$(this).append("&lt;li&gt;Request Complete.&lt;/li&gt;");<br />});<br />ajaxError( callback ) 当一个AJAX请求失败后，执行一个函数。这是一个Ajax事件<br />$("#msg").ajaxError(function(request, settings){<br />$(this).append("&lt;li&gt;Error requesting page " + settings.url + "&lt;/li&gt;");<br />});</span></p>
<p><span style="font-size: medium;">ajaxSend( callback ) 在一个AJAX请求发送时，执行一个函数。这是一个Ajax事件<br />$("#msg").ajaxSend(function(evt, request, settings){<br />$(this).append("&lt;li&lt;Starting request at " + settings.url<br />+ "&lt;/li&lt;");<br />});</span></p>
<p><span style="font-size: medium;">ajaxStart( callback ) 在一个AJAX请求开始但还没有激活时，执行一个函数。这是一个Ajax事件<br />当AJAX请求开始(并还没有激活时)显示loading信息<br />$("#loading").ajaxStart(function(){<br />$(this).show();<br />});</span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium;">ajaxStop( callback ) 当所有的AJAX都停止时，执行一个函数。这是一个Ajax事件<br />当所有AJAX请求都停止时，隐藏loading信息。<br />$("#loading").ajaxStop(function(){<br />$(this).hide();<br />});</span></p>
<p><span style="font-size: medium;">ajaxSuccess( callback ) 当一个AJAX请求成功完成后，执行一个函数。这是一个Ajax事件<br />当AJAX请求成功完成时，显示信息。<br />$("#msg").ajaxSuccess(function(evt, request, settings){<br />$(this).append("&lt;li&gt;Successful Request!&lt;/li&gt;");<br />});</span></p>
<p><span style="font-size: medium;">jQuery.ajaxSetup( options ) 为所有的AJAX请求进行全局设置。查看$.ajax函数取得所有选项信息。<br />设置默认的全局AJAX请求选项。<br />$.ajaxSetup({<br />url: "/xmlhttp/",<br />global: false,<br />type: "POST"<br />});<br />$.ajax({ data: myData });</span></p>
<p><span style="font-size: medium;">serialize( ) 以名称和值的方式连接一组input元素。实现了正确表单元素序列<br />function showValues() {<br />var str = $("form").serialize();<br />$("#results").text(str);<br />}<br />$(":checkbox, :radio").click(showValues);<br />$("select").change(showValues);<br />showValues();</span></p>
<p><span style="font-size: medium;">serializeArray( ) 连接所有的表单和表单元素(类似于.serialize()方法)，但是返回一个JSON数据格式。<br />从form中取得一组值，显示出来<br />function showValues() {<br />var fields = $(":input").serializeArray();<br />alert(fields);<br />$("#results").empty();<br />jQuery.each(fields, function(i, field){<br />$("#results").append(field.value + " ");<br />});<br />}<br />$(":checkbox, :radio").click(showValues);<br />$("select").change(showValues);<br />showValues();</span></p>
<p><span style="font-size: medium;">JQuery Effects 方法说明</span></p>
<p><span style="font-size: medium;">show( ) 显示隐藏的匹配元素。<br />show( speed, [callback] ) 以优雅的动画显示所有匹配的元素，并在显示完成后可选地触发一个回调函数。<br />hide( ) 隐藏所有的匹配元素。<br />hide( speed, [callback] ) 以优雅的动画隐藏所有匹配的元素，并在显示完成后可选地触发一个回调函数<br />toggle( ) 切换元素的可见状态。如果元素是可见的，切换为隐藏的；如果元素是隐藏的，<br />切换为可见的。<br />slideDown( speed, [callback] ) 通过高度变化（向下增大）来动态地显示所有匹配的元素，在显示完成后可选<br />地触发一个回调函数。这个动画效果只调整元素的高度，可以使匹配的元素以<br />"滑动"的方式显示出来。<br />slideUp( speed, [callback] ) 通过高度变化（向上减小）来动态地隐藏所有匹配的元素，在隐藏完成后可选地<br />触发一个回调函数。这个动画效果只调整元素的高度，可以使匹配的元素以"滑动"<br />的方式隐藏起来。<br />slideToggle( speed, [callback] ) 通过高度变化来切换所有匹配元素的可见性，并在切换完成后可选地触发一个回<br />调函数。 这个动画效果只调整元素的高度，可以使匹配的元素以"滑动"的方式隐<br />藏或显示。<br />fadeIn( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡入效果，并在动画完成后可选地触<br />发一个回调函数。 这个动画只调整元素的不透明度，也就是说所有匹配的元素的<br />高度和宽度不会发生变化。<br />fadeOut( speed, [callback] ) 通过不透明度的变化来实现所有匹配元素的淡出效果，并在动画完成后可选地触<br />发一个回调函数。 这个动画只调整元素的不透明度，也就是说所有匹配的元素的<br />高度和宽度不会发生变化。<br />fadeTo( speed, opacity, [callback] ) 把所有匹配元素的不透明度以渐进方式调整到指定的不透明度，并在动画完成<br />后可选地触发一个回调函数。 这个动画只调整元素的不透明度，也就是说所<br />有匹配的元素的高度和宽度不会发生变化。<br />stop( ) 停止所有匹配元素当前正在运行的动画。如果有动画处于队列当中，他们就会立即开始。<br />queue( ) 取得第一个匹配元素的动画序列的引用(返回一个内容为函数的数组)<br />queue( callback ) 在每一个匹配元素的事件序列的末尾添加一个可执行函数，作为此元素的事件函数<br />queue( queue ) 以一个新的动画序列代替所有匹配元素的原动画序列<br />dequeue( ) 执行并移除动画序列前端的动画<br />animate( params, [duration], [easing], [callback] ) 用于创建自定义动画的函数。<br />animate( params, options ) 创建自定义动画的另一个方法。作用同上。</span></p>
<p><br /><span style="font-size: medium;">JQuery Traversing 方法说明</span></p>
<p><span style="font-size: medium;">eq( index ) 从匹配的元素集合中取得一个指定位置的元素，index从0开始<br />filter( expr ) 返回与指定表达式匹配的元素集合，可以使用","号分割多个expr，用于实现多个条件筛选<br />filter( fn ) 利用一个特殊的函数来作为筛选条件移除集合中不匹配的元素。<br />is( expr ) 用一个表达式来检查当前选择的元素集合，如果其中至少有一个元素符合这个给定的<br />表达式就返回true。<br />map( callback ) 将jQuery对象中的一组元素利用callback方法转换其值，然后添加到一个jQuery数组中。<br />not( expr ) 从匹配的元素集合中删除与指定的表达式匹配的元素。<br />slice( start, [end] ) 从匹配元素集合中取得一个子集，和内建的数组的slice方法相同。<br />add( expr ) 把与表达式匹配的元素添加到jQuery对象中。<br />children( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。可选的过滤器<br />将使这个方法只匹配符合的元素(只包括元素节点，不包括文本节点)。<br />contents( ) 取得一个包含匹配的元素集合中每一个元素的所有子孙节点的集合(只包括元素节点，不<br />包括文本节点)，如果元素为iframe，则取得其中的文档元素<br />find( expr ) 搜索所有与指定表达式匹配的元素。<br />next( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的后面同辈元素的元素集合。<br />nextAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素所有的后面同辈元素的元素集合<br />parent( [expr] ) 取得一个包含着所有匹配元素的唯一父元素的元素集合。<br />parents( [expr] ) 取得一个包含着所有匹配元素的唯一祖先元素的元素集合（不包含根元素）。<br />prev( [expr] ) 取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合。<br />prevAll( [expr] ) 取得一个包含匹配的元素集合中每一个元素的之前所有同辈元素的元素集合。<br />siblings( [expr] ) 取得一个包含匹配的元素集合中每一个元素的所有同辈元素的元素集合。<br />andSelf( ) 将前一个匹配的元素集合添加到当前的集合中<br />取得所有div元素和其中的p元素，添加border类属性。取得所有div元素中的p元素，<br />添加background类属性<br />$("div").find("p").andSelf().addClass("border");<br />$("div").find("p").addClass("background");<br />end( ) 结束当前的操作，回到当前操作的前一个操作<br />找到所有p元素其中的span元素集合，然后返回p元素集合，添加css属性<br />$("p").find("span").end().css("border", "2px red solid");</span></p>
<p><span style="font-size: medium;">JQuery Selectors 方法说明</span></p>
<p><span style="font-size: medium;">基本选择器<br />$("#myDiv") 匹配唯一的具有此id值的元素<br />$("div") 匹配指定名称的所有元素<br />$(".myClass") 匹配具有此class样式值的所有元素<br />$("*") 匹配所有元素<br />$("div,span,p.myClass") 联合所有匹配的选择器<br />层叠选择器<br />$("form input") 后代选择器，选择ancestor的所有子孙节点<br />$("#main &gt; *") 子选择器，选择parent的所有子节点<br />$("label + input") 临选择器，选择prev的下一个临节点<br />$("#prev ~ div") 同胞选择器，选择prev的所有同胞节点<br />基本过滤选择器<br />$("tr:first") 匹配第一个选择的元素<br />$("tr:last") 匹配最后一个选择的元素<br />$("input:not(:checked) + span")从原元素集合中过滤掉匹配selector的所有元素（这里有是一个临选择器）<br />$("tr:even") 匹配集合中偶数位置的所有元素(从0开始)<br />$("tr:odd") 匹配集合中奇数位置的所有元素(从0开始)<br />$("td:eq(2)") 匹配集合中指定位置的元素(从0开始)<br />$("td:gt(4)") 匹配集合中指定位置之后的所有元素(从0开始)<br />$("td:gl(4)") 匹配集合中指定位置之前的所有元素(从0开始)<br />$(":header") 匹配所有标题<br />$("div:animated") 匹配所有正在运行动画的所有元素<br />内容过滤选择器<br />$("div:contains('John')") 匹配含有指定文本的所有元素<br />$("td:empty") 匹配所有空元素(只含有文本的元素不算空元素)<br />$("div:has(p)") 从原元素集合中再次匹配所有至少含有一个selector的所有元素<br />$("td:parent") 匹配所有不为空的元素(含有文本的元素也算)<br />$("div:hidden") 匹配所有隐藏的元素，也包括表单的隐藏域<br />$("div:visible") 匹配所有可见的元素<br />属性过滤选择器<br />$("div[id]") 匹配所有具有指定属性的元素<br />$("input[name='newsletter']") 匹配所有具有指定属性值的元素<br />$("input[name!='newsletter']") 匹配所有不具有指定属性值的元素<br />$("input[name^='news']") 匹配所有指定属性值以value开头的元素<br />$("input[name$='letter']") 匹配所有指定属性值以value结尾的元素<br />$("input[name*='man']") 匹配所有指定属性值含有value字符的元素<br />$("input[id][name$='man']") 匹配同时符合多个选择器的所有元素<br />子元素过滤选择器<br />$("ul li:nth-child(2)"),<br />$("ul li:nth-child(odd)"), 匹配父元素的第n个子元素<br />$("ul li:nth-child(3n + 1)")</span></p>
<p><span style="font-size: medium;">$("div span:first-child") 匹配父元素的第1个子元素<br />$("div span:last-child") 匹配父元素的最后1个子元素<br />$("div button:only-child") 匹配父元素的唯一1个子元素<br />表单元素选择器<br />$(":input") 匹配所有的表单输入元素，包括所有类型的input, textarea, select 和 button<br />$(":text") 匹配所有类型为text的input元素<br />$(":password") 匹配所有类型为password的input元素<br />$(":radio") 匹配所有类型为radio的input元素<br />$(":checkbox") 匹配所有类型为checkbox的input元素<br />$(":submit") 匹配所有类型为submit的input元素<br />$(":image") 匹配所有类型为image的input元素<br />$(":reset") 匹配所有类型为reset的input元素<br />$(":button") 匹配所有类型为button的input元素<br />$(":file") 匹配所有类型为file的input元素<br />$(":hidden") 匹配所有类型为hidden的input元素或表单的隐藏域<br />表单元素过滤选择器<br />$(":enabled") 匹配所有可操作的表单元素<br />$(":disabled") 匹配所有不可操作的表单元素<br />$(":checked") 匹配所有已点选的元素<br />$("select option:selected") 匹配所有已选择的元素</span></p>
<p><br /><span style="font-size: medium;">JQuery CSS 方法说明</span></p>
<p><span style="font-size: medium;">css( name ) 访问第一个匹配元素的样式属性。<br />css( properties ) 把一个"名/值对"对象设置为所有匹配元素的样式属性。<br />$("p").hover(function () {<br />$(this).css({ backgroundColor:"yellow", fontWeight:"bolder" });<br />}, function () {<br />var cssObj = {<br />backgroundColor: "#ddd",<br />fontWeight: "",<br />color: "rgb(0,40,244)"<br />}<br />$(this).css(cssObj);<br />});<br />css( name, value ) 在所有匹配的元素中，设置一个样式属性的值。<br />offset( ) 取得匹配的第一个元素相对于当前可视窗口的位置。返回的对象有2个属性，<br />top和left，属性值为整数。这个函数只能用于可见元素。<br />var p = $("p:last");<br />var offset = p.offset();<br />p.html( "left: " + offset.left + ", top: " + offset.top );<br />width( ) 取得当前第一匹配的元素的宽度值，<br />width( val ) 为每个匹配的元素设置指定的宽度值。<br />height( ) 取得当前第一匹配的元素的高度值，<br />height( val ) 为每个匹配的元素设置指定的高度值。</span></p>
<p><span style="font-size: medium;">JQuery Utilities 方法说明<br />jQuery.browser<br />.msie 表示ie<br />jQuery.browser.version 读取用户浏览器的版本信息<br />jQuery.boxModel 检测用户浏览器针对当前页的显示是否基于W3C CSS的盒模型<br />jQuery.isFunction( obj ) 检测传递的参数是否为function<br />function stub() { }<br />var objs = [<br />function () {},<br />{ x:15, y:20 },<br />null,<br />stub,<br />"function"<br />];<br />jQuery.each(objs, function (i) {<br />var isFunc = jQuery.isFunction(objs[i]);<br />$("span:eq( " + i + ")").text(isFunc);<br />});<br />jQuery.trim( str ) 清除字符串两端的空格，使用正则表达式来清除给定字符两端的空格<br />jQuery.each( object, callback ) 一个通用的迭代器，可以用来无缝迭代对象和数组<br />jQuery.extend( target, object1, [objectN] ) 扩展一个对象，修改原来的对象并返回，这是一个强大的实现继承的<br />工具，这种继承是采用传值的方法来实现的，而不是JavaScript中的<br />原型链方式。<br />合并settings和options对象，返回修改后的settings对象<br />var settings = { validate: false, limit: 5, name: "foo" };<br />var options = { validate: true, name: "bar" };<br />jQuery.extend(settings, options);</span></p>
<p><span style="font-size: medium;">合并defaults和options对象，defaults对象并没有被修改。options对象中的值<br />代替了defaults对象的值传递给了empty。</span></p>
<p><span style="font-size: medium;">var empty = {}<br />var defaults = { validate: false, limit: 5, name: "foo" };<br />var options = { validate: true, name: "bar" };<br />var settings = $.extend(empty, defaults, options);<br />jQuery.grep( array, callback, [invert] ) 通过一个筛选函数来去除数组中的项<br />$.grep( [0,1,2], function(n,i){<br />return n &gt; 0;<br />});<br />jQuery.makeArray( obj ) 将一个类似数组的对象转化为一个真正的数组<br />将选取的div元素集合转化为一个数组<br />var arr = jQuery.makeArray(document.getElementsByTagName("div"));<br />arr.reverse(); // use an Array method on list of dom elements<br />$(arr).appendTo(document.body);<br />jQuery.map( array, callback ) 使用某个方法修改一个数组中的项，然后返回一个新的数组<br />jQuery.inArray( value, array ) 返回value在数组中的位置，如果没有找到，则返回-1<br />jQuery.unique( array ) 删除数组中的所有重复元素，返回整理后的数组</span></p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=54&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>VS .NET 2005中水晶报表的打包部署</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-53</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Wed, 20 May 2009 07:16:53 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:53</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-53</comments><slash:comments>0</slash:comments><description><![CDATA[<p><span style="font-size: x-small;">程序打包的时候，要把水晶报表的注册码也给打进去，还有一些必须的合并模块需要添加。<br /><br />具体操作步骤：<br />　 <br />(1)新建&ldquo;安装和部署项目&rdquo;--&gt;&ldquo;安装项目&rdquo; <br />　　<br />(2)选择项目类型（这里选&ldquo;创建用于windows应用程序的安装程序&rdquo;）--&gt;下一步<br /><br />(3)选择要包含的文件：<br />一是要部署的应用程序（包括项目主输出阿，内容文件阿，内嵌文件阿等等），<br />二是需要添加的合并模块(在该部署项目节点上点右键--&gt;添加)，主要是包括以下几个文件： <br />　　 Crystal_Database_Access2003.msm <br />　　 Crystal_Database_Access2003_enu.msm <br />　　 Crystal_Managed2003.msm <br />　　 Crystal_regwiz2003.msm <br />　　 VC_User_CRT71_RTL_X86_---.msm <br />　　 VC_User_STL71_RTL_X86_---.msm <br />　　 你可以在'C:\Program Files\Common Files\Merge Modules'文件夹下找到替换的合并模块。<br />　　<br />　　这些模块的具体功能如下：<br />　　managed.msm、managed_chs.msm、（托管组件 MSM 处理所有托管组件的分发，其中包括Windows 窗体查看器、Web 窗体查看器和所有 Crystal Decisions 命名空间）<br />　　database_access.msm、database_access_chs.msm、（对于使报表运行所需的所有其他文件，由数据库访问 MSM 处理其分发。其中包括数据库、导出和图表驱动程序。）<br />　　regwiz.msm、（KeyCode MSM 处理 Crystal Decisions 密钥号码的安装）<br />　　VC_CRT.msm、VC_STL.msm（这是vc的运行库，估计是Crystal Report或涉及到的某些程序是用vc写的，所以需要它－－此处为某一网友观点） <br />　　<br />(4)打开解决方案--&gt;右键点击Crystal_regwiz2003.msm 的属性，在&ldquo;MergeMouduleProperties&rdquo;里的&ldquo;License Key&rdquo;填入：XXXXXX<br />（这个是你生成Crystal Report是用到的注册号的密码，不填不能编译） <br />　　<br />(5)生成解决方案 <br />--over--<br />　　<br />刚开始使用水晶报表的朋友们基本上都是按照这个步骤来操作的。<br />但是，在程序执行的时候会出现一个异常：<br />　</span><span><span style="font-size: 8pt;">************** 异常文本 ************** <br />　　System.TypeInitializationException: &ldquo;CrystalDecisions.CrystalReports.Engine.ReportDocument&rdquo;的类型初始值设定项引发异常。 ---&gt; System.Runtime.InteropServices.COMException (0x80040154): <br />带有 CLSID {CF76A644-314B-404D-8D45-F08B51FF990B} 的 COM 对象无效或未注册。 </span></span></p>
<p>&nbsp;</p>
<p><span><span style="font-size: 8pt;">解决这一问题的方法是，<br />首先到这里</span></span><a href="http://support.businessobjects.com/downloads/merge_modules.asp#07" target="_blank&quot;"><span><span style="font-size: 8pt;"><span style="color: #000080;">http://support.businessobjects.com/downloads/merge_modules.asp#07</span></span></span></a><span><span style="font-size: 8pt;">下载 <br />Merge Modules for Crystal Reports for Visual Studio .NET 2005 ，<br />然后把这个CrystalReportsRedist2005_x86.msm这个合并模块添加到部署项目中，编译，大功告成！<br /></span></span></p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=53&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>Crystal Reports 2008 中文版 v12 开发版、注册码、发布方法</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-52</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Wed, 20 May 2009 07:16:12 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:52</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-52</comments><slash:comments>3</slash:comments><description><![CDATA[<p>CrystalReports 2008<br /><br />官方下载地址：<br />1、<a href="http://downloads.businessobjects.com/akdlm/crystalreports/CrystalReports2008.zip" target="_blank">http://downloads.businessobjects.com/akdlm/crystalreports/CrystalReports2008.zip</a><br />2、<a href="http://downloads.businessobjects.com/crystalreports/CrystalReports2008.zip" target="_blank">http://downloads.businessobjects.com/crystalreports/CrystalReports2008.zip</a><br /><br /><strong>Your installation key code:</strong> CTK0T-5RYZZP6-000MYCJ-4FXT <br /><strong>Important:</strong> You will need this key code to activate and install your evaluation software.</p>
<p>
<table style="width: 98%;" cellspacing="0">
<tbody>
<tr>
<td>密钥: <span style="color: #333300;">CFKOA-YOTTM2M-OOUFAFF-N43M<br /></span>注册号: <span style="color: #333300;">6707437608<br /></span>注：<strong><span style="color: #006400;">通过测试 安装时要把安装文件Copy到根目录下</span></strong><br /></td>
</tr>
<tr>
<td><span style="text-decoration: underline;"><span style="color: #800080;">Crystal Reports basic for Visual Studio 2008部署 </span></span><br /><br />近日帮朋友写了一个基于Web的小程序，其中使用了VS2008自带的Crystal Report，<br />打包的时候我已在Prerequisites（系统必备）中选择了<br />Crystal Reports Basic for Visual Studio 2008,<br />Microsoft Visual Studio 2008 Report Viewer，<br />.Net Framework 3.5,<br />Windows Installer 3.1,<br />由他自己去下载。本以为这样就可以了，出乎我意料,水晶报表并没有打包进去，不知道是我的系统的问题还是其他的问题。 <br /><br />在网上大多讲的是单独安装的水晶报表的部署，和vs2008自带的不同，因为他们的程序集的版本不同。<br />vs2008自带的水晶报表的版本是10.5的，在官方网站没有找到。<br />后来查看MSDN才知道，其实Prerequisites（系统必备）就放在我们的机器中，<br />位置就在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages。<br />水晶报表的运行时组件就在该目录下的CrystalReports10_5\CRRedist2008_x86。<br />将CRRedist2008_x86在要部署的机器上安装就可以了。<br /></td>
</tr>
</tbody>
</table>
</p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=52&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>一个javascript实现简易的代码高亮模块</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-51</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Wed, 20 May 2009 01:41:08 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:51</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-51</comments><slash:comments>0</slash:comments><description><![CDATA[<p><span style="color: #008000;">/*</span><span style="color: #008000;">--<br />标题：代码高亮控件<br />设计：王集鹄<br />博客：http://blog.csdn.net/zswang<br />日期：2009年5月15日<br />--</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> Highlight </span><span style="color: #000000;">=</span><span style="color: #000000;"> {<br />&nbsp;&nbsp;&nbsp; analyze: </span><span style="color: #0000ff;">function</span><span style="color: #000000;">(code, lang) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">lang) </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> result </span><span style="color: #000000;">=</span><span style="color: #000000;"> [];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> find </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> last </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">""</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (find </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> code) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; find </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> lang.syntaxs.length; i</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (lang.syntaxs[i].start) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> exists </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; j </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> lang.syntaxs[i].start.length; j</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (last </span><span style="color: #000000;">==</span><span style="color: #000000;"> lang.syntaxs[i].start[j]) {<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; exists </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<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; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">exists) </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<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;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> match </span><span style="color: #000000;">=</span><span style="color: #000000;"> lang.syntaxs[i].pattren.exec(code);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (match) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> methods </span><span style="color: #000000;">=</span><span style="color: #000000;"> lang.syntaxs[i].methods;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (methods) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; j </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> methods.length; j</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<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; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> method </span><span style="color: #000000;">=</span><span style="color: #000000;"> methods[j];<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; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">method) </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<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; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">match[j </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">]) </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<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; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">this</span><span style="color: #000000;">[method] </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">[method].syntaxs) {<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; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> items </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.analyze(match[j </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">], </span><span style="color: #0000ff;">this</span><span style="color: #000000;">[method]);<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; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> k </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; k </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> items.length; k</span><span style="color: #000000;">++</span><span style="color: #000000;">) {<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;&nbsp;&nbsp;&nbsp;&nbsp; result.push(items[k]);<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; }<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; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> result.push({ name: method, text: match[j </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;">] });<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (lang.syntaxs[i].name) {<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; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> item </span><span style="color: #000000;">=</span><span style="color: #000000;"> { name: lang.syntaxs[i].name, text: match[</span><span style="color: #000000;">0</span><span style="color: #000000;">] };<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; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (item.name </span><span style="color: #000000;">==</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">Identifier</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> lang.identifiers) {<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; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; j </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> lang.identifiers.length; j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<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;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (lang.identifiers[j].pattren.test(item.text))<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; item.name </span><span style="color: #000000;">=</span><span style="color: #000000;"> lang.identifiers[j].name;<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; }<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; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">/</span><span style="color: #000000;">^(Whitespace|LineComment|MultiComment)$</span><span style="color: #000000;">/</span><span style="color: #000000;">i.test(item.name)<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; </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> </span><span style="color: #000000;">!</span><span style="color: #000000;">/</span><span style="color: #000000;">\)$</span><span style="color: #000000;">/</span><span style="color: #000000;">.test(item.text)) last </span><span style="color: #000000;">=</span><span style="color: #000000;"> item.name;<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; result.push(item);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; code </span><span style="color: #000000;">=</span><span style="color: #000000;"> code.substr(match[</span><span style="color: #000000;">0</span><span style="color: #000000;">].length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; find </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<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; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (</span><span style="color: #000000;">!</span><span style="color: #000000;">find </span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;"> code) result.push({ name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Unknown</span><span style="color: #000000;">"</span><span style="color: #000000;">, text: code });<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> result;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , exportHtml: </span><span style="color: #0000ff;">function</span><span style="color: #000000;">(code, lang) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> items </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.analyze(code, lang);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> html </span><span style="color: #000000;">=</span><span style="color: #000000;"> [];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.push(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;pre class=\"Code\"&gt;&lt;code&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">; i </span><span style="color: #000000;">&lt;</span><span style="color: #000000;"> items.length; i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.push(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;span class=\"</span><span style="color: #000000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">+</span><span style="color: #000000;"> items[i].name </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">\"&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">+</span><span style="color: #000000;"> items[i].text.replace(</span><span style="color: #000000;">/</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">/</span><span style="color: #000000;">g, </span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;lt;</span><span style="color: #000000;">"</span><span style="color: #000000;">).replace(</span><span style="color: #000000;">/</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">/</span><span style="color: #000000;">g, </span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000000;">+</span><span style="color: #000000;"> </span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/span&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; html.push(</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;/pre&gt;&lt;/code&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> html.join(</span><span style="color: #000000;">""</span><span style="color: #000000;">);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , attribute: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [&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; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(=|:|;|\/)</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^('[^']*'|"[^"]*")</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^[\w\/\-_]+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Variant</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , property: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [&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; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/\*[\s\S]*?\*\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">MultiComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^([a-zA-Z0-9_\-]+)(\s*)(:)(\s*)([^;]*)(;|$)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Variant</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , css: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [&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; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/\*[\s\S]*?\*\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">MultiComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(((\.|#)[a-zA-Z0-9_\-]+[\s,]*)+)(\{)([\s\S]*?)(\})</span><span style="color: #000000;">/</span><span style="color: #000000;">,&nbsp; methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Function</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">property</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , javascript: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/\/.*</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">LineComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/\*[\s\S]*?\*\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">MultiComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/([^\\\/\n\r]*(\\.)*)*\/(i|m|g)*</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Regex</span><span style="color: #000000;">"</span><span style="color: #000000;">, start: [</span><span style="color: #000000;">""</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(~|\+|\-|\*|\(|\)|\[|\]|\{|\}|\||\;|:|=|&lt;|&gt;|\.|\,|\%|\!|&amp;|\?|\^)+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(\d+(?!\.|x|e|d|m)u?)|^0x([\da-fA-F]+(?!\.|x|m)u?)|^NaN</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Number</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(\d+)?\.\d+((\+|\-)?e\d+)?(m|d|f)?|^\d+((\+|\-)?e(\+|\-)?\d+)?(m|d|f)?</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Float</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^"([^\\"]*(\\.)*)*"</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;"> }&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; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^'([^\\']*(\\.)*)*'</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^[\w$_]+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Identifier</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , identifiers: [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(break|delete|function|return|typeof|case|do|if|switch|var|catch|else|in|this|void|continue|false|instanceof|throw|while|debugger)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(finally|new|true|with|default|for|null|try|abstract|double|goto|native|static|boolean|enum|implements|package|super|byte|prototype)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(export|import|private|synchronized|char|extends|int|protected|throws|class|final|interface|public|transient|const|float|long|short|volatile)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(Array|String|Boolean|undefined|Object|Enumerator|Error|Math)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , xhtml: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [&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; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^&lt;!--[\s\S]*?--&gt;</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">MultiComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;!)([\s\S]*?)(&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;\?)(xml\b)([\s\S]*?)(\?&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;\?)(php\b)(.*?)(\?&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">php</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;\?)(php\b)([\s\S]*?)(\n\?&gt;|$)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">php</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;%@)([\s\S]*?)(%&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;%)([\s\S]*?)(%&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Text</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;)(style\b)(([^&gt;"']*(".*?"|'.*?')*)*?)(&gt;)([\s\S]*?)(&lt;\/)(style)(&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">i, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">css</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;)(script\b)(([^&gt;"']*(".*?"|'.*?')*)*?)(&gt;)([\s\S]*?)(&lt;\/)(script)(&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">i, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">javascript</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(&lt;\/?)([\w\-]+)(([^&gt;"']*(".*?"|'.*?')*)*?)(&gt;)</span><span style="color: #000000;">/</span><span style="color: #000000;">i, methods: [</span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Type</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">attribute</span><span style="color: #000000;">"</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #0000ff;">null</span><span style="color: #000000;">, </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;">] }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^[^&lt;]+</span><span style="color: #000000;">/</span><span style="color: #000000;">i, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Text</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<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; <br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; , php: {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; syntaxs: [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\s+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Whitespace</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(\/\/|#).*</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">LineComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/\*[\s\S]*?\*\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">MultiComment</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(~|\+|\-|\*|\(|\)|\[|\]|\{|\}|\||\;|:|=|&lt;|&gt;|\.|\,|\%|\!|&amp;|\?|\^|@)+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\/</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Symbol</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(\d+(?!\.|x|e|d|m)u?)|^0x([\da-fA-F]+(?!\.|x|m)u?)|^NaN</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Number</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(\d+)?\.\d+((\+|\-)?e\d+)?(m|d|f)?|^\d+((\+|\-)?e(\+|\-)?\d+)?(m|d|f)?</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Float</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^"([^\\"]*(\\.)*)*"</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;"> }&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; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^'([^\\']*(\\.)*)*'</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">String</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^\$[\w_]*</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Variant</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^[\w_]+</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Identifier</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , identifiers: [<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(require_once|include|and|or|xor|__FILE__|exception|php_user_filter|__LINE__|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|each|echo|else|elseif|empty)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|for|foreach|function|global|if|isset|list|new|old_function|print|return|static|switch|unset|use|var|while|__FUNCTION__|__CLASS__|__METHOD__)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Reserved</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; , { pattren: </span><span style="color: #000000;">/</span><span style="color: #000000;">^(NULL|FALSE|TRUE)$</span><span style="color: #000000;">/</span><span style="color: #000000;">, name: </span><span style="color: #000000;">"</span><span style="color: #000000;">Variant</span><span style="color: #000000;">"</span><span style="color: #000000;"> }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]<br />&nbsp;&nbsp;&nbsp; }<br />};</span><br /><br /><br />完整演示代码：<a title="http://www.renrousousuo.com/scripts/Highlight.html" href="http://www.renrousousuo.com/scripts/Highlight.html" target="_blank">http://www.renrousousuo.com/scripts/Highlight.html</a> <br /><br />包括了：html(xml)、javascript、php、css、csharp、delphi</p><img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=51&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item><item><title>asp.net多线程探索</title><link>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-50</link><author>xiandai</author><dc:creator>xiandai</dc:creator><pubDate>Tue, 19 May 2009 10:07:06 GMT</pubDate><guid isPermaLink="False">931a8b9e-e848-4b0f-974a-6cbc4b6bc0da:BlogSection:50</guid><comments>http://www.xmaspx.com/u/xiandai/Blog.aspx/t-50</comments><slash:comments>0</slash:comments><description><![CDATA[<p><span style="color: #000000; background-color: #ffff00;">&lt;%</span><span style="color: #000000; background-color: #f5f5f5;">@ Page Language</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #800000; background-color: #f5f5f5;">C#</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;"> AutoEventWireup</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #800000; background-color: #f5f5f5;">true</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;"> EnableSessionState</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #800000; background-color: #f5f5f5;">True</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;"> CodeFile</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #800000; background-color: #f5f5f5;">MultiThread.aspx.cs</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;"> Inherits</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #800000; background-color: #f5f5f5;">ajax_jquery_MultiThread</span><span style="color: #800000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;"> </span><span style="color: #000000; background-color: #ffff00;">%&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head </span><span style="color: #ff0000;">runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">无标题页</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="jquery-1.2.6.min.js"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000; background-color: #f5f5f5;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background-color: #f5f5f5;">function</span><span style="color: #000000; background-color: #f5f5f5;"> ajaxGet()<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $.get(</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">GetSessionHandler.ashx</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">,{date:</span><span style="color: #0000ff; background-color: #f5f5f5;">new</span><span style="color: #000000; background-color: #f5f5f5;"> Date()},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background-color: #f5f5f5;">function</span><span style="color: #000000; background-color: #f5f5f5;">(data){&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background-color: #f5f5f5;">var</span><span style="color: #000000; background-color: #f5f5f5;"> num</span><span style="color: #000000; background-color: #f5f5f5;">=</span><span style="color: #000000; background-color: #f5f5f5;">parseInt(data);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background-color: #f5f5f5;">if</span><span style="color: #000000; background-color: #f5f5f5;">((</span><span style="color: #000000; background-color: #f5f5f5;">!</span><span style="color: #000000; background-color: #f5f5f5;">isNaN(num))</span><span style="color: #000000; background-color: #f5f5f5;">&amp;&amp;</span><span style="color: #000000; background-color: #f5f5f5;">(num</span><span style="color: #000000; background-color: #f5f5f5;">&lt;</span><span style="color: #000000; background-color: #f5f5f5;">100</span><span style="color: #000000; background-color: #f5f5f5;">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">#result</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">).text(num</span><span style="color: #000000; background-color: #f5f5f5;">+</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">%</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.setTimeout(ajaxGet, </span><span style="color: #000000; background-color: #f5f5f5;">1000</span><span style="color: #000000; background-color: #f5f5f5;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff; background-color: #f5f5f5;">else</span><span style="color: #000000; background-color: #f5f5f5;"> </span><span style="color: #0000ff; background-color: #f5f5f5;">if</span><span style="color: #000000; background-color: #f5f5f5;">((</span><span style="color: #000000; background-color: #f5f5f5;">!</span><span style="color: #000000; background-color: #f5f5f5;">isNaN(num))</span><span style="color: #000000; background-color: #f5f5f5;">&amp;&amp;</span><span style="color: #000000; background-color: #f5f5f5;">(num</span><span style="color: #000000; background-color: #f5f5f5;">==</span><span style="color: #000000; background-color: #f5f5f5;">100</span><span style="color: #000000; background-color: #f5f5f5;">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">#result</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">).text(</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">100%</span><span style="color: #000000; background-color: #f5f5f5;">"</span><span style="color: #000000; background-color: #f5f5f5;">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; window.setTimeout(</span><span style="color: #000000; background-color: #f5f5f5;">'</span><span style="color: #000000; background-color: #f5f5f5;">$("#result").text("发送已完成");</span><span style="color: #000000; background-color: #f5f5f5;">'</span><span style="color: #000000; background-color: #f5f5f5;">, </span><span style="color: #000000; background-color: #f5f5f5;">2000</span><span style="color: #000000; background-color: #f5f5f5;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<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; }<br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">form </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="form1"</span><span style="color: #ff0000;"> runat</span><span style="color: #0000ff;">="server"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">asp:Button </span><span style="color: #ff0000;">ID</span><span style="color: #0000ff;">="btn"</span><span style="color: #ff0000;"> runat</span><span style="color: #0000ff;">="server"</span><span style="color: #ff0000;"> Text</span><span style="color: #0000ff;">="上传"</span><span style="color: #ff0000;"> OnClick</span><span style="color: #0000ff;">="btn_Click"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div </span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="result"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">form</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br /></span></p>
<p>
<hr />
</p>
<p>using System;<br />using System.Data;<br />using System.Configuration;<br />using System.Collections;<br />using System.Web;<br />using System.Web.Security;<br />using System.Web.UI;<br />using System.Web.UI.WebControls;<br />using System.Web.UI.WebControls.WebParts;<br />using System.Web.UI.HtmlControls;
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>public partial class ajax_jquery_MultiThread : System.Web.UI.Page<br />{<br /><br />protected void Page_Load(object sender, EventArgs e)<br />{</p>
<p>}<br />protected void btn_Click(object sender, EventArgs e)<br />{<br />Session["a"] = "0"; <br />System.Threading.Thread NewTh = new System.Threading.Thread(new System.Threading.ThreadStart(Update)); <br /><br />NewTh.Start();<br />ClientScript.RegisterStartupScript(this.GetType(), "ajaxGet", "ajaxGet();", true); <br />}</p>
<p>void Update() <br />{ </p>
<p>try <br />{ <br />//模拟邮件发送<br />Session["a"] = "10"; <br />System.Threading.Thread.Sleep(3000);<br />Session["a"] = "30"; <br />System.Threading.Thread.Sleep(3000);<br />Session["a"] = "50"; <br />System.Threading.Thread.Sleep(3000);<br />Session["a"] = "80"; <br />System.Threading.Thread.Sleep(3000);<br />Session["a"] = "100"; <br />System.Threading.Thread.Sleep(3000); <br /><br />} <br />catch (Exception ee)<br />{<br />String exceptionStr = ee.StackTrace;<br />} <br />} </p>
<p>}</p>
<p>
<p>&nbsp;</p>
</p>
</p>
<hr />
<p>GetSessionHandler.ashx</p>
C# code 
<pre><div><span style="color: #000000;">
</span><span style="color: #000000;">&lt;%</span><span style="color: #000000;">@ WebHandler Language</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">C#</span><span style="color: #800000;">"</span><span style="color: #000000;"> Class</span><span style="color: #000000;">=</span><span style="color: #800000;">"</span><span style="color: #800000;">GetSessionHandler</span><span style="color: #800000;">"</span><span style="color: #000000;"> </span><span style="color: #000000;">%&gt;</span><span style="color: #000000;">

</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web;

</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> GetSessionHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
    
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> ProcessRequest (HttpContext context) {
        context.Response.ContentType </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #800000;">"</span><span style="color: #800000;">text/plain</span><span style="color: #800000;">"</span><span style="color: #000000;">;
        String tempStr </span><span style="color: #000000;">=</span><span style="color: #000000;"> context.Session[</span><span style="color: #800000;">"</span><span style="color: #800000;">a</span><span style="color: #800000;">"</span><span style="color: #000000;">] </span><span style="color: #000000;">!=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">null</span><span style="color: #000000;"> </span><span style="color: #000000;">?</span><span style="color: #000000;"> context.Session[</span><span style="color: #800000;">"</span><span style="color: #800000;">a</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString() : </span><span style="color: #800000;">""</span><span style="color: #000000;">;
        context.Response.Write(tempStr);
    }
 
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> IsReusable {
        </span><span style="color: #0000ff;">get</span><span style="color: #000000;"> {
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
        }
    }

}
</span></div>
</pre>
<img src="http://www.xmaspx.com/Services/AggView.ashx?ItemID=50&ConterType=SpaceBuilder.Blog.BlogThreadCounter%2c+SpaceBuilder.Blog%2c+Version%3d2.3.0.3%2c+Culture%3dneutral%2c+PublicKeyToken%3dnull" width="1" height="1">]]></description></item></channel></rss>