<?xml version="1.0" encoding="gb2312"?>

<!-- RSS generated by oioj.net on 4/16/2004 ; 感谢LeXRus提供 RSS 2.0 文档; 此文件可自由使用，但请保留此行信息 --> 
<!-- Source download URL: http://blogger.org.cn/blog/rss2.asp       -->
<rss version="2.0">

<channel>
<title>c-style的博客</title>
<link>http://blogger.org.cn/blog/blog.asp?name=c-style</link>
<description>c-style的博客</description>
<copyright>blogger.org.cn</copyright>
<generator>W3CHINA Blog</generator>
<webMaster>webmaster@blogger.org.cn</webMaster>
<item>
<title><![CDATA[下拉列表的动态清空和添加函数]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=9793</link>
<author>c-style</author>
<pubDate>2005/11/11 17:11:29</pubDate>
<description><![CDATA[<P><A>清空：</A></P>
<P>function clearOption(oSelect)<BR>{<BR>&nbsp;while(oSelect.options.length)<BR>&nbsp;&nbsp;oSelect.options.removeChild(oSelect.options[0]);<BR>}</P>
<P>添加：</P>
<P>function addOption(oSelect,txt,val)<BR>{<BR>&nbsp;var oOption = document.createElement("OPTION");<BR>&nbsp;oSelect.options.add(oOption);<BR>&nbsp;oOption.innerText = txt;<BR>&nbsp;oOption.value = val;<BR>}&nbsp;&nbsp;&nbsp;&nbsp; </P>]]></description>
</item><item>
<title><![CDATA[Foxpro日期加减函数]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=8322</link>
<author>c-style</author>
<pubDate>2005/9/6 13:53:12</pubDate>
<description><![CDATA[<P>因为查不到，所以自己写一个。</P>
<P>function AddDate<BR>para sDate,iToAdd,sUnit&nbsp;&amp;&amp;日期，加减数量，单位（"day","month","year","week"）&nbsp; <BR>if ! (sUnit == "day" .or. sUnit == "month" .or. sUnit == "year" .or. sUnit == "week" )<BR>&nbsp;messagebox("请指定正确的单位")<BR>&nbsp;return .t.<BR>endif<BR>iYear = year(sDate)<BR>iMonth = month(sDate)<BR>iDay = day(sDate)&nbsp;&nbsp;&nbsp; <BR>bIsBiss = isBiss(iYear)<BR>do case<BR>&nbsp;case sUnit == "day" <BR>&nbsp;&nbsp;if iToAdd &gt;= 0<BR>&nbsp;&nbsp;&nbsp;if iDay + iToAdd &lt;= countDays(iMonth,bIsBiss) <BR>&nbsp;&nbsp;&nbsp;&nbsp;iDay = iDay + iToAdd&nbsp;<BR>&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do while iDay + iToAdd &gt; countDays(iMonth,bIsBiss)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iToAdd = iDay + iToAdd - countDays(iMonth,bIsBiss)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iMonth = iMonth + 1&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if iMonth &gt; 12<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;iMonth = iMonth - 12<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;iYear = iYear + 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;endif<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iDay = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enddo&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iDay = iToAdd<BR>&nbsp;&nbsp;&nbsp;endif&nbsp;<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;if iDay + iToAdd &gt; 0&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;iDay = iDay + iToAdd<BR>&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;do while iDay + iToAdd &lt;= 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iMonth = iMonth - 1&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if iMonth &lt; 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;iMonth = iMonth + 12<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;iYear = iYear - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;endif<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iToAdd = iDay + iToAdd + countDays(iMonth,bIsBiss) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;iDay = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enddo&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; iDay = iToAdd<BR>&nbsp;&nbsp;&nbsp;endif<BR>&nbsp;&nbsp;endif<BR>&nbsp;case sUnit == "month"&nbsp; <BR>&nbsp;&nbsp;if iToAdd &gt;= 0<BR>&nbsp;&nbsp;&nbsp;do while iMonth + iToAdd &gt; 12<BR>&nbsp;&nbsp;&nbsp;&nbsp;iYear = iYear + 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;iToAdd = iMonth + iToAdd - 12 <BR>&nbsp;&nbsp;&nbsp;&nbsp;iMonth = 0&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;enddo&nbsp;&nbsp; <BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;do while iMonth + iToAdd &lt; 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;iYear = iYear - 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;iToAdd = iMonth + iToAdd + 12 <BR>&nbsp;&nbsp;&nbsp;&nbsp;iMonth = 0<BR>&nbsp;&nbsp;&nbsp;enddo &nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;endif <BR>&nbsp;&nbsp;iMonth = iMonth + iToAdd<BR>&nbsp;case sUnit == "year"&nbsp;&nbsp; <BR>&nbsp;&nbsp;iYear = iYear + iToAdd<BR>&nbsp;otherwise <BR>&nbsp;&nbsp;return AddDate(sDate,iToAdd * 7,"day")<BR>endcase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>do while iDay &gt; countDays(iMonth,isBiss(iYear))&nbsp;&nbsp; <BR>&nbsp;iDay = iDay - 1<BR>enddo<BR>return ctod(allt(str(iMonth)) + "/" +allt(str(iDay)) + "/" + allt(str(iYear)))</P>
<P>function isBiss&nbsp; <BR>para iYear<BR>if (iYear%100 == 0 .and. iYear%400 == 0) .or. (iYear%100 != 0 .and. iYear%4 == 0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;return .t.<BR>else<BR>&nbsp;return .f.<BR>endif&nbsp;&nbsp;&nbsp; </P>
<P>function countDays<BR>para iMonth,bIsBiss<BR>if iMonth == 2<BR>&nbsp;if bIsBiss<BR>&nbsp;&nbsp;return 29<BR>&nbsp;else<BR>&nbsp;&nbsp;return 28<BR>&nbsp;endif<BR>else<BR>&nbsp;if (iMonth &lt; 8 .and. iMonth%2 == 1) .or. (iMonth &gt;= 8 .and. iMonth%2 == 0)&nbsp; <BR>&nbsp;&nbsp;return 31<BR>&nbsp;else<BR>&nbsp;&nbsp;return 30&nbsp; <BR>&nbsp;endif<BR>endif&nbsp; </P>]]></description>
</item><item>
<title><![CDATA[检测页面是否由多窗口浏览器打开]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7679</link>
<author>c-style</author>
<pubDate>2005/8/6 13:01:49</pubDate>
<description><![CDATA[<P>有时候，我们希望页面只是由MS IE打开，而不是NETSCAPE、FIREFOX、OPERA及以IE为内核的多窗口浏览器打开，例如，我们写了针对IE的对某些功能作了限制的代码，会需要屏蔽菜单栏和工具栏等，而多窗口浏览器则会使用window.open('','','')打开的窗口仍然在同一浏览器内，菜单栏和工具栏仍然能起作用。</P>
<P>有这么个办法达到目的：在一个放在框架里的、无滚动条的页面里，判断BODY的宽度，与打开它的窗口的BODY的宽度作比较，具体到下面的代码，是打开了一个宽度为800的窗口。</P>
<P>&lt;script language="javascript"&gt; <BR>try{<BR>&nbsp;if(!/Microsoft Internet Explorer/i.test(navigator.appName))<BR>&nbsp;{<BR>&nbsp; &nbsp;alert('请只使用微软IE浏览器');<BR>&nbsp; &nbsp;top.close();<BR>&nbsp;} <BR>&nbsp;if(800 &lt; document.body.clientWidth &amp;&amp; parent.opener.document.body.clientWidth &lt;= document.body.clientWidth)&nbsp;<BR>&nbsp;{<BR>&nbsp;&nbsp;alert('对不起，您不能在当前浏览器操作');<BR>&nbsp;&nbsp;top.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;}&nbsp; <BR>}catch(e){;}&nbsp;<BR>&lt;/script&gt;</P>]]></description>
</item><item>
<title><![CDATA[javascript屏蔽ctrl键]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7579</link>
<author>c-style</author>
<pubDate>2005/8/1 15:01:24</pubDate>
<description><![CDATA[
<P>曾经为怎样屏蔽打印功能而烦恼，因为一般的return false对打印功能并不起作用，终于找到办法——对指定网页用隐藏菜单栏的方式打开，并在该网页作如下处理：</P>
<P>&lt;body onkeydown="if(event.ctrlKey){this.innerHTML='普通用户禁止Ctrl键操作,&lt;a href=javascript:history.go(0)&gt;点这里恢复&lt;/a&gt;';}" oncontextmenu="return false"&gt;</P>
<P>这可是不让用CTRL键了，刚好适合现在的需要。</P>
<P>Tips:知道各键代码的办法—— alert(event.keyCode)&nbsp; 。</P>]]></description>
</item><item>
<title><![CDATA[Lua的IO]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7504</link>
<author>c-style</author>
<pubDate>2005/7/28 21:48:47</pubDate>
<description><![CDATA[<P>除非另有提及,所有的IO操作失败时都返回nil及错误信息.</P>
<P>io.close ([file])<BR>关闭文件.</P>
<P>io.flush ()<BR>向文件输出内容.</P>
<P>io.input ([file])<BR>打开文件,失败时抛出错误.参数为文件名时,以文本方式打开文件.</P>
<P>io.lines ([filename])<BR>以读模式打开文件,并返回一个枚举文件中各行的函数,即每次调用时读出一行,到文件末时返回nil.</P>
<P>io.open (filename [, mode])<BR>用指定模式打开文件,模式参数可为"r","w","a",或在后面加上"+",在最后加上"b"则为对二进制文件操作.</P>
<P>io.output ([file])<BR>与io.input相对应的操作.</P>
<P>io.read (format1, ...)<BR>以指定格式读入.</P>
<P>io.tmpfile ()<BR>建立临时文件,返回文件句柄,程序结束时自动删除该文件.</P>
<P>io.type (obj)<BR>检查对象是否文件句柄,若是则返回"file",若文件已关闭则返回"closed file",不是文件句柄则返回nil.</P>
<P>io.write (value1, ...)<BR>写入参数.</P>
<P>file:close ()<BR>关闭文件.</P>
<P>file:flush ()<BR>保存写入的内容.</P>
<P>file:lines ()<BR>读出文件的行,与io.lines类似但在循环结束时不关闭文件.</P>
<P>file:read (format1, ...)<BR>按指定格式读文件.<BR>格式参数可为如下:<BR>"*n" 读一个数值而不作为字符串;<BR>"*a" 从当前位置开始读完整个文件;<BR>"*l" 读下一行;<BR>数值 读指定数量的字符.<BR>到文件末时都返回nil.</P>
<P>file:seek ([whence] [, offset])<BR>指定或得到在文件中的位置,whence参数可选如下:<BR>"set" 开始位置为0,即文件的开始;<BR>"cur" 当前位置;<BR>"end" 文件结束.<BR>操作成功时返回以byte为单位的位置值,否则返回nil和出错信息.<BR>whence的默认值为"cur", offset默认值为0.</P>
<P>file:write (value1, ...)<BR>把参数(必须为字符串或数值)写入文件.<A></A></P>]]></description>
</item><item>
<title><![CDATA[Lua basic library 翻译]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7491</link>
<author>c-style</author>
<pubDate>2005/7/27 21:52:08</pubDate>
<description><![CDATA[<P>assert (v [, message])<BR>返回参数v的值,当v为nil或false时则显示出错信息;message为可选的出错信息,默认值为“assertion failed!”</P>
<P>collectgarbage ([limit])<BR>设置垃圾收集器的上限值,单位为KB,如果该值小于byte counter,垃圾收集器会立即运行,limit默认值为0,该默认值会强制垃圾收集器循环运行.</P>
<P>dofile (filename)<BR>打开指定文件并作为chuck执行,无参数时执行stdin的内容,不能在保护模式中使用.</P>
<P>error (message [, level])<BR>终止最后一个受保护的函数的运行,返回message,而该函数的出错信息不会返回.参数level指定了出错信息所反映的位置,取默认值1时,指向调用出错的函数的位置,取2时,指向引起error的函数被调用的位置,依此类推.</P>
<P>_G<BR>全局环境变量,改写该值不会引起环境的变化(可使用setfenv改变环境值).</P>
<P>getfenv (f)<BR>返回当前环境值,f可以是函数也可以是数字,默认1指当前函数,0则返回全局环境;如果环境有个"__fenv"域时,返回相应值而非环境.</P>
<P>getmetatable (object)<BR>依存在情况返回对象的以下值:"__metatable"域,metatable,nil.</P>
<P>gcinfo ()<BR>返回Lua正在使用的内存和垃圾收集器的大小(单位都是KB).</P>
<P>ipairs (t)<BR>t为table,返回成对值,如下所示:<BR>for i,v in ipairs(t) do ... end<BR>返回(1,t[1]), (2,t[2])...等值.</P>
<P>loadfile (filename)<BR>载入一个文件但不执行,不发生错误时,返回一个函数,否则返回nil和出错信息.返回的函数的环境为全局环境.</P>
<P>loadlib (libname, funcname)<BR>把程序与动态C类libname链接起来,在该类内寻找名为funcname的函数并返回为一个C函数.<BR>libname必须包含完全路径及扩展名,本函数不为ANSI C支持,只适用于(Windows, Linux, Solaris, BSD,及部分支持dlfcn standard的平台.</P>
<P>loadstring (string [, chunkname])<BR>载入字符串但不执行,与loadfile (filename)相近.chunkname用于出错信息和debug信息.</P>
<P>next (table [, index])<BR>返回table的下一个元素,当index为nil时,返回第一个元素,为table的最后一个下标或空table的nil时,返回nil.</P>
<P>pairs (t)<BR>返回table的键/值对.</P>
<P>pcall (f, arg1, arg2, ...)<BR>保护模式调用函数f,捕捉错误并返回状态码.返回的第一个值为该函数的状态码(布尔型),无错时继续返回函数的返回值,出错时返回false及出错信息.</P>
<P>print (e1, e2, ...)<BR>显示参数值.</P>
<P>rawequal (v1, v2)<BR>比较两个参数.</P>
<P>rawget (table, index)<BR>取得table[index]的值,index不能为nil.</P>
<P>rawset (table, index, value)<BR>对table[index]赋值.</P>
<P>require (packagename)<BR>载入指定包,载入后返回该包的返回值,把nil和无返回值转换为true,把false保留.</P>
<P>setfenv (f, table)<BR>返回当前环境给指定函数f,当f为0时,改变当前线程的全局环境.如果初始环境有"__fenv"域时,抛出错误.</P>
<P>setmetatable (table, metatable)<BR>对指定table设置metatable,如果metatable有"__metatable"域时,抛出错误.</P>
<P>tonumber (e [, base])<BR>转换为数值或返回nil.当base大于10时,忽略大小写的'A'将转换为10,'B'将转换为11,'Z'将转换为35,取默认值10时,返回值可能含有小数.</P>
<P>tostring (e)<BR>转换为字符串,当metatable有"__tostring"域时,返回以e为参数的对应值.</P>
<P>type (v)<BR>返回参数的类型,返回值为字符串:"nil" , "number", "string", "boolean, "table", "function","thread", and "userdata".</P>
<P>unpack (list)<BR>返回给定list的所有元素.</P>
<P>_VERSION<BR>返回当前解释器的版本号,例如"Lua 5.0".</P>
<P>xpcall (f, err)<BR>类似于pcall,但允许指定错误处理handler.<A></A></P>]]></description>
</item><item>
<title><![CDATA[PERL作为CGI获得参数值的方法]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7459</link>
<author>c-style</author>
<pubDate>2005/7/26 19:51:15</pubDate>
<description><![CDATA[require "cgi-lib.pl";<BR>print "Content-type:text/html\n\n"; <BR>&amp;ReadParse(*input);<BR>print $input{"yourVar"};<BR>print "&lt;form method=post&gt;&lt;input type=text name=yourVar&gt;&lt;input type=submit&gt;&lt;/form&gt;";<BR>通过网址传递的参数也能同样获得，但POST的优先。<BR>cgi-lib.pl 可以从 http://cgi-lib.berkeley.edu/ 下载。]]></description>
</item><item>
<title><![CDATA[Perl遍历目录的函数]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7458</link>
<author>c-style</author>
<pubDate>2005/7/26 19:50:21</pubDate>
<description><![CDATA[下面的函数将遍历指定目录，并显示文件名为“e.*”（即任何扩展名）的文件。<BR><BR>sub seekFolders<BR>{<BR> local ($dir)=@_;<BR> opendir ($folder,$dir) || die print 'error';<BR> local @array=readdir($folder);<BR> <BR> for(local $i=2;$i &lt; @array;$i++)<BR> {<BR> if((-f $dir.'\\'.$array[$i]) &amp;&amp; $array[$i]=~/^e\./i)<BR> {<BR> print $dir.'\\'.$array[$i].'&lt;br&gt;';<BR> closedir($folder);return;<BR> }<BR> }<BR> <BR> for(local $i=2;$i &lt; @array;$i++)<BR> {<BR> if(-d $dir.'\\'.$array[$i])<BR> {<BR> seekFolders($dir.'\\'.$array[$i]);<BR> }<BR> }<BR> <BR> closedir($folder);<BR> return;<BR>}<BR><BR>容易犯错的地方：如果不对$i作local限定，将出现死循环。<BR>]]></description>
</item><item>
<title><![CDATA[MD5加密的javascript实现]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7457</link>
<author>c-style</author>
<pubDate>2005/7/26 19:46:54</pubDate>
<description><![CDATA[
<TABLE cellSpacing=0 cellPadding=1 width="90%" border=0>
<TBODY>
<TR>
<TD>&lt;script&gt;<BR>/* MD5 Message-Digest Algorithm - JavaScript<BR>MODIFICATION HISTORY:<BR>1.0 16-Feb-2001 - Phil Fresle (sales@frez.co.uk) - Initial Version (VB/ASP code)<BR>1.0 21-Feb-2001 - Enrico Mosanghini (erik504@yahoo.com) - JavaScript porting<BR>*/<BR>function MD5(sMessage) {<BR>function RotateLeft(lValue, iShiftBits) { return (lValue&lt;&lt;iShiftBits) | (lValue&gt;&gt;&gt;(32-iShiftBits)); }<BR>function AddUnsigned(lX,lY) {<BR>var lX4,lY4,lX8,lY8,lResult;<BR>lX8 = (lX &amp; 0x80000000);<BR>lY8 = (lY &amp; 0x80000000);<BR>lX4 = (lX &amp; 0x40000000);<BR>lY4 = (lY &amp; 0x40000000);<BR>lResult = (lX &amp; 0x3FFFFFFF)+(lY &amp; 0x3FFFFFFF);<BR>if (lX4 &amp; lY4) return (lResult ^ 0x80000000 ^ lX8 ^ lY8);<BR>if (lX4 | lY4) {<BR>if (lResult &amp; 0x40000000) return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);<BR>else return (lResult ^ 0x40000000 ^ lX8 ^ lY8);<BR>} else return (lResult ^ lX8 ^ lY8);<BR>}<BR>function F(x,y,z) { return (x &amp; y) | ((~x) &amp; z); }<BR>function G(x,y,z) { return (x &amp; z) | (y &amp; (~z)); }<BR>function H(x,y,z) { return (x ^ y ^ z); }<BR>function I(x,y,z) { return (y ^ (x | (~z))); }<BR>function FF(a,b,c,d,x,s,ac) {<BR>a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));<BR>return AddUnsigned(RotateLeft(a, s), b);<BR>}<BR>function GG(a,b,c,d,x,s,ac) {<BR>a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));<BR>return AddUnsigned(RotateLeft(a, s), b);<BR>}<BR>function HH(a,b,c,d,x,s,ac) {<BR>a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));<BR>return AddUnsigned(RotateLeft(a, s), b);<BR>}<BR>function II(a,b,c,d,x,s,ac) {<BR>a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));<BR>return AddUnsigned(RotateLeft(a, s), b);<BR>}<BR>function ConvertToWordArray(sMessage) {<BR>var lWordCount;<BR>var lMessageLength = sMessage.length;<BR>var lNumberOfWords_temp1=lMessageLength + 8;<BR>var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;<BR>var lNumberOfWords = (lNumberOfWords_temp2+1)*16;<BR>var lWordArray=Array(lNumberOfWords-1);<BR>var lBytePosition = 0;<BR>var lByteCount = 0;<BR>while ( lByteCount &lt; lMessageLength ) {<BR>lWordCount = (lByteCount-(lByteCount % 4))/4;<BR>lBytePosition = (lByteCount % 4)*8;<BR>lWordArray[lWordCount] = (lWordArray[lWordCount] | (sMessage.charCodeAt(lByteCount)&lt;&lt;lBytePosition));<BR>lByteCount++;<BR>}<BR>lWordCount = (lByteCount-(lByteCount % 4))/4;<BR>lBytePosition = (lByteCount % 4)*8;<BR>lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80&lt;&lt;lBytePosition);<BR>lWordArray[lNumberOfWords-2] = lMessageLength&lt;&lt;3;<BR>lWordArray[lNumberOfWords-1] = lMessageLength&gt;&gt;&gt;29;<BR>return lWordArray;<BR>}<BR>function WordToHex(lValue) {<BR>var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;<BR>for (lCount = 0;lCount&lt;=3;lCount++) {<BR>lByte = (lValue&gt;&gt;&gt;(lCount*8)) &amp; 255;<BR>WordToHexValue_temp = "0" + lByte.toString(16);<BR>WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);<BR>}<BR>return WordToHexValue;<BR>}<BR>var x=Array();<BR>var k,AA,BB,CC,DD,a,b,c,d<BR>var S11=7, S12=12, S13=17, S14=22;<BR>var S21=5, S22=9 , S23=14, S24=20;<BR>var S31=4, S32=11, S33=16, S34=23;<BR>var S41=6, S42=10, S43=15, S44=21;<BR>// Steps 1 and 2. Append padding bits and length and convert to words<BR>x = ConvertToWordArray(sMessage);<BR>// Step 3. Initialise<BR>a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;<BR>// Step 4. Process the message in 16-word blocks<BR>for (k=0;k&lt;x.length;k+=16) {<BR>AA=a; BB=b; CC=c; DD=d;<BR>a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);<BR>d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);<BR>c=FF(c,d,a,b,x[k+2], S13,0x242070DB);<BR>b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);<BR>a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);<BR>d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);<BR>c=FF(c,d,a,b,x[k+6], S13,0xA8304613);<BR>b=FF(b,c,d,a,x[k+7], S14,0xFD469501);<BR>a=FF(a,b,c,d,x[k+8], S11,0x698098D8);<BR>d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);<BR>c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);<BR>b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);<BR>a=FF(a,b,c,d,x[k+12],S11,0x6B901122);<BR>d=FF(d,a,b,c,x[k+13],S12,0xFD987193);<BR>c=FF(c,d,a,b,x[k+14],S13,0xA679438E);<BR>b=FF(b,c,d,a,x[k+15],S14,0x49B40821);<BR>a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);<BR>d=GG(d,a,b,c,x[k+6], S22,0xC040B340);<BR>c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);<BR>b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);<BR>a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);<BR>d=GG(d,a,b,c,x[k+10],S22,0x2441453);<BR>c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);<BR>b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);<BR>a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);<BR>d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);<BR>c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);<BR>b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);<BR>a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);<BR>d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);<BR>c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);<BR>b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);<BR>a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);<BR>d=HH(d,a,b,c,x[k+8], S32,0x8771F681);<BR>c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);<BR>b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);<BR>a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);<BR>d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);<BR>c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);<BR>b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);<BR>a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);<BR>d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);<BR>c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);<BR>b=HH(b,c,d,a,x[k+6], S34,0x4881D05);<BR>a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);<BR>d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);<BR>c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);<BR>b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);<BR>a=II(a,b,c,d,x[k+0], S41,0xF4292244);<BR>d=II(d,a,b,c,x[k+7], S42,0x432AFF97);<BR>c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);<BR>b=II(b,c,d,a,x[k+5], S44,0xFC93A039);<BR>a=II(a,b,c,d,x[k+12],S41,0x655B59C3);<BR>d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);<BR>c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);<BR>b=II(b,c,d,a,x[k+1], S44,0x85845DD1);<BR>a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);<BR>d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);<BR>c=II(c,d,a,b,x[k+6], S43,0xA3014314);<BR>b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);<BR>a=II(a,b,c,d,x[k+4], S41,0xF7537E82);<BR>d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);<BR>c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);<BR>b=II(b,c,d,a,x[k+9], S44,0xEB86D391);<BR>a=AddUnsigned(a,AA); b=AddUnsigned(b,BB); c=AddUnsigned(c,CC); d=AddUnsigned(d,DD);<BR>}<BR>// Step 5. Output the 128 bit digest<BR>var temp= WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);<BR>return temp.toLowerCase();<BR>}<BR>&lt;/script&gt;<BR>&lt;input type=text id=myinput&gt;&lt;input type=text ondblclick='this.value=MD5(myinput.value)'&gt;<BR><BR>与DELPHI实现的MD5加密相比较，英文数字的加密结果一样，中文就不相同了，可能与对中文字符的处理不同有关。<BR><BR>函数的版权声明在最上面。</TD></TR></TBODY></TABLE>]]></description>
</item><item>
<title><![CDATA[用JavaScript实现关键字高亮]]></title>
<link>http://blogger.org.cn/blog/more.asp?name=c-style&amp;id=7456</link>
<author>c-style</author>
<pubDate>2005/7/26 19:44:57</pubDate>
<description><![CDATA[<P>CGI程序（PERL、PHP等）常常要处理对数据库的查询并返回结果，有时候会希望象搜索引擎一样，对关键字进行高亮，这种功能大体上在服务器端实现比较好，但在某些情况下，需要在客户端实现，以下的代码则用JavaScript实现了关键字高亮功能。 </P>
<P><BR>[CODE] </P>
<P>function jsHighLight(myTag,searchfor) { // --==利用JAVASCRIPT进行高亮，要求IE6.0==-- <BR>eval('var aTag = document.all.tags("'+myTag+'") ; '); // --==取得网页标记==--<BR>try{ eval('var getIt=opener.document.form1.'+searchfor+'.value;'); // --==取得检索点==--<BR>getIt=getIt.split(/[*| ×｜　+＋]/); // --==使用正则表达式处理检索分隔符==--<BR>}catch(e){;} // --==使用异常处理,避免低版本IE报错==-- <BR>for(var c=0;c &lt; aTag.length;c++) <BR>{ <BR>try{ <BR>for(var j=0;j &lt; getIt.length;j++) <BR>if (aTag[c].innerText.indexOf(getIt[j])!=-1 &amp;&amp; !eval('/&lt;[^&lt;&gt;]*'+getIt[j]+'[^&lt;&gt;]*&gt;/.test(aTag[c].innerHTML)')) <BR>eval("aTag[c].innerHTML=aTag[c].innerHTML.replace(/"+getIt[j]+"/gi,'"+getIt[j]+"');"); // --==对在HTML标记&lt;&gt;里的文本不作处理==--<BR><BR>}catch(e){;} } } <BR>//jsHighLight('td','WHOLE'); //--==调用办法==-- <BR>[/CODE] <BR><BR>上述代码实现了把在input name="WHOLE"里输入的文字（并能按指定字符分割输入），在输出结果的td中高亮显示。</P>]]></description>
</item>
</channel>
</rss>