﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-范荣生(山阻石拦大江毕竟东流去，雪辱霜欺梅花依旧向阳开 ！)</title><link>http://www.cnblogs.com/fanrsh/</link><description>Confidence 信心、Competence 能力、Communication沟通、Creation创造、Cooperation合作

QQ:181154335
MSN:fanrsh@hotmail.com
</description><language>zh-cn</language><lastBuildDate>Fri, 05 Dec 2008 11:49:37 GMT</lastBuildDate><pubDate>Fri, 05 Dec 2008 11:49:37 GMT</pubDate><ttl>60</ttl><item><title>Javascript's Event 的一点总结</title><link>http://www.cnblogs.com/fanrsh/archive/2007/12/18/1004674.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Tue, 18 Dec 2007 08:22:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/12/18/1004674.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/1004674.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/12/18/1004674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/1004674.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/1004674.html</trackback:ping><description><![CDATA[<p>我在自己的这个 Blog 上用 <strong>Javascript</strong> 实现了一个自定义的右键弹出菜单。个人认为鼠标点击事件的获取和计算是比较难点的事情。一般以为考虑兼容性（如 <strong>IE 5/6</strong>，<strong>FF</strong>），实际上还要考虑 HTML 文件在文件头的定义。而且，Event 事件和 Document 对象在 IE 和 NS 下又有各自不同的定义和用法。呼~经过对这个菜单的不断修改和上网搜索资料，在这里总结一下，希望对其他朋友有个帮助。</p>
<p>下面是&#8220;<strong>无定义 HTML 的 Event 事件</strong>&#8221;的测试代码，存为 Event1.html，分别用 IE 和 Firefox 打开，点击页面就可看到结果。</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />
&lt;title&gt;无定义 HTML 的 Event 事件&lt;/title&gt;<br />
&lt;script language="javascript"&gt;<br />
function getvalue(e){<br />
&nbsp;&nbsp;&nbsp; if (!document.all){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winW = window.innerWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winH = window.innerHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curX = e.pageX - window.pageXOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curY = e.pageY - window.pageYOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouX = e.pageX;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouY = e.pageY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broX = window.pageXOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broY = window.pageYOffset;<br />
&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winW = document.body.clientWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winH = document.body.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curX = event.clientX;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curY = event.clientY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouX = event.clientX + document.body.scrollLeft;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouY = event.clientY + document.body.scrollTop;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broX = document.body.scrollLeft;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broY = document.body.scrollTop;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;
alert(" 窗口可见宽度(winW): "+winW+""n"n 窗口可见高度(winH): "+winH+""n"n
距窗口左边距离(curX): "+curX+""n"n 距窗口顶部距离(curY): "+curY+""n"n 距页面左边距离(mouX):
"+mouX+""n"n 距页面顶部距离(mouY): "+mouY+""n"n 页面滚动的宽度(broX): "+broX+""n"n
页面滚动的高度(broY): "+broY);<br />
&nbsp;&nbsp;&nbsp; return true;<br />
}<br />
document.onclick=getvalue;<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;img src="" width="400" height="500"&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</p>
<p>下面是&#8220;<strong>定义了&nbsp;HTML's DOCTYPE&nbsp;的 &nbsp;Event 事件</strong>&#8221;的测试代码，存为 Event2.html，分别用 IE 和 Firefox 打开，点击页面就可看到结果；很显然，<strong>document.body</strong> 变成了 <strong>document.documentElement</strong>。</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;<br />
&lt;title&gt;定义了 HTML's DOCTYPE 的&nbsp; Event 事件&lt;/title&gt;<br />
&lt;script language="JavaScript" type="text/javascript"&gt;<br />
function getvalue(e){<br />
&nbsp;&nbsp;&nbsp; if (!document.all){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winW = window.innerWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winH = window.innerHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curX = e.pageX - window.pageXOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curY = e.pageY - window.pageYOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouX = e.pageX;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouY = e.pageY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broX = window.pageXOffset;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broY = window.pageYOffset;<br />
&nbsp;&nbsp;&nbsp; }else{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winW = document.documentElement.clientWidth;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; winH = document.documentElement.clientHeight;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curX = event.clientX;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; curY = event.clientY;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouX = event.clientX + document.documentElement.scrollLeft;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mouY = event.clientY + document.documentElement.scrollTop;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broX = document.documentElement.scrollLeft;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; broY = document.documentElement.scrollTop;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;
alert(" 窗口可见宽度(winW): "+winW+""n"n 窗口可见高度(winH): "+winH+""n"n
距窗口左边距离(curX): "+curX+""n"n 距窗口顶部距离(curY): "+curY+""n"n 距页面左边距离(mouX):
"+mouX+""n"n 距页面顶部距离(mouY): "+mouY+""n"n 页面滚动的宽度(broX): "+broX+""n"n
页面滚动的高度(broY): "+broY);<br />
&nbsp;&nbsp;&nbsp; return true;<br />
}<br />
document.onclick=getvalue;<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
<br />
&lt;body&gt;<br />
&lt;img src="" width="400" height="500" alt="" /&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
呵呵，如果还有看不明白的朋友，欢迎与我联系，交流一下。<br />
<img src ="http://www.cnblogs.com/fanrsh/aggbug/1004674.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43812/" target="_blank">[新闻]Google操作系统已开始内部测试？</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]SQL Server2005 SQLCLR代码安全之权限(2)</title><link>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924335.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Mon, 15 Oct 2007 01:35:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924335.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/924335.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/924335.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/924335.html</trackback:ping><description><![CDATA[<strong>二、 访问外部资源</strong><br />
<br />
因为访问外部资源需要与操作系统进行交互，所以，当代码尝试存取外部的资源时，存在多种要遵守的规则。<br />
<br />
对于SAFE代码来说，这种规则是简单的：如果它试图存取一个外部的资源，那么存取将被否认并且它引发一个异常。就是这些。<br />
<br />
对于EXTERNAL_ACCESS和UNSAFE的情况，则复杂些：<br />
<br />
&#183; 规则1:如果代码在一个SQL Server登录的安全上下文下执行（也就是说，还没有被映射到一个Windows用户或组），那么存取将被禁止并且引发一个异常。一个SQL登录并不拥有SQL Server外的任何许可权，因此这是很重要的。<br />
<br />
&#183; 规则2:如果代码在一个被映射到一个Windows登录的登录下执行，那么进行外部存取的执行上下文就是该登录的执行上下文。如果该用户能够存取Windows中的资源，那么该代码成功。如果不是，存取被否认并且引发一个异常。<br />
<br />
&#183; 规则3:如果调用者不是原始的调用者（已经进行了一个执行上下文切换)，那么存取被否认并且引发一个异常。<br />
<br />
一开始，这些规则也使我有点糊涂，但是，当我以后逐渐地越来越多地使用它们时，它们开始变得很重要了。对于规则1来说，因为一个SQL登录仅仅存在于
SQL
Server世界中，所以，如果它能存取操作系统资源的话，这将是一个巨大的安全漏洞。规则2也很重要，并且它允许模拟。规则3似乎有点严格，但是我怀疑
SQL Server小组有点保守，因为上下文切换可能会是一场"管理恶梦"，并且他们仍然确信不会产生安全漏洞问题。<br />
<br />
外部的存取规
则甚至更复杂些。假定运行代码的登录已经成功"越过"上面列举的"重重封锁"，但是，为了存取外部的资源-正如你可能盼望的（并且也许希望），SQL
Server并不自动地模拟当前执行上下文。代之的是，它使用SQL
Server实例的服务帐户来存取资源。或者，你也可以显式地模拟上下文登录来存取资源。这样做需要使用SqlContext对象的
WindowsIdentity属性来调用WindowsIdentity来实现实际的模拟。<br />
<br />
列表1:在SQLCLR代码中使用模拟<br />
<br />
<table align="center" bgcolor="#e7e9e9" border="1" bordercolor="#cccccc" width="90%">
    <tbody>
        <tr>
            <td>try<br />
            {<br />
            //模拟当前SQL安全上下文<br />
            WindowsIdentity CallerIdentity = SqlContext.WindowsIdentity;<br />
            if (CallerIdentity != null)<br />
            {<br />
            OriginalContext = CallerIdentity.Impersonate();<br />
            //做一些保护操作<br />
            }<br />
            }<br />
            catch<br />
            {<br />
            //从存取问题中恢复<br />
            }<br />
            finally<br />
            {<br />
            if (OriginalContext != null)<br />
            OriginalContext.Undo();<br />
            }</td>
        </tr>
    </tbody>
</table>
<br />
列表1向你展示如何在SQLCLR代码中使用模拟。WindowsImpersonationContext对象属于
System.Security.Principal命名空间的一部分并且描述了在你模拟前的Windows用户安全上下文。SqlContext对象属
于和SQL Server一起安装的Microsoft.SQL Server.Server命名空间的一部分并且提供在SQL
Server主机和SQLCLR代码之间的一个钩子。在这种情况中，它使用WindowsIdentity属性来得到当前安全身份的一个令牌。这是
Windows登录的安全上下文-该代码在这一登录下运行。该代码测试是否结果CallerIdentity为null，如果该代码在一种SQL登录下运
行时它将为null。最后，它调用WindowsIdentity模拟来实现实际的模拟，并保存原始的上下文以用于当要求恢复到该上下文时。<br />
<br />
必须理解，仅当执行需要保护的操作（例如打开一文件）时模拟才起作用。一旦它被打开，该代码就不再需要模拟。因此，一旦你完成保护的操作，即恢复回去。<br />
<br />
最后，通过调用OriginalContext的Undo方法，代码块负责恢复到原始上下文。如果你在函数结束之前不进行恢复，那么SQL Server将引发一个异常。<br />
<br />
对于模拟也存在一些限制。当该模拟起作用时，你就无法再使用SQL Server实例存取数据或对象。在你再次存取本地数据之前，你必须恢复模拟。这也意味着，进程内数据存取总是发生在会话的当前安全上下文中。<br />
<br />
有趣的是，一个异步执行的UNSAFE<a href="http://dev.yesky.com/" class="bluekey" target="_blank">程序</a>集（也就是说，它能够创建线程并且异步地运行代码）永远不会允许进程内数据存取。其实，这并不是一个安全问题而显然是一个可靠性的问题。<br />
<br />
<strong>三、 可信赖的数据库</strong><br />
<br />
在SAFE程序集和其它权限设置级别之间的另外一个区别是在SQL Server 2005测试期添加的。现在，你必须满足两个要求之一来创建EXTERNAL_ACCESS或UNSAFE程序集：<br />
<br />
&#183; 数据库所有者（dbo）必须拥有EXTERNAL ACCESS ASSEMBLY权限并且数据库必须拥有TRUSTWORTHY属性集。<br />
<br />
或者：<br />
<br />
&#183; 程序集的使用方式必须是，通过一个具有EXTERNAL ACCESS ASSEMBLY权限的登录而且要使用一个证书或一个非对称密钥。<br />
<br />
EXTERNAL ACCESS ASSEMBLY权限是另一种新的粒度许可权-允许一名负责人创建这类程序集。默认情况下，系统管理员拥有它并且能够把它赋给其它登录。但是这样做时要慎重，这当然因为可能潜在地允许危险代码安装到服务器中。<br />
<br />
一个数据库的TRUSTWORTHY属性要求设置管理员权限并且是在数据库中安装非SAFE程序集的前提。基于EXTERNAL ACCESS
ASSEMBLY权限，一个DBA能够控制是否存在潜在危险性的程序集能够被安装到任何数据库中，以及谁能够把它们放到那里。这很有希望会使DBA安心而
不必再担心他们的服务器会感染.NET代码！
<img src ="http://www.cnblogs.com/fanrsh/aggbug/924335.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43811/" target="_blank">[新闻]Google阅读器界面升级 全新改版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]SQL Server2005 SQLCLR代码安全之权限(3)</title><link>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924341.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Mon, 15 Oct 2007 01:35:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924341.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/924341.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924341.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/924341.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/924341.html</trackback:ping><description><![CDATA[<strong>四、 总结</strong><br />
<br />
表格3包含可用于SQLCLR程序集的三种权限集的总结，以及SQL Server为每种权限集提供的保护类型。<br />
<br />
&#183; 代码存取安全是在代码内CLR托管的许可权集。<br />
<br />
&#183; 编程模型限制是指宿主保护属性，以及是否代码能够使用静态技术。<br />
<br />
&#183; 要求确认指指，当你使用CREATE ASSEMBLY语句安装它时是否SQL Server验证代码存在相对的安全性。 <br />
<br />
&#183; 调用本机代码指示，是否代码能够调用Win32 API或对外部组件作一种平台调用。<br />
<br />
表格3:权限设置总结。<br />
<br />
权限集<br />
<br />
<table align="center" border="1" cellpadding="0" cellspacing="0" width="90%">
    <tbody>
        <tr>
            <td>保护类型</td>
            <td>SAFE</td>
            <td>EXTERNAL_ACCESS</td>
            <td>UNSAFE</td>
        </tr>
        <tr>
            <td>代码存取安全</td>
            <td>仅执行</td>
            <td>执行和受限存取外部资源</td>
            <td>不受限制</td>
        </tr>
        <tr>
            <td>编程模型限制(主机保护属性)</td>
            <td>是 </td>
            <td>是 </td>
            <td>无</td>
        </tr>
        <tr>
            <td>要求确认</td>
            <td>是 </td>
            <td>是 </td>
            <td>否</td>
        </tr>
        <tr>
            <td>调用本机代码</td>
            <td>否 </td>
            <td>否 </td>
            <td>是</td>
        </tr>
    </tbody>
</table>
<br />
如你所见，只要你把你的代码限制为SAFE或EXTERNAL_ACCESS，SQL Server就能够提供一种对保护数据安全和服务器稳定性的SQLCLR代码的良好包装。<br />
<br />
下面是一个考察你对于SQLCLR安全的理解的测试：<br />
<br />
&#183; 可以使用一个常规的ADO.NET连接串来存取另一种数据库（或者是一个Oracle或者是一个Access数据库）吗？<br />
<br />
&#183; 假定你现在已经了解访问外部资源，存取一个Oracle数据库的程序集需要具有什么样的SQLCLR权限集级别？<br />
<br />
在继续阅读之前，请认真地考虑一下这两个问题吧。<br />
<br />
提示 .NET框架中所包含的唯一的托管数据库提供者是System.Data.SqlClient。<br />
<br />
注意，这个程序集必须被安装为UNSAFE。为什么呢？因为该代码必须使用System.Data.OleDb对象。因为这些是基于COM的对象（这意味着是非托管代码），所以程序集需要被安装为UNSAFE-因为这是能够存取非托管代码的唯一的级别。<br />
<br />
你可能认为这是<a href="http://com.chinabyte.com/microsoft/" class="bluekey" target="_blank">微软</a>的与Oracle交互的方式。其实，答案是，对于访问一个微软Access数据库也是一样的，因为它也是基于OLE DB和相应的非托管代码。<br />
<br />
我将在此斗胆说一句：UNSAFE代码永远不应该用在一个生产服务器中。除非它是能够被完全观察的代码和经过严格校验以验证它不会危害服务器；否则，你
无法用一切办法来足已保证它是安全的。尽管我不排除存在关于UNSAFE代码的合法使用，但是我还是要深思熟虑到底是什么样的代码值得这样一冒险。我通常
感到，对于使用扩展的存储过程也存在相同的问题，这一样存在冒险性且必须以复杂的C++代码来编写。<br />
<br />
至此，我可以说，任何允许UNSAFE代码被安装到一个生产服务器的DBA一般都应该是一个DBA高手而不是一个普通的DBA。而且，我认为，作为一名经常与DBA交流的开发人员，他们中的大多数都是高手！<br />
<br />
但是，SAFE代码不会比一个T-SQL存储过程带来更大的危险性，而且，当你需要存取外部资源时，EXTERNAL_ACCESS是一种合理的妥协。
因此，你可以不必考虑对于未知内容的畏惧，而只需让SAFE代码加入到你的数据库中好了。然后，当它对于数据库、应用程序及用户来说是重要的情况下，再考
虑EXTERNAL_ACCESS代码问题。总之，在使得这一类代码安全和可靠方面，微软的确做了一件好事情。
<img src ="http://www.cnblogs.com/fanrsh/aggbug/924341.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43811/" target="_blank">[新闻]Google阅读器界面升级 全新改版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]SQL Server2005 SQLCLR代码安全之权限(1)</title><link>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924332.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Mon, 15 Oct 2007 01:33:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924332.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/924332.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/10/15/924332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/924332.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/924332.html</trackback:ping><description><![CDATA[<strong>一、 SQLCLR权限集级别</strong><br />
<br />
当你使用CREATE ASSEMBLY语句把一个程序集加载到一个数据库中时，SQL Server提供了三种权限集级别：SAFE，EXTERNAL_ACCESS和UNSAFE。这些权限集形成如图3和图5（均请参考<a href="http://dev.yesky.com/416/2492416.shtml" target="_blank"><font color="#1a1ae6">第二篇</font></a>）所示的AppDomain策略级别。<br />
<br />
下面是一个典型的语句，它实现安装位于FileLoader.dll文件内的一个程序集，并且赋予它EXTERNAL_ACCESS权限集。<br />
<br />
<table align="center" bgcolor="#e7e9e9" border="1" bordercolor="#cccccc" width="90%">
    <tbody>
        <tr>
            <td>CREATE ASSEMBLY FileAccess<br />
            FROM 'E:\FileLoader.dll'<br />
            WITH PERMISSION_SET = EXTERNAL_ACCESS<br />
            GO</td>
        </tr>
    </tbody>
</table>
<br />
在代码执行时，每一种权限集级别都授予该代码一组不同的CAS许可权集。下面让我们开始讨论在每一级上授予的特定许可权。 <br />
<br />
(1) SAFE<br />
<br />
SAFE是默认的权限集。它仅授予足够的许可权来执行代码，实现不要求存取外部资源的内部计算以及存取在宿主SQL
Server实例中的数据和对象。注意，SAFE代码不能存取外部的资源，因此它不能读取或写磁盘文件，不能存取任何其它SQL
Server实例，或读取或写注册表。而且，该代码也必须被检验为类型<a href="http://soft.yesky.com/security/" class="bluekey" target="_blank">安全</a>的，这将有助于避免各种包括缓冲区溢出在内的攻击。<br />
<br />
SAFE代码是更可靠和安全的SQLCLR代码。它能够实现用T-SQL书写的代码在数据库和<a href="http://server.chinabyte.com/" class="bluekey" target="_blank">服务器</a>实
例内所能实现的几乎一样的功能。它能够授予如表格1所列举的CAS许可权。从表格1中可见，该代码能够运行和读取宿主SQL
Server实例中的对象和数据-借助于一种特定形式的ADO.NET连接串，或者是"context
connection=true"或者是"context connection=yes"来实现。任何其它连接串都可能会导致某种安全异常。<br />
<br />
表格1:授予给SAFE程序集的权限集。<br />
<br />
<table align="center" border="1" cellpadding="0" cellspacing="0" width="90%">
    <tbody>
        <tr>
            <td>权限</td>
            <td>类型</td>
            <td>限制</td>
        </tr>
        <tr>
            <td>SecurityPermission </td>
            <td>受限制</td>
            <td>执行</td>
        </tr>
        <tr>
            <td>SqlClientPermission</td>
            <td>受限制</td>
            <td>不能是空口令，只能使用上下文连接串</td>
        </tr>
    </tbody>
</table>
<br />
授予给一个程序集的结果权限集是列举于表格1中的许可权权限集与来自企业、机器和用户权限集的交集。因为这些级别默认会拥有所有的许可权，所以程序集仅接受列举于表格1中的权限。注意，请确保你一定要理解这些权限。<br />
<br />
(2) EXTERNAL_ACCESS<br />
<br />
与SAFE相比，EXTERNAL_ACCESS权限集允许有限制地存取存在于SQL Server实例外部的资源-包括磁盘文件，在其它SQL
Server实例中的数据和对象，环境变量和注册表的一些部分。存取这些其它资源通常是在SQL
Server服务帐户的安全上下文中进行的，但是，该代码能够模拟其它用户进行存取。这个级别授予列举于表格2中的许可权。<br />
<br />
表格2:授予给EXTERNAL_ACCESS程序集的权限集。<br />
<br />
<table align="center" border="1" cellpadding="0" cellspacing="0" width="90%">
    <tbody>
        <tr>
            <td width="30%">权限</td>
            <td width="14%">类型</td>
            <td width="56%">限制</td>
        </tr>
        <tr>
            <td width="30%">EnviromentPermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">FileIOPermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">RegistryPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅能以读方式存取HKEY_CLASSES_ROOT，HKEY_LOCAL_MACHINE，HKEY_CURRENT_USER，HKEY_CURRENT_CONFIG和HKEY_USER</td>
        </tr>
        <tr>
            <td width="30%">SecurityPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">Assertion，Execution，SerializationFormatter，ControlPrincipal</td>
        </tr>
        <tr>
            <td width="30%">KeyContainerPermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">SqlClientPermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">EventLogPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅限于本地主机且仅限于系统管理员</td>
        </tr>
        <tr>
            <td width="30%">DnsPermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">SocketPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅限于IP地址</td>
        </tr>
        <tr>
            <td width="30%">WebPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅能通过HTTP存取本地主机</td>
        </tr>
        <tr>
            <td width="30%">SmtpPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅能进行连接存取</td>
        </tr>
        <tr>
            <td width="30%">DistributedTransactionPermission </td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
        <tr>
            <td width="30%">NetworkInformationPermission</td>
            <td width="14%">受限制</td>
            <td width="56%">仅能通过Ping方式存取</td>
        </tr>
        <tr>
            <td width="30%">StorePermission</td>
            <td width="14%">不受限制</td>
            <td width="56%">-</td>
        </tr>
    </tbody>
</table>
<br />
上面不受限制的FileIOPermission可能看起来有点令人担心，因为，它意味着，从CLR的角度来看，代码能存取磁盘上的任何位置。但是切记，该代码仍然运行于本地服务帐户的<a href="http://os.yesky.com/" class="bluekey" target="_blank">操作系统</a>安全限制下。因此如果该帐户不能存取一个文件的话，那么SQLCLR代码也不能存取。<br />
<br />
典型地，本地服务帐户是一种具有极强权限的帐户，因此存在滥用的可能性。为此，我们一般把对这些程序集的存取权限仅授予那些具有服务帐户信任度的登录并且不使用本地系统帐户作为SQL Server的服务帐户。<br />
<br />
值得注意的是，借助于EXTERNAL_ACCESS权限集，你可以使用一个更传统型的ADO.NET连接串来连接到在同一个SQL
Server实例（SQLCLR代码在其中运行）中的一个数据库。这需要SqlClientPermission以便你能够使用一个除了"上下文连接"串
以外的连接-用以读取当前实例中的数据，指定通常的服务器命名，凭证，等等。然而，我也无法找到为什么你要这样做的理由，但是既然我们可以进行选择，也是
一件好事，对吗？<br />
<br />
(3) UNSAFE<br />
<br />
这个UNSAFE权限集是赋予所有权限的SQLCLR等价物，在这种情况下，CLR挂起所有的许可权检查。它接受单个的不受限制的SecurityPermission权限，这是CLR的授予所有权限的方式。<br />
<br />
潜在地，一个UNSAFE程序集能够完成各种"危险性"的动作，因为它属于内在地被信任的代码。例如，它能调用非托管代码，例如COM组件和原始Win32 API。它还受限于服务帐户的操作系统许可权，但是CLR不会限制它存取任何资源的能力。<br />
<br />
因为UNSAFE是如此的不安全，所以，只有一个sysadmin能够创建这种类型的程序集。
<img src ="http://www.cnblogs.com/fanrsh/aggbug/924332.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43811/" target="_blank">[新闻]Google阅读器界面升级 全新改版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Remoting事件序列一：客户端触发服务器端事件</title><link>http://www.cnblogs.com/fanrsh/archive/2007/09/14/893315.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Fri, 14 Sep 2007 09:22:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/09/14/893315.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/893315.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/09/14/893315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/893315.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/893315.html</trackback:ping><description><![CDATA[<p>最近常有网友问我关于Remoting事件的问题，我也正好有些时间，于是决定写两篇关于Remoting事件的入门随笔，希望对新手有所帮助．．谢谢<br />
<br />
随笔一：客户端触发服务器端事件<br />
<br />
通讯类：</p>
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Collections;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Tcp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Http;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Serialization.Formatters;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">&nbsp;RemotingSamples&nbsp;<br />
<img id="Codehighlighter1_278_1153_Open_Image" onclick="this.style.display='none'; Codehighlighter1_278_1153_Open_Text.style.display='none'; Codehighlighter1_278_1153_Closed_Image.style.display='inline'; Codehighlighter1_278_1153_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_278_1153_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_278_1153_Closed_Text.style.display='none'; Codehighlighter1_278_1153_Open_Image.style.display='inline'; Codehighlighter1_278_1153_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" /></span><span id="Codehighlighter1_278_1153_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_278_1153_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Server<br />
<img id="Codehighlighter1_306_1151_Open_Image" onclick="this.style.display='none'; Codehighlighter1_306_1151_Open_Text.style.display='none'; Codehighlighter1_306_1151_Closed_Image.style.display='inline'; Codehighlighter1_306_1151_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_306_1151_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_306_1151_Closed_Text.style.display='none'; Codehighlighter1_306_1151_Open_Image.style.display='inline'; Codehighlighter1_306_1151_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_306_1151_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_306_1151_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;Main(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;[]&nbsp;args)&nbsp;<br />
<img id="Codehighlighter1_353_1147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_353_1147_Open_Text.style.display='none'; Codehighlighter1_353_1147_Closed_Image.style.display='inline'; Codehighlighter1_353_1147_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_353_1147_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_353_1147_Closed_Text.style.display='none'; Codehighlighter1_353_1147_Open_Image.style.display='inline'; Codehighlighter1_353_1147_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_353_1147_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_353_1147_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryServerFormatterSinkProvider&nbsp;serverProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryServerFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryClientFormatterSinkProvider&nbsp;clientProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryClientFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverProvider.TypeFilterLevel&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;TypeFilterLevel.Full;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDictionary&nbsp;props</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Hashtable();&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props[</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">8085</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TcpChannel&nbsp;chan1&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;TcpChannel(props,clientProvider,serverProvider);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChannelServices.RegisterChannel(chan1);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemotingConfiguration.RegisterWellKnownServiceType<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(HelloServer),<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">SayHello</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WellKnownObjectMode.Singleton<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Console.WriteLine(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Press&nbsp;Enter&nbsp;key&nbsp;to&nbsp;exit</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Console.ReadLine();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span></div>
<br />
服务器端代码：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Collections;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Tcp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Http;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Serialization.Formatters;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">&nbsp;RemotingSamples&nbsp;<br />
<img id="Codehighlighter1_278_1153_Open_Image" onclick="this.style.display='none'; Codehighlighter1_278_1153_Open_Text.style.display='none'; Codehighlighter1_278_1153_Closed_Image.style.display='inline'; Codehighlighter1_278_1153_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_278_1153_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_278_1153_Closed_Text.style.display='none'; Codehighlighter1_278_1153_Open_Image.style.display='inline'; Codehighlighter1_278_1153_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" /></span><span id="Codehighlighter1_278_1153_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_278_1153_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Server<br />
<img id="Codehighlighter1_306_1151_Open_Image" onclick="this.style.display='none'; Codehighlighter1_306_1151_Open_Text.style.display='none'; Codehighlighter1_306_1151_Closed_Image.style.display='inline'; Codehighlighter1_306_1151_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_306_1151_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_306_1151_Closed_Text.style.display='none'; Codehighlighter1_306_1151_Open_Image.style.display='inline'; Codehighlighter1_306_1151_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_306_1151_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_306_1151_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;Main(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;[]&nbsp;args)&nbsp;<br />
<img id="Codehighlighter1_353_1147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_353_1147_Open_Text.style.display='none'; Codehighlighter1_353_1147_Closed_Image.style.display='inline'; Codehighlighter1_353_1147_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_353_1147_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_353_1147_Closed_Text.style.display='none'; Codehighlighter1_353_1147_Open_Image.style.display='inline'; Codehighlighter1_353_1147_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_353_1147_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_353_1147_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryServerFormatterSinkProvider&nbsp;serverProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryServerFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryClientFormatterSinkProvider&nbsp;clientProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryClientFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverProvider.TypeFilterLevel&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;TypeFilterLevel.Full;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDictionary&nbsp;props</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Hashtable();&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props[</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">]</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">8085</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TcpChannel&nbsp;chan1&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;TcpChannel(props,clientProvider,serverProvider);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChannelServices.RegisterChannel(chan1);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RemotingConfiguration.RegisterWellKnownServiceType<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(HelloServer),<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">SayHello</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WellKnownObjectMode.Singleton<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Console.WriteLine(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Press&nbsp;Enter&nbsp;key&nbsp;to&nbsp;exit</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Console.ReadLine();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span></div>
<br />
客户端代码：<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: rgb(238, 238, 238);"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Collections;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Tcp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Remoting.Channels.Http;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.IO;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Runtime.Serialization.Formatters;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">&nbsp;RemotingSamples&nbsp;<br />
<img id="Codehighlighter1_294_1462_Open_Image" onclick="this.style.display='none'; Codehighlighter1_294_1462_Open_Text.style.display='none'; Codehighlighter1_294_1462_Closed_Image.style.display='inline'; Codehighlighter1_294_1462_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_294_1462_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_294_1462_Closed_Text.style.display='none'; Codehighlighter1_294_1462_Open_Image.style.display='inline'; Codehighlighter1_294_1462_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" /></span><span id="Codehighlighter1_294_1462_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_294_1462_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Client<br />
<img id="Codehighlighter1_318_1460_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_1460_Open_Text.style.display='none'; Codehighlighter1_318_1460_Closed_Image.style.display='inline'; Codehighlighter1_318_1460_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_318_1460_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_318_1460_Closed_Text.style.display='none'; Codehighlighter1_318_1460_Open_Image.style.display='inline'; Codehighlighter1_318_1460_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_318_1460_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_318_1460_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;Main(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">[]&nbsp;args)<br />
<img id="Codehighlighter1_375_1457_Open_Image" onclick="this.style.display='none'; Codehighlighter1_375_1457_Open_Text.style.display='none'; Codehighlighter1_375_1457_Closed_Image.style.display='inline'; Codehighlighter1_375_1457_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_375_1457_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_375_1457_Closed_Text.style.display='none'; Codehighlighter1_375_1457_Open_Image.style.display='inline'; Codehighlighter1_375_1457_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_375_1457_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_375_1457_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryServerFormatterSinkProvider&nbsp;serverProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryServerFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryClientFormatterSinkProvider&nbsp;clientProvider&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;BinaryClientFormatterSinkProvider();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serverProvider.TypeFilterLevel&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;TypeFilterLevel.Full;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">使用TCP通道得到远程对象</span><span style="color: rgb(0, 128, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDictionary&nbsp;props&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Hashtable();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props[</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">port</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">]&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TcpChannel&nbsp;chan1&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;TcpChannel(props,&nbsp;clientProvider,&nbsp;serverProvider);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ChannelServices.RegisterChannel(chan1);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HelloServer&nbsp;obj1&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(HelloServer)Activator.GetObject(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">typeof</span><span style="color: rgb(0, 0, 0);">(RemotingSamples.HelloServer),<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">tcp://localhost:8085/SayHello</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(obj1&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)<br />
<img id="Codehighlighter1_1111_1219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1111_1219_Open_Text.style.display='none'; Codehighlighter1_1111_1219_Closed_Image.style.display='inline'; Codehighlighter1_1111_1219_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_1111_1219_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_1111_1219_Closed_Text.style.display='none'; Codehighlighter1_1111_1219_Open_Image.style.display='inline'; Codehighlighter1_1111_1219_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1111_1219_Closed_Text" style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1111_1219_Open_Text"><span style="color: rgb(0, 0, 0);">{<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Console.WriteLine(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Could&nbsp;not&nbsp;locate&nbsp;TCP&nbsp;server</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj1.myevent&nbsp;</span><span style="color: rgb(0, 0, 0);">+=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;MyEventHandler(obj1.eventmethod);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Client1&nbsp;TCP&nbsp;HelloMethod&nbsp;{0}</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj1.HelloMethod(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Caveman1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadLine();<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />}</span></span></div>
<br />
<br />
代码很简单，我就不做描述了，有问题直接留言，我会尽快做出回复．．<img src ="http://www.cnblogs.com/fanrsh/aggbug/893315.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43810/" target="_blank">[新闻]微软官方下载：Windows Vista SP2 Beta测试版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>jquery入门1:简单收缩菜单</title><link>http://www.cnblogs.com/fanrsh/archive/2007/09/10/888146.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Mon, 10 Sep 2007 02:30:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/09/10/888146.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/888146.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/09/10/888146.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/888146.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/888146.html</trackback:ping><description><![CDATA[HTML代码:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&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">Untitled&nbsp;Page</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">link&nbsp;</span><span style="color: #ff0000">rel</span><span style="color: #0000ff">="stylesheet"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="css.css"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="text/css"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="jquery-1.1.4.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 />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img id="Codehighlighter1_318_568_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_568_Open_Text.style.display='none'; Codehighlighter1_318_568_Closed_Image.style.display='inline'; Codehighlighter1_318_568_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_318_568_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_568_Closed_Text.style.display='none'; Codehighlighter1_318_568_Open_Image.style.display='inline'; Codehighlighter1_318_568_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span id="Codehighlighter1_318_568_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_318_568_Open_Text"><span style="color: #000000; background-color: #f5f5f5"><br />
<img id="Codehighlighter1_347_565_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_565_Open_Text.style.display='none'; Codehighlighter1_347_565_Closed_Image.style.display='inline'; Codehighlighter1_347_565_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_347_565_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_347_565_Closed_Text.style.display='none'; Codehighlighter1_347_565_Open_Image.style.display='inline'; Codehighlighter1_347_565_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />$(document).ready(</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()</span><span id="Codehighlighter1_347_565_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_347_565_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />$(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">div.menu2</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).css(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">display</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">none</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_422_472_Open_Image" onclick="this.style.display='none'; Codehighlighter1_422_472_Open_Text.style.display='none'; Codehighlighter1_422_472_Closed_Image.style.display='inline'; Codehighlighter1_422_472_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_422_472_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_422_472_Closed_Text.style.display='none'; Codehighlighter1_422_472_Open_Image.style.display='inline'; Codehighlighter1_422_472_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />$(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">div.menu1</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).click(&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()&nbsp;</span><span id="Codehighlighter1_422_472_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_422_472_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;$(</span><span style="color: #0000ff; background-color: #f5f5f5">this</span><span style="color: #000000; background-color: #f5f5f5">).children('.menu2')&nbsp;.slideToggle(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">slow</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);}</span></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_511_560_Open_Image" onclick="this.style.display='none'; Codehighlighter1_511_560_Open_Text.style.display='none'; Codehighlighter1_511_560_Closed_Image.style.display='inline'; Codehighlighter1_511_560_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_511_560_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_511_560_Closed_Text.style.display='none'; Codehighlighter1_511_560_Open_Image.style.display='inline'; Codehighlighter1_511_560_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />$(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">div.menu2</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).click(&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()&nbsp;</span><span id="Codehighlighter1_511_560_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_511_560_Open_Text"><span style="color: #000000; background-color: #f5f5f5">{&nbsp;alert(</span><span style="color: #0000ff; background-color: #f5f5f5">this</span><span style="color: #000000; background-color: #f5f5f5">.getAttribute(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">href</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">));&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">return</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">;}</span></span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000; background-color: #f5f5f5">);<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />1<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="123.htm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1-1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="123.htm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1-2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="123.htm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1-3</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #ff0000">&nbsp;href</span><span style="color: #0000ff">="123.htm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1-4</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />2<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2-1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2-2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2-3</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2-4</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />3<br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3-1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3-2</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3-3</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">class</span><span style="color: #0000ff">="menu2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">3-4</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<br />
CSS代码:<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_6_35_Open_Image" onclick="this.style.display='none'; Codehighlighter1_6_35_Open_Text.style.display='none'; Codehighlighter1_6_35_Closed_Image.style.display='inline'; Codehighlighter1_6_35_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_6_35_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_6_35_Closed_Text.style.display='none'; Codehighlighter1_6_35_Open_Image.style.display='inline'; Codehighlighter1_6_35_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #800000">.menu1</span><span id="Codehighlighter1_6_35_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">{<img src="http://www.cnblogs.com/Images/dot.gif"  alt="" />}</span><span id="Codehighlighter1_6_35_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">background-color&nbsp;</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;#FFFDA0</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_44_74_Open_Image" onclick="this.style.display='none'; Codehighlighter1_44_74_Open_Text.style.display='none'; Codehighlighter1_44_74_Closed_Image.style.display='inline'; Codehighlighter1_44_74_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_44_74_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_44_74_Closed_Text.style.display='none'; Codehighlighter1_44_74_Open_Image.style.display='inline'; Codehighlighter1_44_74_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />.menu2</span><span id="Codehighlighter1_44_74_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">{<img src="http://www.cnblogs.com/Images/dot.gif"  alt="" />}</span><span id="Codehighlighter1_44_74_Open_Text"><span style="color: #000000">{</span><span style="color: #ff0000">background-color&nbsp;</span><span style="color: #000000">:</span><span style="color: #0000ff">&nbsp;#C4BCFF</span><span style="color: #000000">;</span><span style="color: #ff0000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #800000"><br />
<img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
代码很简单,我就不描述了//希望对jquery入门者有所帮助..<img src ="http://www.cnblogs.com/fanrsh/aggbug/888146.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43809/" target="_blank">[新闻]微软发布PC Live单机游戏客户端</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>jQuery工作原理解析以及源代码示例</title><link>http://www.cnblogs.com/fanrsh/archive/2007/09/04/882145.html</link><dc:creator>fanrsh</dc:creator><author>fanrsh</author><pubDate>Tue, 04 Sep 2007 15:40:00 GMT</pubDate><guid>http://www.cnblogs.com/fanrsh/archive/2007/09/04/882145.html</guid><wfw:comment>http://www.cnblogs.com/fanrsh/comments/882145.html</wfw:comment><comments>http://www.cnblogs.com/fanrsh/archive/2007/09/04/882145.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/fanrsh/comments/commentRss/882145.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/fanrsh/services/trackbacks/882145.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jQuery的开篇声明里有一段非常重要的话:<strong><font color="#0000ff">jQuery是为了改变javascript的编码方式而设计的</font></strong>.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><font color="#0000ff">jQuery改变javascript编码方式!</font></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那么它是如何实现它的声明的呢?这里,用以下的一段简短的使用流程:<br />
<strong><font color="#0000ff">1)查找(创建)jQuery对象</font></strong>:$(&#8221;selector&#8221;);<br />
<strong><font color="#0000ff">2)调用jQuery对象的方法完成我们需要完成的工作</font></strong>:$(&#8221;selector&#8221;).doOurWork();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ok,jQuery就是以这种可以说是最简单的编码逻辑来改变javascript编码方式的.这两个步骤是jQuery的编码逻辑核心!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要实现这种简洁编码方式,创建jQuery对象这一环节至关重要.因此,jQuery的<strong><font color="#0000ff">dom元素查找能力</font></strong>相当强悍.此外,jQuery对象的方法肯定是有限的,有限的方法满足不了日益增长各有所需的要求,所以,必须提供<strong><font style="background-color: #ffffff;" color="#0000ff">jQuery对象方法的扩展</font></strong>能力.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;强悍的dom元素查找能力,以及随心所欲的方法扩展,这两点正是jQuery的核心所在!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;来一个简单的示例,来说明jQuery是如何工作的:
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&#8221;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&#8221;&nbsp;&#8221;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">=&#8221;http://www.w3.org/1999/xhtml&#8221;</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" />&nbsp;&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 />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">=&#8221;bd&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">a&nbsp;</span><span style="color: #ff0000;">href</span><span style="color: #0000ff;">=&#8221;http://www.baidu.com&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">baidu</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">=&#8221;text/javascript&#8221;</span><span style="color: #ff0000;">&nbsp;src</span><span style="color: #0000ff;">=&#8221;../Script/jquery.js&#8221;</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 />
<img id="Codehighlighter1_377_535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_377_535_Open_Text.style.display='none'; Codehighlighter1_377_535_Closed_Image.style.display='inline'; Codehighlighter1_377_535_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_377_535_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_377_535_Closed_Text.style.display='none'; Codehighlighter1_377_535_Open_Image.style.display='inline'; Codehighlighter1_377_535_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">=&#8221;text/javascript&#8221;</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">&gt;</span><span id="Codehighlighter1_377_535_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000; background-color: #f5f5f5;"><br />
<img id="Codehighlighter1_390_532_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_532_Open_Text.style.display='none'; Codehighlighter1_390_532_Closed_Image.style.display='inline'; Codehighlighter1_390_532_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_390_532_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_390_532_Closed_Text.style.display='none'; Codehighlighter1_390_532_Open_Image.style.display='inline'; Codehighlighter1_390_532_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" />$(</span><span style="color: #0000ff; background-color: #f5f5f5;">function</span><span style="color: #000000; background-color: #f5f5f5;">()</span><span id="Codehighlighter1_390_532_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000; background-color: #f5f5f5;">{<br />
<img id="Codehighlighter1_420_528_Open_Image" onclick="this.style.display='none'; Codehighlighter1_420_528_Open_Text.style.display='none'; Codehighlighter1_420_528_Closed_Image.style.display='inline'; Codehighlighter1_420_528_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_420_528_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_420_528_Closed_Text.style.display='none'; Codehighlighter1_420_528_Open_Image.style.display='inline'; Codehighlighter1_420_528_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: #000000; background-color: #f5f5f5;">&#8220;</span><span style="color: #000000; background-color: #f5f5f5;">a</span><span style="color: #000000; background-color: #f5f5f5;">&#8220;</span><span style="color: #000000; background-color: #f5f5f5;">).click(</span><span style="color: #0000ff; background-color: #f5f5f5;">function</span><span style="color: #000000; background-color: #f5f5f5;">(e)</span><span id="Codehighlighter1_420_528_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000; background-color: #f5f5f5;">{</span><span style="color: #008000; background-color: #f5f5f5;">//</span><span style="color: #008000; background-color: #f5f5f5;">1)查找$(&#8221;a&#8221;);2)jQuery对象事件click;3)jQuery对象方法hide</span><span style="color: #008000; background-color: #f5f5f5;"><br />
<img src="../../Images/OutliningIndicators/InBlock.gif" align="top/"  alt="" /></span><span style="color: #000000; background-color: #f5f5f5;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(</span><span style="color: #0000ff; background-color: #f5f5f5;">this</span><span style="color: #000000; background-color: #f5f5f5;">).hide(</span><span style="color: #000000; background-color: #f5f5f5;">&#8220;</span><span style="color: #000000; background-color: #f5f5f5;">slow</span><span style="color: #000000; background-color: #f5f5f5;">&#8220;</span><span style="color: #000000; background-color: #f5f5f5;">);<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5;">return</span><span style="color: #000000; background-color: #f5f5f5;">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5;">false</span><span style="color: #000000; background-color: #f5f5f5;">;&nbsp;&nbsp;&nbsp;<br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000; background-color: #f5f5f5;">);<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top/"  alt="" />}</span><span style="color: #000000; background-color: #f5f5f5;">);<br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery中有一个\&#8221;配置&#8221;的思想,这一点使得对象的属性/事件等设置变得容易理解且十分简便,如下一个拖拽组件的初始化:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /><span style="color: #000000;">$(document).ready(<br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()<br />
<img id="Codehighlighter1_32_219_Open_Image" onclick="this.style.display='none'; Codehighlighter1_32_219_Open_Text.style.display='none'; Codehighlighter1_32_219_Closed_Image.style.display='inline'; Codehighlighter1_32_219_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_32_219_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_32_219_Closed_Text.style.display='none'; Codehighlighter1_32_219_Open_Image.style.display='inline'; Codehighlighter1_32_219_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_32_219_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{</span><span style="color: #000000;"><br />
<img id="Codehighlighter1_114_214_Open_Image" onclick="this.style.display='none'; Codehighlighter1_114_214_Open_Text.style.display='none'; Codehighlighter1_114_214_Closed_Image.style.display='inline'; Codehighlighter1_114_214_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_114_214_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_114_214_Closed_Text.style.display='none'; Codehighlighter1_114_214_Open_Image.style.display='inline'; Codehighlighter1_114_214_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(&#8217;#drag1&#8242;).Draggable(</span><span id="Codehighlighter1_114_214_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle:&nbsp;</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">ax</span><span style="color: #000000;">&#8220;</span><span style="color: #000000;">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">属性设置</span><span style="color: #008000;"><br />
<img id="Codehighlighter1_188_210_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_210_Open_Text.style.display='none'; Codehighlighter1_188_210_Closed_Image.style.display='inline'; Codehighlighter1_188_210_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_188_210_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_188_210_Closed_Text.style.display='none'; Codehighlighter1_188_210_Open_Image.style.display='inline'; Codehighlighter1_188_210_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onStart:&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(el,x,y)</span><span id="Codehighlighter1_188_210_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">事件监听器设置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top/"  alt="" /></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" />);</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以看到,$(&#8221;#drag1&#8243;)是查找并创建一个jquery对象,然后调用Draggable方法进行拖拽初始化,在此方法调用时,传递一个\&#8221;配置&#8221;对象,进行拖拽操作的初始化配置.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这一&#8221;配置&#8221;的思想,极大简化了一些编码步骤,并相当直观和易懂.</p>
<p>以下我进行三个问答:<br />
1)&nbsp;&nbsp;&nbsp;问:为什么$(selector)之后,返回的是jQuery对象?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;答:从
jQuery的源代码中,我们可以知道:var $ =
jQuery.因此当我们$(selector)操作时,其实就是jQuery(selector),创建的是一个jQuery对象.当然正确的写法应该
是这样的:var jq&nbsp;= new $(selector);而jQuery使用了一个小技巧在外部避免了new,在jquery方法内部:if (
window == this ) return new jQuery(selector);<br />
2)&nbsp;&nbsp;&nbsp;问:为什么创建一个jQuery对象之后,我们可以这样写$(selector).each(function(index){&#8230;});进行遍历操作呢?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
答:其实jQuery(selector)方法调用时,在jQuery(selector)方法内部,最后返回的是一个数组:
return&nbsp;this.setArray(a);而each方法体内部是一个for循环,在循环体内是这样调用的:method.call(this
[i],i).<br />
3)&nbsp;&nbsp;&nbsp;问:为什么jQuery能做到jQuery对象属性/方法/事件的插件式扩展?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;答:如果您有一些
javasciprt的面向对象方面的知识,就会知道,jQuery.prototype原型对象上的扩展属性/方法和事件,将会给jQuery的对象
\&#8221;扩展&#8221;.基于这一点,jQuery是这样写的:jQuery.fn = jQuery.prototype.所以,当我们扩展一个插件功能时,如下:</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img id="Codehighlighter1_29_94_Open_Image" onclick="this.style.display='none'; Codehighlighter1_29_94_Open_Text.style.display='none'; Codehighlighter1_29_94_Closed_Image.style.display='inline'; Codehighlighter1_29_94_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_29_94_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_29_94_Closed_Text.style.display='none'; Codehighlighter1_29_94_Open_Image.style.display='inline'; Codehighlighter1_29_94_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top/"  alt="" /><span style="color: #000000;">jQuery.fn.check&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;</span><span id="Codehighlighter1_29_94_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{<br />
<img id="Codehighlighter1_61_90_Open_Image" onclick="this.style.display='none'; Codehighlighter1_61_90_Open_Text.style.display='none'; Codehighlighter1_61_90_Closed_Image.style.display='inline'; Codehighlighter1_61_90_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_61_90_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_61_90_Closed_Text.style.display='none'; Codehighlighter1_61_90_Open_Image.style.display='inline'; Codehighlighter1_61_90_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.each(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;</span><span id="Codehighlighter1_61_90_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.checked&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top/"  alt="" />&nbsp;&nbsp;}</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top/"  alt="" />}</span><span style="color: #000000;">;</span></div>
<p>其实就是: </p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img id="Codehighlighter1_36_101_Open_Image" onclick="this.style.display='none'; Codehighlighter1_36_101_Open_Text.style.display='none'; Codehighlighter1_36_101_Closed_Image.style.display='inline'; Codehighlighter1_36_101_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_36_101_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_36_101_Closed_Text.style.display='none'; Codehighlighter1_36_101_Open_Image.style.display='inline'; Codehighlighter1_36_101_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedBlock.gif" align="top/"  alt="" /><span style="color: #000000;">jQuery.prototype.check&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;</span><span id="Codehighlighter1_36_101_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{<br />
<img id="Codehighlighter1_68_97_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_97_Open_Text.style.display='none'; Codehighlighter1_68_97_Closed_Image.style.display='inline'; Codehighlighter1_68_97_Closed_Text.style.display='inline';" src="../../Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top/"  alt="" /><img id="Codehighlighter1_68_97_Closed_Image" style="display: none;" onclick="this.style.display='none'; Codehighlighter1_68_97_Closed_Text.style.display='none'; Codehighlighter1_68_97_Open_Image.style.display='inline'; Codehighlighter1_68_97_Open_Text.style.display='inline';" src="../../Images/OutliningIndicators/ContractedSubBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.each(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">()&nbsp;</span><span id="Codehighlighter1_68_97_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img src="../../Images/dot.gif"  alt="" /></span><span style="color: #000000;">{<br />
<img src="../../Images/OutliningIndicators/InBlock.gif" align="top/"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.checked&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
<img src="../../Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top/"  alt="" />&nbsp;&nbsp;}</span><span style="color: #000000;">);<br />
<img src="../../Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top/"  alt="" />}</span><span style="color: #000000;">;</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综上所述,jQuery给我们带来了<font color="#000000">一个</font><strong>简洁方便的编码模型</strong>(1&gt;创建jQuery对象;2&gt;直接使用jQuery对象的属性/方法/事件),一个<strong><font color="#0000ff">强悍的dom元素查找器</font></strong>($),<strong><font color="#0000ff">插件式编程接口</font></strong>(jQuery.fn),以及插件初始化的&#8221;配置&#8221;对象思想.</p>
<p>&nbsp;&nbsp;&nbsp;附:实现自己的jQuery</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;&#8221;-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN&#8221;&nbsp;&#8221;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">=&#8221;http://www.w3.org/1999/xhtml&#8221;</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /></span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" />&nbsp;&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;">Untitled&nbsp;Page</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<img src="../../Images/OutliningIndicators/None.gif" align="top/"  alt="" /><