﻿<?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>BlogJava-emu in blogjava-文章分类-DHTML和JAVASCRIPT 技术</title><link>http://www.blogjava.net/emu/category/1383.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 20 Jul 2011 03:12:43 GMT</lastBuildDate><pubDate>Wed, 20 Jul 2011 03:12:43 GMT</pubDate><ttl>60</ttl><item><title>差点被燕潘考倒了</title><link>http://www.blogjava.net/emu/articles/327759.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 02 Aug 2010 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/327759.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/327759.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/327759.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/327759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/327759.html</trackback:ping><description><![CDATA[问题是这样的：从1到100000中任意拿掉两个数字，把剩下99998个数的顺序打乱并且放到数组中，要求只扫描一遍，把这个两个数找出来，可以使用最多不超过5个局部变量，不能使用数组变量并且不能改变数组的值。<br />
<br />
开始老担心溢出问题，最简单的方法不敢用，老想另辟蹊径。最后发现担心是多余的，这里需要用到的数只是稍微超过32位而已，大多数高级语言都能很轻松的处理64位大整数，连javascript也可以处理54位的大整数而不丢失精度，远远超过了这个问题的规模。<br />
<br />
这里特地把计算范围扩大了5倍来检验溢出问题。规模再大的时候我的IE计算时间超过5秒开始要警告了。为了代码简洁，打乱次序使用了效率很低的sort方法，大量的时间都消耗在这一步。把排序参数调整为0.8（而不是0.5）主要是为了减少排序计算量。<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&lt;!--</span><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;n</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">500000</span><span style="background-color: #f5f5f5; color: #000000">;</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">n是常数,不算临时变量。</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;ar</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">[];</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">这是输入数据，不算临时变量</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff">for</span><span style="background-color: #f5f5f5; color: #000000">(</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">0</span><span style="background-color: #f5f5f5; color: #000000">;i</span><span style="background-color: #f5f5f5; color: #000000">&lt;</span><span style="background-color: #f5f5f5; color: #000000">n;i</span><span style="background-color: #f5f5f5; color: #000000">++</span><span style="background-color: #f5f5f5; color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;ar.push(i</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)<br />
}<br />
</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">i是生成输入数据使用的，不算临时变量</span><span style="background-color: #f5f5f5; color: #008000"><br />
//</span><span style="background-color: #f5f5f5; color: #008000">随机抽取掉两个数</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">document.write(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">抽掉的第1个数是：</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">ar.splice(Math.floor(Math.random()</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">ar.length),</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">))<br />
document.write(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&lt;br&gt;抽掉的第2个数是：</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">ar.splice(Math.floor(Math.random()</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">ar.length),</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">))<br />
</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">打乱顺序</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">ar.sort(</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){</span><span style="background-color: #f5f5f5; color: #0000ff">return</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;Math.random()</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">.</span><span style="background-color: #f5f5f5; color: #000000">8</span><span style="background-color: #f5f5f5; color: #000000">})<br />
</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">使用了3个临时变量</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;t1</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">0</span><span style="background-color: #f5f5f5; color: #000000">,t2</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">0</span><span style="background-color: #f5f5f5; color: #000000">,t3;<br />
</span><span style="background-color: #f5f5f5; color: #0000ff">for</span><span style="background-color: #f5f5f5; color: #000000">(t3</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">ar.length</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">;t3</span><span style="background-color: #f5f5f5; color: #000000">&gt;=</span><span style="background-color: #f5f5f5; color: #000000">0</span><span style="background-color: #f5f5f5; color: #000000">;t3</span><span style="background-color: #f5f5f5; color: #000000">--</span><span style="background-color: #f5f5f5; color: #000000">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;t1</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">t1</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">ar[t3];<br />
&nbsp;&nbsp;&nbsp;&nbsp;t2</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">t2</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">(t3</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">(t3</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">ar[t3]</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">ar[t3];<br />
}<br />
t2</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">t2</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">;<br />
document.write(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&lt;br&gt;计算得到两个数是：&lt;br&gt;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">(((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">Math.sqrt(</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">(t2)</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)))</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">&lt;br&gt;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">(((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">Math.sqrt(</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">(t2)</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">((n</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">1</span><span style="background-color: #f5f5f5; color: #000000">)</span><span style="background-color: #f5f5f5; color: #000000">*</span><span style="background-color: #f5f5f5; color: #000000">n</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">-</span><span style="background-color: #f5f5f5; color: #000000">t1)))</span><span style="background-color: #f5f5f5; color: #000000">/</span><span style="background-color: #f5f5f5; color: #000000">2</span><span style="background-color: #f5f5f5; color: #000000">)<br />
</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">--&gt;</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/emu/aggbug/327759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2010-08-02 16:49 <a href="http://www.blogjava.net/emu/articles/327759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE6使用半透明png图片可能导致浏览器卡死</title><link>http://www.blogjava.net/emu/articles/311096.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 28 Jan 2010 09:36:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/311096.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/311096.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/311096.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/311096.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/311096.html</trackback:ping><description><![CDATA[<p>前两天定位一个用户浏览器卡死问题，一打开页面就卡的很死，毫无反应，用httpwatch抓包的话就和IE死在一起了，没法子用fiddler抓包，发现下载到一个png图片的时候，由于dns解析问题，改png图片指向了海外服务器，无法下载完成，此时浏览器不是跳过这个图片往下走，而是就卡在该处，也不对用户操作有任何响应。如果设法让该请求返回一个png图片，浏览器立刻就回复了正常。<br />
<br />
究其原因，是IE6下面要使用半透明png图片，就躲不开神奇的DXImageTransform.Microsoft.AlphaImageLoader滤镜。不管你是用所谓的脚本方式还是htc方式，都一样。而这个滤镜在开始工作的时候，IE6必须老老实实停下来等它完成。由此杯具就诞生了。<br />
<br />
考虑到用户环境的复杂性，如果真的要做一个稳定可用的在线web应用，还是尽量避免使用滤镜去渲染半透明的png图片吧。哪怕在IE六下给一个降级的解决方案呢（不透明图片？透明gif？），或者干脆先下载好图片再应用滤镜（如果用js或者htc方案的，更可以考虑把这个检测加进去）。</p>
 <img src ="http://www.blogjava.net/emu/aggbug/311096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2010-01-28 17:36 <a href="http://www.blogjava.net/emu/articles/311096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>非IE浏览器xhr下载的数据和浏览器自己下载的数据可能cache在不同的地方</title><link>http://www.blogjava.net/emu/articles/311080.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 28 Jan 2010 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/311080.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/311080.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/311080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/311080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/311080.html</trackback:ping><description><![CDATA[开放ajax应用的时候为了避免浏览器缓存，我常<a href="http://www.blogjava.net/emu/archive/2005/11/22/20888.html">建议</a>在用XHR发起请求的时候加一个
<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"><span style="color: #000000">xmlhttp.setRequestHeader(</span><span style="color: #000000">"</span><span style="color: #000000">If-Modified-Since</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
<br />
有的时候我们怀疑浏览器缓存了错误的脚本，也会这样用xhr去冲掉IE原有的cache。不过这个方法在非IE浏览器下不管用，似乎是因为由于header有不同，非IE浏览器认为这些是不同的请求，cache在不同的地方，或者是放弃对这个与众不同的请求的cache了。<br />
<br />
尝试了一下一些能起类似作用的不同的header，发现firefox下，似乎cache-control和pragma能起到类似的请求。测试代码如下：<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"><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;x</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XMLHttpRequest();<br />
x.open(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?ifmodifiedsince</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />
x.setRequestHeader(</span><span style="color: #000000">"</span><span style="color: #000000">If-Modified-Since</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
x.send(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">document.createElement('SCRIPT');<br />
document.getElementsByTagName(</span><span style="color: #000000">"</span><span style="color: #000000">HEAD</span><span style="color: #000000">"</span><span style="color: #000000">)[</span><span style="color: #000000">0</span><span style="color: #000000">].appendChild(s);<br />
s.src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?ifmodifiedsince</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;x</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XMLHttpRequest();<br />
x.open(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?cachecontrol</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />
x.setRequestHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Cache-Control</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">no-cache</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
x.send(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">document.createElement('SCRIPT');<br />
document.getElementsByTagName(</span><span style="color: #000000">"</span><span style="color: #000000">HEAD</span><span style="color: #000000">"</span><span style="color: #000000">)[</span><span style="color: #000000">0</span><span style="color: #000000">].appendChild(s);<br />
s.src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?cachecontrol</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;x</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XMLHttpRequest();<br />
x.open(</span><span style="color: #000000">"</span><span style="color: #000000">GET</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?Pragma</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #0000ff">false</span><span style="color: #000000">)<br />
x.setRequestHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Pragma</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">no-cache</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
x.send(</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">document.createElement('SCRIPT');<br />
document.getElementsByTagName(</span><span style="color: #000000">"</span><span style="color: #000000">HEAD</span><span style="color: #000000">"</span><span style="color: #000000">)[</span><span style="color: #000000">0</span><span style="color: #000000">].appendChild(s);<br />
s.src</span><span style="color: #000000">=</span><span style="color: #000000">"</span><span style="color: #000000">http://imgcache.qq.com/ac/qzone/gbk.js?Pragma</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
</span></div>
<br />
FireFox下，用if-modified-since下载成功脚本后，引用脚本时仍然下载了一份完整的脚本，说明xhr的这个请求没有被cache住。用cache-control和pragma的时候，应用脚本时就不再下载脚本而从cache里面读了。<br />
<br />
<img height="131" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/cache4ff.png" width="655" border="0" /><br />
<br />
但是这两个header不能让浏览器抛弃已有的cache，只能让浏览器重新验证一下版本是否最新的。对于脚本被截断并且cache的情况，浏览器会验证到版本是最新的而不会更新那个&#8220;版本正确内容错误&#8221;的文件cache。<br />
<br />
对于其他主流非IE浏览器，这两个header也没有用，还是各cache各的，暂时还不知道如何用xhr来冲掉cache。<br />
<img src ="http://www.blogjava.net/emu/aggbug/311080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2010-01-28 15:29 <a href="http://www.blogjava.net/emu/articles/311080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>业余维护的一个脚本，想来想去还是host到google上算了</title><link>http://www.blogjava.net/emu/articles/309778.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sat, 16 Jan 2010 07:39:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/309778.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/309778.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/309778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/309778.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/309778.html</trackback:ping><description><![CDATA[可以从<a href="http://code.google.com/p/checknetwork4qqfarm/downloads/list">这个地址下载</a><br />
虽然谷歌可能快要被墙了，墙了再说吧。 <img src ="http://www.blogjava.net/emu/aggbug/309778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2010-01-16 15:39 <a href="http://www.blogjava.net/emu/articles/309778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>noreferrer</title><link>http://www.blogjava.net/emu/articles/306979.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 23 Dec 2009 02:13:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/306979.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/306979.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/306979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/306979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/306979.html</trackback:ping><description><![CDATA[<img alt="" src=" />
<p>&nbsp;<img style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://static16.photo.sina.com.cn/middle/537af0cfg81c400ade23f&690')" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/1359/t_b.gif" /> </p>
<img style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://b33.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e37d98216e2b8a4eea010b890328b41b42af004e46c6a79162e1ed0d8b4c25624f185ca9bdd72a26adbe28810425bd4bff9f823d091310ee7a50c744c111b170f8c178e49f480abe740e0e31323457942bd2fb25&amp;a=34&amp;b=33')" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/1359/t_b.gif" /> <img src ="http://www.blogjava.net/emu/aggbug/306979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-12-23 10:13 <a href="http://www.blogjava.net/emu/articles/306979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写了个网络情况分析脚本</title><link>http://www.blogjava.net/emu/articles/295610.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 18 Sep 2009 12:05:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/295610.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/295610.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/295610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/295610.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/295610.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">@echo&nbsp;off<br />
echo&nbsp;操作系统：%os%&gt;log.txt<br />
echo&nbsp;处理器数目：%number_of_processors%&gt;&gt;log.txt<br />
echo&nbsp;处理器芯片体系：%processor_architecture%&gt;&gt;log.txt<br />
echo&nbsp;处理器说明：%processor_identifier%&gt;&gt;log.txt<br />
echo&nbsp;处理器型号：%processor_level%&gt;&gt;log.txt<br />
echo&nbsp;处理器版本号：%processor_revision%&gt;&gt;log.txt<br />
echo&nbsp;-------------------&nbsp;ipconfig/all&nbsp;-------------------&nbsp;&gt;&gt;log.txt<br />
ipconfig/all&nbsp;&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;-------------------&nbsp;&nbsp;type&nbsp;%systemroot%\system32\drivers\etc\hosts&nbsp;-------------------&gt;&gt;log.txt<br />
type&nbsp;%systemroot%\system32\drivers\etc\hosts&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;下面的网络测试可能需要花1到3分钟时间<br />
echo&nbsp;请耐心等待测试完成，并把测试结果发送给我们的工作人员<br />
echo&nbsp;谢谢您对我们工作的支持！<br />
echo&nbsp;为了更有针对性的定位您所处的网络中可能存在的问题，请您先选择您所处的网络环境：<br />
echo&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;中国电信<br />
echo&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;中国网通<br />
echo&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;教育网<br />
echo&nbsp;（如果不清楚您所处的网络环境，请直接敲回车键）<br />
set&nbsp;choice</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000"><br />
set&nbsp;/p&nbsp;choice</span><span style="color: #000000">=</span><span style="color: #000000">请选择您所处的网络环境（</span><span style="color: #000000">1</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">/</span><span style="color: #000000">3</span><span style="color: #000000">）<br />
if&nbsp;%choice%</span><span style="color: #000000">==</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;goto&nbsp;cnc<br />
if&nbsp;%choice%</span><span style="color: #000000">==</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;goto&nbsp;edu<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ISP</span><span style="color: #000000">=</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;您选择的是&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;中国电信<br />
&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;start<br />
:cnc<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ISP</span><span style="color: #000000">=</span><span style="color: #000000">cnc.<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;您选择的是&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;中国网通<br />
&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;start<br />
:edu<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ISP</span><span style="color: #000000">=</span><span style="color: #000000">edu.<br />
&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;您选择的是&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;教育网<br />
:start<br />
echo&nbsp;测试开始时间&nbsp;%date%&nbsp;%time%&nbsp;&gt;&gt;log.txt<br />
echo&nbsp;测试开始时间&nbsp;%date%&nbsp;%time%<br />
for&nbsp;%%i&nbsp;in&nbsp;(<br />
user.qzone.qq.com<br />
%ISP%imgcache.qq.com<br />
%ISP%qzonestyle.gtimg.cn<br />
appimg.qq.com<br />
appimg1.qq.com<br />
happyfarm.qzone.qq.com<br />
nc.qzone.qq.com<br />
users.%ISP%qzone.qq.com<br />
u.%ISP%qzone.qq.com<br />
)&nbsp;do&nbsp;(<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;开始测试&nbsp;%%i&nbsp;域名<br />
echo&nbsp;正在测试&nbsp;%%i&nbsp;的连通性。这个过程可能需要几秒钟。<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;-------------------&nbsp;ping&nbsp;%%i.&nbsp;&nbsp;-------------------&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
ping&nbsp;%%i.&nbsp;&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;正在测试&nbsp;%%i&nbsp;域名解析过程。<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;-------------------&nbsp;nslookup&nbsp;-d&nbsp;%%i.&nbsp;&nbsp;-------------------&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
nslookup&nbsp;-d&nbsp;%%i.&nbsp;&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;正在测试&nbsp;%%i&nbsp;的路由情况。这个过程可能会需要10到20秒.<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
echo&nbsp;-------------------&nbsp;&nbsp;tracert&nbsp;-w&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;%%i.&nbsp;&nbsp;&nbsp;-------------------&gt;&gt;log.txt<br />
echo&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&gt;&gt;log.txt<br />
tracert&nbsp;-w&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;%%i.&nbsp;&gt;&gt;log.txt<br />
echo&nbsp;测试&nbsp;%%i&nbsp;域名完成。<br />
)<br />
echo&nbsp;测试完成时间&nbsp;%Date%&nbsp;%Time%&nbsp;&gt;&gt;log.txt<br />
</span></div>
<br />
敝帚自珍了。
<img src ="http://www.blogjava.net/emu/aggbug/295610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-09-18 20:05 <a href="http://www.blogjava.net/emu/articles/295610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>帮同事做了个网络情况监测脚本</title><link>http://www.blogjava.net/emu/articles/295607.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 18 Sep 2009 11:39:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/295607.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/295607.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/295607.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/295607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/295607.html</trackback:ping><description><![CDATA[需求主要是限时内连不通服务器就要发现并做相应的处理，不能死等链接超时。用图片实现：<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="background-color: #f5f5f5; color: #000000">&lt;!--</span><span style="background-color: #f5f5f5; color: #000000"><br />
</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;timeout</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">200</span><span style="background-color: #f5f5f5; color: #000000">;<br />
</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;checkConnection(url){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;i</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #0000ff">new</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;Image();<br />
&nbsp;&nbsp;&nbsp;&nbsp;i.timer</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">setTimeout(</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(i){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">return</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.onload</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">i.onerror</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #0000ff">null</span><span style="background-color: #f5f5f5; color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">output</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">).innerHTML</span><span style="background-color: #f5f5f5; color: #000000">+=</span><span style="background-color: #f5f5f5; color: #000000">i.src</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">无法在</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">timeout</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">毫秒内响应&lt;br&gt;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.src</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">about:blank</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(i),timeout);<br />
&nbsp;&nbsp;&nbsp;&nbsp;i.onerror</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">i.onload</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">return</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(i.timer);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">output</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">).innerHTML</span><span style="background-color: #f5f5f5; color: #000000">+=</span><span style="background-color: #f5f5f5; color: #000000">i.src</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">可以在</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">timeout</span><span style="background-color: #f5f5f5; color: #000000">+</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">毫秒内响应&lt;br&gt;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;i.src</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">url;<br />
}<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.cn</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.com</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.tw</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.hk</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.kr</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
checkConnection(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">http://www.google.au</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">)<br />
</span><span style="background-color: #f5f5f5; color: #008000">//</span><span style="background-color: #f5f5f5; color: #008000">--&gt;</span><span style="background-color: #f5f5f5; color: #008000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="output"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
<img src ="http://www.blogjava.net/emu/aggbug/295607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-09-18 19:39 <a href="http://www.blogjava.net/emu/articles/295607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>据说能在IE6下使用的base64图片</title><link>http://www.blogjava.net/emu/articles/292156.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 21 Aug 2009 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/292156.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/292156.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/292156.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/292156.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/292156.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="http://www.blogjava.net/Files/emu/test.7z"</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 />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<br />
好玩，这样就可以不去请求一些小图片了。<br />
<br />
<img alt="" src="mhtml:http://www.blogjava.net/Files/emu/test.7z!ie" /> <img alt="" src="mhtml:http://www.blogjava.net/Files/emu/test.7z!safari" /> <img src ="http://www.blogjava.net/emu/aggbug/292156.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2009-08-21 20:09 <a href="http://www.blogjava.net/emu/articles/292156.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转一篇月影未完成的精品文章：JavaScript与函数式编程</title><link>http://www.blogjava.net/emu/articles/138304.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 21 Aug 2007 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/138304.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/138304.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/138304.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/138304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/138304.html</trackback:ping><description><![CDATA[JavaScript与函数式编程<br>作者:月影<br><br>牢记：函数式编程不是用函数来编程！！！<br><br><br>23.4函数式编程&nbsp;<br>23.4.1&nbsp;什么是函数式编程<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;什么是函数式编程？如果你这么直白地询问，会发现它竟是一个不太容易解释的概念。许多在程序设计领域有着多年经验的老手，也无法很明白地说清楚函数式编程到底在研究些什么。函数式编程对于熟悉过程式程序设计的程序员来说的确是一个陌生的领域，闭包（closure）,延续（continuation）,和柯里化（currying）这些概念看起来是这么的陌生，同我们熟悉的if、else、while没有任何的相似之处。尽管函数式编程有着过程式无法比拟的优美的数学原型，但它又是那么的高深莫测，似乎只有拿着博士学位的人才玩得转它。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提示：这一节有点难，但它并不是掌握JavaScript所必需的技能，如果你不想用JavaScript来完成那些用Lisp来完成活儿，或者不想学函数式编程这种深奥的技巧，你完全可以跳过它们，进入下一章的旅程。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那么回到这个问题，什么是函数式编程？答案很长&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>函数式编程第一定律：函数是第一型。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这句话本身该如何理解？什么才是真正的第一型？我们看下面的数学概念：<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二元方程式&nbsp;F(x,&nbsp;y)&nbsp;=&nbsp;0，x,&nbsp;y&nbsp;是变量，&nbsp;把它写成&nbsp;y&nbsp;=&nbsp;f(x)，&nbsp;x是参数，y是返回值，f是由x到y的映射关系，被称为函数。如果又有，G(x,&nbsp;y,&nbsp;z)&nbsp;=&nbsp;0，或者记为&nbsp;z&nbsp;=&nbsp;g(x,&nbsp;y)，g是x、y到z的映射关系，也是函数。如果g的参数x,&nbsp;y又满足前面的关系y&nbsp;=&nbsp;f(x)，&nbsp;那么得到z&nbsp;=&nbsp;g(x,&nbsp;y)&nbsp;=&nbsp;g(x,&nbsp;f(x))，这里有两重含义，一是f(x)是x上的函数，又是函数g的参数，二是g是一个比f更高阶的函数。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样我们就用z&nbsp;=&nbsp;g(x,&nbsp;f(x))&nbsp;来表示方程F(x,&nbsp;y)&nbsp;=&nbsp;0和G(x,&nbsp;y,&nbsp;z)&nbsp;=&nbsp;0的关联解，它是一个迭代的函数。我们也可以用另一种形式来表示g，记z&nbsp;=&nbsp;g(x,&nbsp;y,&nbsp;f)，这样我们将函数g一般化为一个高阶函数。同前面相比，后面这种表示方式的好处是，它是一种更加泛化的模型，例如T(x,y)&nbsp;=&nbsp;0和G(x,y,z)&nbsp;=&nbsp;0的关联解，我们也可以用同样的形式来表示（只要令f=t）。在这种支持把问题的解转换成高阶函数迭代的语言体系中，函数就被称为&#8220;第一型&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaScript中的函数显然是&#8220;第一型&#8221;。下面就是一个典型的例子：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Array.prototype.each&nbsp;=&nbsp;function(closure)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this.length&nbsp;?&nbsp;[closure(this.slice(0,&nbsp;1))].concat(this.slice(1).each(closure))&nbsp;:&nbsp;[];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>这真是个神奇的魔法代码，它充分发挥了函数式的魅力，在整个代码中只有函数（function）和符号（Symbol）。它形式简洁并且威力无穷。<br>[1,2,3,4].each(function(x){return&nbsp;x&nbsp;*&nbsp;2})得到[2,4,6,8]，而[1,2,3,4].each(function(x){return&nbsp;x-1})得到[0,1,2,3]。<br><br>函数式和面向对象的本质都是&#8220;道法自然&#8221;。如果说，面向对象是一种真实世界的模拟的话，那么函数式就是数学世界的模拟，从某种意义上说，它的抽象程度比面向对象更高，因为数学系统本来就具有自然界所无法比拟的抽象性。<br><br>函数式编程第二定律：闭包是函数式编程的挚友。<br><br>闭包，在前面的章节中我们已经解释过了，它对于函数式编程非常重要。它最大的特点是不需要通过传递变量（符号）的方式就可以从内层直接访问外层的环境，这为多重嵌套下的函数式程序带来了极大的便利性，下面是一个例子：<br><br>(function&nbsp;outerFun(x)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;function&nbsp;innerFun(y)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;x&nbsp;*&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>})(2)(3);<br><br>函数式编程第三定律：函数可以被科里化（Currying）。<br><br>什么是Currying?&nbsp;它是一个有趣的概念。还是从数学开始：我们说，考虑一个三维空间方程&nbsp;F(x,&nbsp;y,&nbsp;z)&nbsp;=&nbsp;0，如果我们限定z&nbsp;=&nbsp;0，于是得到&nbsp;F(x,&nbsp;y,&nbsp;0)&nbsp;=&nbsp;0&nbsp;记为&nbsp;F&#8217;(x,&nbsp;y)。这里F&#8217;显然是一个新的方程式，它代表三维空间曲线F(x,&nbsp;y,&nbsp;z)在z&nbsp;=&nbsp;0平面上的两维投影。记y&nbsp;=&nbsp;f(x,&nbsp;z)，&nbsp;令z&nbsp;=&nbsp;0，&nbsp;得到&nbsp;y&nbsp;=&nbsp;f(x,&nbsp;0)，记为&nbsp;y&nbsp;=&nbsp;f&#8217;(x)，&nbsp;我们说函数f&#8217;是f的一个Currying解。<br>下面给出了JavaScript的Currying的例子：<br>function&nbsp;add(x,&nbsp;y)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(x!=null&nbsp;&amp;&amp;&nbsp;y!=null)&nbsp;return&nbsp;x&nbsp;+&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(x!=null&nbsp;&amp;&amp;&nbsp;y==null)&nbsp;return&nbsp;function(y)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;x&nbsp;+&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(x==null&nbsp;&amp;&amp;&nbsp;y!=null)&nbsp;return&nbsp;function(x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;x&nbsp;+&nbsp;y;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br>var&nbsp;a&nbsp;=&nbsp;add(3,&nbsp;4);<br>var&nbsp;b&nbsp;=&nbsp;add(2);<br>var&nbsp;c&nbsp;=&nbsp;b(10);<br><br>上面的例子中，b=add(2)得到的是一个add()的Currying函数，它是当x&nbsp;=&nbsp;2时，关于参数y的函数，注意到上面也用到了闭包的特性。<br><br>有趣的是，我们可以给任意函数一般化Currying，例如：<br><br>function&nbsp;Foo(x,&nbsp;y,&nbsp;z,&nbsp;w)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;args&nbsp;=&nbsp;arguments;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Foo.length&nbsp;&lt;&nbsp;args.length)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;function()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;<br>args.callee.apply(Array.apply([],&nbsp;args).concat(Array.apply([],&nbsp;arguments)));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;x&nbsp;+&nbsp;y&nbsp;&#8211;&nbsp;z&nbsp;*&nbsp;w;<br>}<br><br>函数式编程第四定律：延迟求值和延续。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TODO:这里再考虑下<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br>23.4.2&nbsp;函数式编程的优点<br><br>单元测试<br><br>严格函数式编程的每一个符号都是对直接量或者表达式结果的引用，没有函数产生副作用。因为从未在某个地方修改过值，也没有函数修改过在其作用域之外的量并被其他函数使用（如类成员或全局变量）。这意味着函数求值的结果只是其返回值，而惟一影响其返回值的就是函数的参数。<br>这是单元测试者的梦中仙境(wet&nbsp;dream)。对被测试程序中的每个函数，你只需在意其参数，而不必考虑函数调用顺序，不用谨慎地设置外部状态。所有要做的就是传递代表了边际情况的参数。如果程序中的每个函数都通过了单元测试，你就对这个软件的质量有了相当的自信。而命令式编程就不能这样乐观了，在&nbsp;Java&nbsp;或&nbsp;C++&nbsp;中只检查函数的返回值还不够——我们还必须验证这个函数可能修改了的外部状态。<br><br>调试<br><br>如果一个函数式程序不如你期望地运行，调试也是轻而易举。因为函数式程序的&nbsp;bug&nbsp;不依赖于执行前与其无关的代码路径，你遇到的问题就总是可以再现。在命令式程序中，bug&nbsp;时隐时现，因为在那里函数的功能依赖与其他函数的副作用，你可能会在和&nbsp;bug&nbsp;的产生无关的方向探寻很久，毫无收获。函数式程序就不是这样——如果一个函数的结果是错误的，那么无论之前你还执行过什么，这个函数总是返回相同的错误结果。<br>一旦你将那个问题再现出来，寻其根源将毫不费力，甚至会让你开心。中断那个程序的执行然后检查堆栈，和命令式编程一样，栈里每一次函数调用的参数都呈现在你眼前。但是在命令式程序中只有这些参数还不够，函数还依赖于成员变量，全局变量和类的状态（这反过来也依赖着这许多情况）。函数式程序里函数只依赖于它的参数，而那些信息就在你注视的目光下！还有，在命令式程序里，只检查一个函数的返回值不能够让你确信这个函数已经正常工作了，你还要去查看那个函数作用域外数十个对象的状态来确认。对函数式程序，你要做的所有事就是查看其返回值！<br>沿着堆栈检查函数的参数和返回值，只要发现一个不尽合理的结果就进入那个函数然后一步步跟踪下去，重复这一个过程，直到它让你发现了&nbsp;bug&nbsp;的生成点。<br><br>并行<br>函数式程序无需任何修改即可并行执行。不用担心死锁和临界区，因为你从未用锁！函数式程序里没有任何数据被同一线程修改两次，更不用说两个不同的线程了。这意味着可以不假思索地简单增加线程而不会引发折磨着并行应用程序的传统问题。<br>事实既然如此，为什么并不是所有人都在需要高度并行作业的应用中采用函数式程序？嗯，他们正在这样做。爱立信公司设计了一种叫作&nbsp;Erlang&nbsp;的函数式语言并将它使用在需要极高抗错性和可扩展性的电信交换机上。还有很多人也发现了&nbsp;Erlang&nbsp;的优势并开始使用它。我们谈论的是电信通信控制系统，这与设计华尔街的典型系统相比对可靠性和可升级性要求高了得多。实际上，Erlang&nbsp;系统并不可靠和易扩展，JavaScript&nbsp;才是。Erlang&nbsp;系统只是坚如磐石。<br>关于并行的故事还没有就此停止，即使你的程序本身就是单线程的，那么函数式程序的编译器仍然可以优化它使其运行于多个CPU上。请看下面这段代码：<br><br>String&nbsp;s1&nbsp;=&nbsp;somewhatLongOperation1();<br>String&nbsp;s2&nbsp;=&nbsp;somewhatLongOperation2();<br>String&nbsp;s3&nbsp;=&nbsp;concatenate(s1,&nbsp;s2);<br><br>在函数编程语言中，编译器会分析代码，辨认出潜在耗时的创建字符串s1和s2的函数，然后并行地运行它们。这在命令式语言中是不可能的，因为在那里，每个函数都有可能修改了函数作用域以外的状态并且其后续的函数又会依赖这些修改。在函数式语言里，自动分析函数并找出适合并行执行的候选函数简单的像自动进行的函数内联化！在这个意义上，函数式风格的程序是&#8220;不会过时的技术(future&nbsp;proof)&#8221;(即使不喜欢用行业术语，但这回要破例一次)。硬件厂商已经无法让CPU运行得更快了，于是他们增加了处理器核心的速度并因并行而获得了四倍的速度提升。当然他们也顺便忘记提及我们的多花的钱只是用在了解决平行问题的软件上了。一小部分的命令式软件和&nbsp;100%&nbsp;的函数式软件都可以直接并行运行于这些机器上。<br><br>代码热部署<br><br>过去要在&nbsp;Windows上安装更新，重启计算机是难免的，而且还不只一次，即使是安装了一个新版的媒体播放器。Windows&nbsp;XP&nbsp;大大改进了这一状态，但仍不理想（我今天工作时运行了Windows&nbsp;Update，现在一个烦人的图标总是显示在托盘里除非我重启一次机器）。Unix系统一直以来以更好的模式运行，安装更新时只需停止系统相关的组件，而不是整个操作系统。即使如此，对一个大规模的服务器应用这还是不能令人满意的。电信系统必须100%的时间运行，因为如果在系统更新时紧急拨号失效，就可能造成生命的损失。华尔街的公司也没有理由必须在周末停止服务以安装更新。<br>理想的情况是完全不停止系统任何组件来更新相关的代码。在命令式的世界里这是不可能的。考虑运行时上载一个Java类并重载一个新的定义，那么所有这个类的实例都将不可用，因为它们被保存的状态丢失了。我们可以着手写些繁琐的版本控制代码来解决这个问题，然后将这个类的所有实例序列化，再销毁这些实例，继而用这个类新的定义来重新创建这些实例，然后载入先前被序列化的数据并希望载入代码可以恰到地将这些数据移植到新的实例。在此之上，每次更新都要重新手动编写这些用来移植的代码，而且要相当谨慎地防止破坏对象间的相互关系。理论简单，但实践可不容易。<br>对函数式的程序，所有的状态即传递给函数的参数都被保存在了堆栈上，这使的热部署轻而易举！实际上，所有我们需要做的就是对工作中的代码和新版本的代码做一个差异比较，然后部署新代码。其他的工作将由一个语言工具自动完成！如果你认为这是个科幻故事，请再思考一下。多年来&nbsp;Erlang工程师一直更新着他们的运转着的系统，而无需中断它。<br><br>机器辅助的推理和优化<br><br>函数式语言的一个有趣的属性就是他们可以用数学方式推理。因为一种函数式语言只是一个形式系统的实现，所有在纸上完成的运算都可以应用于用这种语言书写的程序。编译器可以用数学理论将转换一段代码转换为等价的但却更高效的代码[7]。多年来关系数据库一直在进行着这类优化。没有理由不能把这一技术应用到常规软件上。<br>另外，还能使用这些技术来证明部分程序的正确，甚至可能创建工具来分析代码并为单元测试自动生成边界用例！对稳固的系统这种功能没有价值，但如果你要设计心房脉冲产生器&nbsp;(pace&nbsp;maker)或空中交通控制系统，这种工具就不可或缺。如果你编写的应用程序不是产业的核心任务，这类工具也是你强于竞争对手的杀手锏。<br><br>23.4.3&nbsp;函数式编程的缺点<br><br>闭包的副作用<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;非严格函数式编程中，闭包可以改写外部环境（在上一章中我们已经见过了），这带来了副作用，当这种副作用频繁出现并经常改变程序运行环境时，错误就变得难以跟踪。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TODO:<br><br>递归的形式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;尽管递归通常是一种最简洁的表达形式，但它确实不如非递归的循环来的直观。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TODO:<br><br>延迟取值的弱点<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//TODO:<br>
<img src ="http://www.blogjava.net/emu/aggbug/138304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-08-21 11:09 <a href="http://www.blogjava.net/emu/articles/138304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>脚本绑定回调</title><link>http://www.blogjava.net/emu/articles/129240.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 10 Jul 2007 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/129240.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/129240.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/129240.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/129240.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/129240.html</trackback:ping><description><![CDATA[如果不用xmlhttp方式获取json数据，一般我们最好用的方式是用script标签直接引用需要的脚本。但是不像xmlhttp可以很容易的把请求数据脚本和请求到的数据绑定到一起，script标签本身是无法获知自己获得了什么数据的，这个问题上一般使用的解决方案有：<br /><br />1 事先约定前后台接口。这样带来了很强的前后台偶合，后台程序需要知道前台想要做什么，接口很难一致化，一般不同的服务程序要使用不同的接口。而且如果需要同时并发调用同一个服务程序几次，那么一样无法解决接口冲突问题。<br /><br />2 前台动态生成回调接口后把接口名称传递给后台程序，后台程序根据接受到的接口名称动态生成回调接口，比如google就喜欢接受callback参数： <a href="http://www.google.com/reader/public/javascript/user/10949413115399023739/label/officialgoogleblogs?n=10&amp;callback=test">http://www.google.com/reader/public/javascript/user/10949413115399023739/label/officialgoogleblogs?n=10&amp;callback=test</a><br />饭否的接口也是这样的：<br /><a href="http://api.fanfou.com/statuses/user_timeline.json?callback=test">http://api.fanfou.com/statuses/user_timeline.json?callback=test</a><a href="http://api.fanfou.com/statuses/user_timeline.json?callback=test"><br /></a>这样也是一个无奈之举，一样避免不了的令人生厌的前后台偶合，只是改变了偶合的方式，前后台需要换一种方式的约定，而且如果要解决并行多个异步回调的接口冲突问题，就要动态的给每个回调函数创建一个个不同的名称，此外服务程序的输出不允许静态化，必须有接受参数和生成回调脚本的功能。<br /><br />假如我们想要像生成静态rss(<a href="http://api.fanfou.com/statuses/user_timeline.rss">http://api.fanfou.com/statuses/user_timeline.rss</a>)文件一样的生成静态的json（<a href="http://api.fanfou.com/statuses/user_timeline.json">http://api.fanfou.com/statuses/user_timeline.json</a>）又不希望或者不能使用xmlhttp来拉取json字符串，而想要用一致的callback接口来回传数据，那么怎么样才能解决接口冲突问题呢？事实上只有做到这点，json才能真正想xml一样变成一个纯粹的数据描述方式，摆脱对具体上下文程序的依赖，让一个数据自由的被不同目的的页面mashup。比如说，在一个页面上用json结合脚本技术，把来自不同网站的相同格式的json数据合并显示到一个页面上。<br /><br />emu在这个问题上花费过无数心血后最终还是放弃了，直到昨晚，舜子才终于有了突破：<br /><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"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br /></span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;loadjs(url,callback){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(window.ActiveXObject){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;df&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createDocumentFragment();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df.visitCountCallBack&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;callback<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;s&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df.appendChild(s)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.src</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">url;<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">IFRAME</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.callbackID&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">2</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.style.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">none</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.callback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">callback;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.src</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">javascript:\</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;visitCountCallBack(o){frameElement.callback(o)}</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">/</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;&lt;</span><span style="color: #000000; background-color: #f5f5f5">script&nbsp;src</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">+url+</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">'</span><span style="color: #000000; background-color: #f5f5f5">&gt;&lt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">/</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">""</span><span style="color: #000000; background-color: #f5f5f5"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.contentWindow.callback&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;callback<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;init(){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;spans&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementsByTagName(</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">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">;i</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">spans.length;i</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;id&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;spans[i].id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;url&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;callback&nbsp;</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">function</span><span style="color: #000000; background-color: #f5f5f5">(id){&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">function</span><span style="color: #000000; background-color: #f5f5f5">(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(id).innerHTML&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;data.visitcount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadjs(url,callback);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY&nbsp;</span><span style="color: #ff0000">onload</span><span style="color: #0000ff">="init()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />123456&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="123456"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />2543061&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="2543061"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />20050606&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="20050606"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span></div>
<br /><br />如果需要支持错误处理，就稍微麻烦一点了，emu的做法是这样的：&nbsp;
<p>&nbsp;</p>
<p>&nbsp;</p>
<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"><span style="color: #0000ff">&lt;</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">SCRIPT&nbsp;</span><span style="color: #ff0000">LANGUAGE</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br /></span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;isIE&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">!!</span><span style="color: #000000; background-color: #f5f5f5">window.ActiveXObject;<br /></span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;useFragment</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">false</span><span style="color: #000000; background-color: #f5f5f5">;<br /></span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;loadjs(url,callback,errcallback){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(isIE){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(useFragment){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;df&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createDocumentFragment();&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df.visitCountCallBack&nbsp;</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">function</span><span style="color: #000000; background-color: #f5f5f5">(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.onreadystatechange</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(data);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;s&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;df.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">SCRIPT</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df.appendChild(s);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.onreadystatechange</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(s.readyState</span><span style="color: #000000; background-color: #f5f5f5">==</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">loaded</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.onreadystatechange</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;df</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errcallback();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.src&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;url;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">new</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;ActiveXObject(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">htmlfile</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.open();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.parentWindow.visitCountCallBack</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">(i){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">function</span><span style="color: #000000; background-color: #f5f5f5">(d){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.parentWindow.errcallback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.parentWindow.errcallback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">(d){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.parentWindow.errcallback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;errcallback(d);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.write(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;script&nbsp;src=\</span><span style="color: #000000; background-color: #f5f5f5">""</span><span style="color: #000000; background-color: #f5f5f5">+url+</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">&gt;&lt;\/script&gt;&lt;script&nbsp;defer&gt;setTimeout(\</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">errcallback()\</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,0)&lt;\/script&gt;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(i)i.close();</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">如果数据被cache，运行到这一行的时候有可能回调已经完成,窗口已经关闭。</span><span style="color: #008000; background-color: #f5f5f5"><br /></span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff; background-color: #f5f5f5">else</span><span style="color: #000000; background-color: #f5f5f5">{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">IFRAME</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.style.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">none</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.callback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">(o){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback(o);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.contentWindow.callback</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #0000ff; background-color: #f5f5f5">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.src</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">about:blank</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.parentNode.removeChild(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</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">null</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.errcallback&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;errcallback;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i.src</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">javascript:\</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;visitCountCallBack(data){frameElement.callback(data)};</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">/</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;&lt;</span><span style="color: #000000; background-color: #f5f5f5">script&nbsp;src</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">+url+</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">'</span><span style="color: #000000; background-color: #f5f5f5">&gt;&lt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">/</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;&lt;</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #000000; background-color: #f5f5f5">setTimeout('frameElement.errcallback()',</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">)</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">/</span><span style="color: #000000; background-color: #f5f5f5">script</span><span style="color: #000000; background-color: #f5f5f5">&gt;</span><span style="color: #000000; background-color: #f5f5f5">\</span><span style="color: #000000; background-color: #f5f5f5">""</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br /></span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;init(){<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;spans&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.getElementsByTagName(</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">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">;i</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">spans.length;i</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;id&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;spans[i].id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;url&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">id;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;callback&nbsp;</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">function</span><span style="color: #000000; background-color: #f5f5f5">(id){&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">function</span><span style="color: #000000; background-color: #f5f5f5">(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(id).innerHTML&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;data.visitcount;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;errcallback&nbsp;</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">function</span><span style="color: #000000; background-color: #f5f5f5">(id){&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">function</span><span style="color: #000000; background-color: #f5f5f5">(){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(id).innerHTML&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">无法连接到服务器</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}(id);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loadjs(url,callback,errcallback);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HEAD</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">BODY&nbsp;</span><span style="color: #ff0000">onload</span><span style="color: #0000ff">="init()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />123456&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="123456"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />2543061&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="2543061"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />20050606&nbsp;的访问量：</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="20050606"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">BR</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<p><br /><br />在IE/FIREFOX/OPERA/SAFARI上运行通过。 <br /><br />这里有几点说明：IE其实也可以用iframe（试试强行给isIE变量赋false值），不过用iframe的缺点是phantom click（会发出一个页面跳转的小声音）和throbber of doom（应该是指小沙漏型的下载图标吧？）。<br /><br />用document fragment的好处是避免了IE7默认安全模式下面禁止ActiveX的问题。不过利用了IE的一个特点：document fragment不append到document的dom里面的时候，也可以拥有自己的脚本运行空间，可以用script标签发起请求。这样用document fragment就可以比iframe使用更少的客户端资源来完成操作。<br /><br />虽然多个版本的IE都支持这个特性，但是emu还是认为其他非IE浏览器的处理更为合理，为了防止将来万一IE fix了这个bug造成措手不及，emu准备了另外两个备用方案，一个是当useFragment被声明为false的情况下，可以用一个htmlfile的控件来代替（google在gmail中使用了这个控件，但是造成一些用户在抱怨IE7下面的安全提示）；另一个是如果不能用ActiveX，还可以走非IE浏览器的逻辑，用iframe来完成操作，但是耗费的客户端资源要稍微多一点。用iframe另外两个的缺点是phantom click（会发出一个页面跳转的小声音）和throbber of doom（应该是指小沙漏型的下载图标吧？）。针对具体的用户群的浏览器种类，上面几种方案不用全上，看需要了。<br /><br />firefox下面的script标签其实支持onerror事件（可以写在标签里面或者addEventListener上去），其他浏览器根据版本的不同对此有不同程度的支持，所以emu决定利用script标签可以堵塞页面运行过程的做法，script标签后面添加延迟的错误处理逻辑（在正确的情形下抢先清空掉iframe的内容来取消这个逻辑）。<br /><br /></p><img src ="http://www.blogjava.net/emu/aggbug/129240.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-07-10 10:07 <a href="http://www.blogjava.net/emu/articles/129240.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多年前原创的DHTML CHART</title><link>http://www.blogjava.net/emu/articles/95403.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 22 Jan 2007 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/95403.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/95403.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/95403.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/95403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/95403.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 多年前写这个代码的时候，网上还没有其他类似的跨浏览器chart实现。后来在国外网站上才开始出现了类似的代码。  &lt;HTML&gt;     &lt;HEAD&gt;     &lt;TITLE&gt;画图&lt;/TITLE&gt;     &lt;meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312"...&nbsp;&nbsp;<a href='http://www.blogjava.net/emu/articles/95403.html'>阅读全文</a><img src ="http://www.blogjava.net/emu/aggbug/95403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2007-01-22 20:08 <a href="http://www.blogjava.net/emu/articles/95403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>班车坏了回不了深圳了，多出两个钟头时间试试google map API</title><link>http://www.blogjava.net/emu/articles/73614.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sat, 07 Oct 2006 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/73614.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/73614.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/73614.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/73614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/73614.html</trackback:ping><description><![CDATA[
		<a href="http://www.google.com/apis/maps/documentation/">http://www.google.com/apis/maps/documentation/</a>
		<p> </p>
		<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">
				<span style="COLOR: #0000ff">&lt;!</span>
				<span style="COLOR: #ff00ff">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<br />  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">html </span>
				<span style="COLOR: #ff0000">xmlns</span>
				<span style="COLOR: #0000ff">="http://www.w3.org/1999/xhtml"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">head</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">meta </span>
				<span style="COLOR: #ff0000">http-equiv</span>
				<span style="COLOR: #0000ff">="content-type"</span>
				<span style="COLOR: #ff0000"> content</span>
				<span style="COLOR: #0000ff">="text/html; charset=utf-8"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">title</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">Google Maps JavaScript API Example</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">title</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">script </span>
				<span style="COLOR: #ff0000">src</span>
				<span style="COLOR: #0000ff">="http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;key=ABQIAAAAxrA94gZ785XDWg8yVU1bGhQAC-KcR38Hxz39NwHVLmhmQaohLhRz6lFUlG3EWQLboigkSIydWURdcw"</span>
				<span style="COLOR: #ff0000">
						<br />      type</span>
				<span style="COLOR: #0000ff">="text/javascript"</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 />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">script </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">="text/javascript"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />    </span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">&lt;![CDATA[</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> load() {<br />      </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (GBrowserIsCompatible()) {<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> map </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> GMap2(document.getElementById(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">map</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />        map.setCenter(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> GLatLng(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">37.4419</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">122.1419</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">), </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">13</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />      }<br />    }<br />    </span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">]]&gt;</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">script</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">head</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">body </span>
				<span style="COLOR: #ff0000">onload</span>
				<span style="COLOR: #0000ff">="load()"</span>
				<span style="COLOR: #ff0000"> onunload</span>
				<span style="COLOR: #0000ff">="GUnload()"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">div </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">="map"</span>
				<span style="COLOR: #ff0000"> style</span>
				<span style="COLOR: #0000ff">="width: 500px; height: 300px"</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">div</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">body</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">html</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
		<br />
		<div id="map" style="WIDTH: 500px; HEIGHT: 300px">
		</div>
		<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAxrA94gZ785XDWg8yVU1bGhQAC-KcR38Hxz39NwHVLmhmQaohLhRz6lFUlG3EWQLboigkSIydWURdcw" type="text/javascript">
		</script>
		<script type="text/javascript">
				<!--[CDATA[

    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
      }
    }
 window.onload=load
 window.onunload=GUnload

]]&gt;</SCRIPT></html>-->
		</script>
<img src ="http://www.blogjava.net/emu/aggbug/73614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-10-07 12:42 <a href="http://www.blogjava.net/emu/articles/73614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PJ共享的一段Firefox兼容代码</title><link>http://www.blogjava.net/emu/articles/69245.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 12 Sep 2006 13:23:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/69245.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/69245.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/69245.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/69245.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/69245.html</trackback:ping><description><![CDATA[
		<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">
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(window.Event){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 修正Event的DOM</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #008000">/*</span>
				<span style="COLOR: #008000">
						<br />                                IE5        MacIE5        Mozilla        Konqueror2.2        Opera5<br />    event                        yes        yes            yes            yes                    yes<br />    event.returnValue            yes        yes            no            no                    no<br />    event.cancelBubble            yes        yes            no            no                    no<br />    event.srcElement            yes        yes            no            no                    no<br />    event.fromElement            yes        yes            no            no                    no<br />    <br />    </span>
				<span style="COLOR: #008000">*/</span>
				<span style="COLOR: #000000">
						<br />    Event.prototype.__defineSetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">returnValue</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(b){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> </span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">b)</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.preventDefault();<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> b;<br />        });<br />    Event.prototype.__defineSetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">cancelBubble</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(b){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 设置或者检索当前事件句柄的层次冒泡</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(b)</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.stopPropagation();<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> b;<br />        });<br />    Event.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">srcElement</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.target;<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">(node.nodeType</span>
				<span style="COLOR: #000000">!=</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">)node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">node.parentNode;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> node;<br />        });<br />    Event.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">fromElement</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 返回鼠标移出的源节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> node;<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.type</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">mouseover</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.relatedTarget;<br />        </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.type</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">mouseout</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.target;<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">node)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">(node.nodeType</span>
				<span style="COLOR: #000000">!=</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">)node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">node.parentNode;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> node;<br />        });<br />    Event.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">toElement</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 返回鼠标移入的源节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> node;<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.type</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">mouseout</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.relatedTarget;<br />        </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.type</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">mouseover</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.target;<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">node)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">(node.nodeType</span>
				<span style="COLOR: #000000">!=</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">)node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">node.parentNode;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> node;<br />        });<br />    Event.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">offsetX</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.layerX;<br />        });<br />    Event.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">offsetY</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.layerY;<br />        });<br />    }<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(window.Document){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 修正Document的DOM</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #008000">/*</span>
				<span style="COLOR: #008000">
						<br />                                IE5        MacIE5        Mozilla        Konqueror2.2        Opera5<br />    document.documentElement    yes        yes            yes            yes                    no<br />    document.activeElement        yes        null        no            no                    no<br />    <br />    </span>
				<span style="COLOR: #008000">*/</span>
				<span style="COLOR: #000000">
						<br />    }<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(window.Node){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 修正Node的DOM</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #008000">/*</span>
				<span style="COLOR: #008000">
						<br />                                IE5        MacIE5        Mozilla        Konqueror2.2        Opera5<br />    Node.contains                yes        yes            no            no                    yes<br />    Node.replaceNode            yes        no            no            no                    no<br />    Node.removeNode                yes        no            no            no                    no<br />    Node.children                yes        yes            no            no                    no<br />    Node.hasChildNodes            yes        yes            yes            yes                    no<br />    Node.childNodes                yes        yes            yes            yes                    no<br />    Node.swapNode                yes        no            no            no                    no<br />    Node.currentStyle            yes        yes            no            no                    no<br />    <br />    </span>
				<span style="COLOR: #008000">*/</span>
				<span style="COLOR: #000000">
						<br />    Node.prototype.replaceNode</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(Node){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 替换指定节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.replaceChild(Node,</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        }<br />    Node.prototype.removeNode</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(removeChildren){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 删除指定节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(removeChildren)<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.removeChild(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000">{<br />            </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> range</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">document.createRange();<br />            range.selectNodeContents(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.replaceChild(range.extractContents(),</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />            }<br />        }<br />    Node.prototype.swapNode</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(Node){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 交换节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> nextSibling</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.nextSibling;<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> parentNode</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode;<br />        node.parentNode.replaceChild(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">,Node);<br />        parentNode.insertBefore(node,nextSibling);<br />        }<br />    }<br /></span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(window.HTMLElement){<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">all</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> a</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.getElementsByTagName(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">;<br />        a.tags</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sTagName){<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> node.getElementsByTagName(sTagName);<br />            }<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> a;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">parentElement</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">children</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> tmp</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">[];<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> j</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> n;<br />        </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.childNodes.length;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">){<br />            n</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.childNodes[i];<br />            </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(n.nodeType</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">){<br />                tmp[j</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">]</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">n;<br />                </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(n.name){<br />                    </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #000000">tmp[n.name])<br />                        tmp[n.name]</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">[];<br />                    tmp[n.name][tmp[n.name].length]</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">n;<br />                    }<br />                </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(n.id)<br />                    tmp[n.id]</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">n;<br />                }<br />            }<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> tmp;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">currentStyle</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument.defaultView.getComputedStyle(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">);<br />        });<br />    HTMLElement.prototype.__defineSetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">outerHTML</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sHTML){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> r</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument.createRange();<br />        r.setStartBefore(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> df</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">r.createContextualFragment(sHTML);<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.replaceChild(df,</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> sHTML;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">outerHTML</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> attr;<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> attrs</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.attributes;<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> str</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.tagName;<br />        </span>
				<span style="COLOR: #0000ff">for</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> i</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000">;i</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">attrs.length;i</span>
				<span style="COLOR: #000000">++</span>
				<span style="COLOR: #000000">){<br />            attr</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">attrs[i];<br />            </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(attr.specified)<br />                str</span>
				<span style="COLOR: #000000">+=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">attr.name</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">'+attr.value+'</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">';<br />            }<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #000000">!</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.canHaveChildren)<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> str</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> str</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.innerHTML</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.tagName</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">canHaveChildren</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">switch</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.tagName.toLowerCase()){<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">area</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">base</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">basefont</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">col</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">frame</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">hr</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">img</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">br</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">input</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">isindex</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">link</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">meta</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">param</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />                </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">;<br />            }<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">;<br />        });<br /> <br />    HTMLElement.prototype.__defineSetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">innerText</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sText){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> parsedText</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">document.createTextNode(sText);<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.innerHTML</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">parsedText;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> parsedText;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">innerText</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> r</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument.createRange();<br />        r.selectNodeContents(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> r.toString();<br />        });<br />    HTMLElement.prototype.__defineSetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">outerText</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sText){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> parsedText</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">document.createTextNode(sText);<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.outerHTML</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">parsedText;<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> parsedText;<br />        });<br />    HTMLElement.prototype.__defineGetter__(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">outerText</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> r</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument.createRange();<br />        r.selectNodeContents(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> r.toString();<br />        });<br />    HTMLElement.prototype.attachEvent</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sType,fHandler){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> shortTypeName</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sType.replace(</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">on</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">);<br />        fHandler._ieEmuEventHandler</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(e){<br />            window.event</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">e;<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> fHandler();<br />            }<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">);<br />        }<br />    HTMLElement.prototype.detachEvent</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sType,fHandler){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> shortTypeName</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sType.replace(</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">on</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">typeof</span>
				<span style="COLOR: #000000">(fHandler._ieEmuEventHandler)</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">function</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.removeEventListener(shortTypeName,fHandler,</span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">);<br />        }<br />    HTMLElement.prototype.contains</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(Node){</span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 是否包含某节点</span>
				<span style="COLOR: #008000">
						<br />
				</span>
				<span style="COLOR: #000000">        </span>
				<span style="COLOR: #0000ff">do</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(Node</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">)</span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">;<br />        </span>
				<span style="COLOR: #0000ff">while</span>
				<span style="COLOR: #000000">(Node</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">Node.parentNode);<br />        </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">;<br />        }<br />    HTMLElement.prototype.insertAdjacentElement</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(where,parsedNode){<br />        </span>
				<span style="COLOR: #0000ff">switch</span>
				<span style="COLOR: #000000">(where){<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">beforeBegin</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />                </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.insertBefore(parsedNode,</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />                </span>
				<span style="COLOR: #0000ff">break</span>
				<span style="COLOR: #000000">;<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">afterBegin</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />                </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.insertBefore(parsedNode,</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.firstChild);<br />                </span>
				<span style="COLOR: #0000ff">break</span>
				<span style="COLOR: #000000">;<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">beforeEnd</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />                </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.appendChild(parsedNode);<br />                </span>
				<span style="COLOR: #0000ff">break</span>
				<span style="COLOR: #000000">;<br />            </span>
				<span style="COLOR: #0000ff">case</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">afterEnd</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">:<br />                </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.nextSibling)<br />                    </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.insertBefore(parsedNode,</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.nextSibling);<br />                </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.parentNode.appendChild(parsedNode);<br />                </span>
				<span style="COLOR: #0000ff">break</span>
				<span style="COLOR: #000000">;<br />            }<br />        }<br />    HTMLElement.prototype.insertAdjacentHTML</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(where,htmlStr){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> r</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.ownerDocument.createRange();<br />        r.setStartBefore(</span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> parsedHTML</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">r.createContextualFragment(htmlStr);<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.insertAdjacentElement(where,parsedHTML);<br />        }<br />    HTMLElement.prototype.insertAdjacentText</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(where,txtStr){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> parsedText</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">document.createTextNode(txtStr);<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.insertAdjacentElement(where,parsedText);<br />        }<br />    HTMLElement.prototype.attachEvent</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sType,fHandler){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> shortTypeName</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sType.replace(</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">on</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">);<br />        fHandler._ieEmuEventHandler</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(e){<br />            window.event</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">e;<br />            </span>
				<span style="COLOR: #0000ff">return</span>
				<span style="COLOR: #000000"> fHandler();<br />            }<br />        </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.addEventListener(shortTypeName,fHandler._ieEmuEventHandler,</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">);<br />        }<br />    HTMLElement.prototype.detachEvent</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000">(sType,fHandler){<br />        </span>
				<span style="COLOR: #0000ff">var</span>
				<span style="COLOR: #000000"> shortTypeName</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">sType.replace(</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">on</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">""</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000">(</span>
				<span style="COLOR: #0000ff">typeof</span>
				<span style="COLOR: #000000">(fHandler._ieEmuEventHandler)</span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">function</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">)<br />            </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.removeEventListener(shortTypeName,fHandler._ieEmuEventHandler,</span>
				<span style="COLOR: #0000ff">false</span>
				<span style="COLOR: #000000">);<br />        </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">this</span>
				<span style="COLOR: #000000">.removeEventListener(shortTypeName,fHandler,</span>
				<span style="COLOR: #0000ff">true</span>
				<span style="COLOR: #000000">);<br />        }<br />    }<br /></span>
		</div>
<img src ="http://www.blogjava.net/emu/aggbug/69245.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-09-12 21:23 <a href="http://www.blogjava.net/emu/articles/69245.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]你的编程语言能干这个吗（一篇MAP/REDUCE的经典示范）</title><link>http://www.blogjava.net/emu/articles/62311.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 08 Aug 2006 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/62311.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/62311.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/62311.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/62311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/62311.html</trackback:ping><description><![CDATA[
		<div class="slug">
				<h1>
						<a href="http://www.joelonsoftware.com/items/2006/08/01.html">
								<font size="4">http://www.joelonsoftware.com/items/2006/08/01.html</font>
						</a>
				</h1>
				<h1>Can Your Programming Language Do This?</h1>
				<br />
				<h2>This item ran on the Joel on Software homepage on Tuesday, August 01, 2006</h2>
		</div>
		<p>One day, you're browsing through your code, and you notice two big blocks that look almost exactly the same. In fact, they're exactly the same, except that one block refers to "Spaghetti" and one block refers to "Chocolate Moose."</p>
		<pre>    // A trivial example:
    
    alert("I'd like some Spaghetti!");
    alert("I'd like some Chocolate Moose!");
</pre>
		<p>These examples happen to be in JavaScript, but even if you don't know JavaScript, you should be able to follow along.</p>
		<p>The repeated code looks wrong, of course, so you create a function:</p>
		<pre>    function SwedishChef( food )
    {
        alert("I'd like some " + food + "!");
    }
	
    SwedishChef("Spaghetti");
    SwedishChef("Chocolate Moose");
</pre>
		<p>OK, it's a trivial example, but you can imagine a more substantial example. This is better code for many reasons, all of which you've heard a million times. Maintainability, Readability, Abstraction = Good!</p>
		<p>Now you notice two other blocks of code which look almost the same, except that one of them keeps calling this function called BoomBoom and the other one keeps calling this function called PutInPot. Other than that, the code is pretty much the same.</p>
		<img src="http://www.blogjava.net/images/blogjava_net/emu/1359/o_01BorkBorkBork.png" />
		<br clear="all" />
		<pre>    alert("get the lobster");
    PutInPot("lobster");
    PutInPot("water");

    alert("get the chicken");
    BoomBoom("chicken");
    BoomBoom("coconut");
</pre>
		<p>Now you need a way to pass an argument to the function which itself is a function. This is an important capability, because it increases the chances that you'll be able to find common code that can be stashed away in a function.</p>
		<pre>    function Cook( i1, i2, f )
    {
        alert("get the " + i1);
        f(i1);
        f(i2);
    }

    Cook( "lobster", "water", PutInPot );
    Cook( "chicken", "coconut", BoomBoom );
</pre>
		<p>Look! We're passing in a function as an argument. </p>
		<p>Can your language do this?</p>
		<p>Wait... suppose you haven't already defined the functions PutInPot or BoomBoom. Wouldn't it be nice if you could just write them inline instead of declaring them elsewhere?</p>
		<pre>    Cook( "lobster", 
          "water", 
          function(x) { alert("pot " + x); }  );
    Cook( "chicken", 
          "coconut", 
          function(x) { alert("boom " + x); } );
</pre>
		<p>Jeez, that is handy. Notice that I'm creating a function there on the fly, not even bothering to name it, just picking it up by its ears and tossing it into a function.</p>
		<p>As soon as you start thinking in terms of anonymous functions as arguments, you might notice code all over the place that, say, does something to every element of an array.</p>
		<pre>    var a = [1,2,3];
	
    for (i=0; i&lt;a.length; i++)
    {
        a[i] = a[i] * 2;
    }
	
    for (i=0; i&lt;a.length; i++)
    {
        alert(a[i]);
    }
</pre>
		<p>Doing something to every element of an array is pretty common, and you can write a function that does it for you:</p>
		<pre>    function map(fn, a)
    {
        for (i = 0; i &lt; a.length; i++)
        {
            a[i] = fn(a[i]);
        }
    }
</pre>
		<p>Now you can rewrite the code above as:</p>
		<pre>    map( function(x){return x*2;}, a );
    map( alert, a );
</pre>
		<p>Another common thing with arrays is to combine all the values of the array in some way. </p>
		<pre>    function sum(a)
    {
        var s = 0;
        for (i = 0; i &lt; a.length; i++)
            s += a[i];
        return s;
    }
    
    function join(a)
    {
        var s = "";
        for (i = 0; i &lt; a.length; i++)
            s += a[i];
        return s;
    }
    
    alert(sum([1,2,3]));
    alert(join(["a","b","c"]));
</pre>
		<p>
				<strong>sum</strong> and <strong>join</strong> look so similar, you might want to abstract out their essence into a generic function that combines elements of an array into a single value:</p>
		<pre>    function reduce(fn, a, init)
    {
        var s = init;
        for (i = 0; i &lt; a.length; i++)
            s = fn( s, a[i] );
        return s;
    }
    
    function sum(a)
    {
        return reduce( function(a, b){ return a + b; }, 
                       a, 0 );
    }
    
    function join(a)
    {
        return reduce( function(a, b){ return a + b; }, 
                       a, "" );
    }

</pre>
		<p>Many older languages simply had no way to do this kind of stuff. Other languages let you do it, but it's hard (for example, C has function pointers, but you have to declare and define the function somewhere else). Object-oriented programming languages aren't completely convinced that you should be allowed to do anything with functions. </p>
		<p>Java required you to create a whole object with a single method called a functor if you wanted to treat a function like a first class object. Combine that with the fact that many OO languages want you to create a whole file for each class, and it gets really klunky fast. If your programming language requires you to use functors, you're not getting all the benefits of a modern programming environment. See if you can get some of your money back.</p>
		<p>How much benefit do you really get out of writting itty bitty functions that do nothing more than iterate through an array doing something to each element?</p>
		<p>Well, let's go back to that <strong>map</strong> function. When you need to do something to every element in an array in turn, the truth is, it probably doesn't matter what order you do them in. You can run through the array forward or backwards and get the same result, right? In fact, if you have two CPUs handy, maybe you could write some code to have each CPU do half of the elements, and suddenly <strong>map</strong> is twice as fast.</p>
		<p>Or maybe, just hypothetically, you have hundreds of thousands of servers in several data centers around the world, and you have a really big array, containing, let's say, again, just hypothetically, the entire contents of the internet. Now you can run <strong>map</strong> on thousands of computers, each of which will attack a tiny part of the problem.</p>
		<p>So now, for example, writing some really fast code to search the entire contents of the internet is as simple as calling the <strong>map</strong> function with a basic string searcher as an argument. </p>
		<p>The really interesting thing I want you to notice, here, is that as soon as you think of <strong>map</strong> and <strong>reduce</strong> as functions that everybody can use, and they use them, you only have to get one supergenius to write the hard code to run <strong>map</strong> and <strong>reduce</strong> on a global massively parallel array of computers, and all the old code that used to work fine when you just ran a loop still works only it's a zillion times faster which means it can be used to tackle huge problems in an instant.</p>
		<p>Lemme repeat that. By abstracting away the very concept of looping, you can implement looping any way you want, including implementing it in a way that scales nicely with extra hardware. </p>
		<p>And now you understand something I wrote a while ago where I <a href="http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html">complained about CS students who are never taught anything but Java</a>:</p>
		<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
				<p>Without understanding functional programming, you can't invent <a href="http://labs.google.com/papers/mapreduce.html">MapReduce</a>, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet^H^H^H^H^H^H the world's largest massively parallel supercomputer. I don't think Microsoft completely understands just how far behind they are on that wave.</p>
		</blockquote>
		<p>Ok. I hope you're convinced, by now, that programming languages with first-class functions let you find more opportunities for abstraction, which means your code is smaller, tighter, more reusable, and more scalable. Lots of Google applications use MapReduce and they all benefit whenever someone optimizes it or fixes bugs.</p>
		<p>And now I'm going to get a little bit mushy, and argue that the most productive programming environments are the ones that let you work at <em>different levels of abstraction</em>. Crappy old FORTRAN really didn't even let you write functions. C had function pointers, but they were ugleeeeee and not anonymous and had to be implemented somewhere else than where you were using them. Java made you use functors, which is even uglier. As Steve Yegge points out, Java is the <a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html">Kingdom of Nouns</a>.</p>
		<p>
				<strong>
						<font size="2">Correction: The last time I used FORTRAN was 27 years ago. Apparently it got functions. I must have been thinking about GW-BASIC.</font>
				</strong>
		</p>
		<br />
		<br />
		<br />
		<br />
		<b>About the Author:</b> I'm your host, Joel Spolsky, a software developer in New York City. Since 2000, I've been writing about software development, management, business, and the Internet on this site. For my day job, I run <a href="http://www.fogcreek.com/">Fog Creek Software</a>, makers of <a href="http://www.fogcreek.com/FogBugz">FogBugz</a> - the smart bug tracking software with the stupid name, and <a href="https://www.copilot.com/">Fog Creek Copilot</a> - the easiest way to provide remote tech support over the Internet, with nothing to install or configure. <br /><img src ="http://www.blogjava.net/emu/aggbug/62311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-08-08 10:44 <a href="http://www.blogjava.net/emu/articles/62311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>checkbox树</title><link>http://www.blogjava.net/emu/articles/61019.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 31 Jul 2006 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/61019.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/61019.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/61019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/61019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/61019.html</trackback:ping><description><![CDATA[
		<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">
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HTML</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HEAD</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">TITLE</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">   emu's   test   of   simple   tree</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">TITLE</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />  </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">SCRIPT   </span>
				<span style="COLOR: #ff0000">LANGUAGE</span>
				<span style="COLOR: #0000ff">="JavaScript"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />  </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   checkSelect(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   elm   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   event.srcElement.parentNode;<br />        checkChildrenRecurve(elm);<br />        checkRootRecurve(document.getElementById(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">root</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />    }<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   checkChildrenRecurve(elm){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   li   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   elm.parentNode;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   ul   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   li.lastChild;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (ul.tagName   </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">UL</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)   </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   lis   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   ul.children;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">lis.length;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<br />            lis[i].firstChild.firstChild.checked</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">elm.firstChild.checked;<br />            checkChildrenRecurve(lis[i].firstChild)<br />        }<br />    }<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   checkRootRecurve(ul){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (ul.tagName   </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">UL</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)   {<br />            ul.parentNode.firstChild.firstChild.allChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   ul.parentNode.firstChild.firstChild.checked;<br />            ul.parentNode.firstChild.firstChild.allUnChecked   </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">ul.parentNode.firstChild.firstChild.checked;<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        }<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   lis   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   ul.children;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   allChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   allUnChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">lis.length;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<br />            checkRootRecurve(lis[i].lastChild);<br />            allChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   allChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   lis[i].firstChild.firstChild.checked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   lis[i].firstChild.firstChild.allChecked;<br />            allUnChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   allUnChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">lis[i].firstChild.firstChild.checked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;&amp;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   lis[i].firstChild.firstChild.allUnChecked;<br />        }<br />        ul.parentNode.firstChild.firstChild.allChecked</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">allChecked;<br />        ul.parentNode.firstChild.firstChild.allUnChecked</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">allUnChecked;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (allChecked   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">||</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   allUnChecked){<br />            ul.parentNode.firstChild.firstChild.checked</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">allChecked;<br />            ul.parentNode.firstChild.firstChild.indeterminate</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />            ul.parentNode.firstChild.childStatus</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        }</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />            ul.parentNode.firstChild.firstChild.indeterminate</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />            ul.parentNode.firstChild.childStatus</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />            ul.parentNode.firstChild.firstChild.checked</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        }<br />    }<br /><br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   init(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   elms   </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   document.getElementsByTagName(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">INPUT</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   (</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">   i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">elms.length;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />            elms[i].onclick</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">checkSelect;<br />    }<br /><br />    </span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">SCRIPT</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HEAD</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">BODY   </span>
				<span style="COLOR: #ff0000">onload</span>
				<span style="COLOR: #0000ff">="init()"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">div</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL   </span>
				<span style="COLOR: #ff0000">id</span>
				<span style="COLOR: #0000ff">=root</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                    </span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">LI</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;&lt;</span>
				<span style="COLOR: #800000">input   </span>
				<span style="COLOR: #ff0000">type</span>
				<span style="COLOR: #0000ff">=checkbox</span>
				<span style="COLOR: #0000ff">&gt;&lt;/</span>
				<span style="COLOR: #800000">span</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />                </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />            </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />        </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">UL</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />    </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">div</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">BODY</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HTML</span>
				<span style="COLOR: #0000ff">&gt;</span>
		</div>
<img src ="http://www.blogjava.net/emu/aggbug/61019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-07-31 14:57 <a href="http://www.blogjava.net/emu/articles/61019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写了一个简单的host管理器</title><link>http://www.blogjava.net/emu/articles/56873.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 05 Jul 2006 15:57:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/56873.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/56873.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/56873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/56873.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/56873.html</trackback:ping><description><![CDATA[点<a href="/Files/emu/HostManager.zip">这里</a>下载。<img src ="http://www.blogjava.net/emu/aggbug/56873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-07-05 23:57 <a href="http://www.blogjava.net/emu/articles/56873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE的古怪特性</title><link>http://www.blogjava.net/emu/articles/56736.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 05 Jul 2006 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/56736.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/56736.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/56736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/56736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/56736.html</trackback:ping><description><![CDATA[
		<p>时间线是什么怪东东</p>
		<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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HTML </span>
				<span style="COLOR: #ff0000">XMLNS:t </span>
				<span style="COLOR: #0000ff">="urn:schemas-microsoft-com:time"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">TITLE</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">t:ANIMATE Demo</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;?</span>
				<span style="COLOR: #ff00ff">IMPORT namespace="t" implementation="#default#time2"</span>
				<span style="COLOR: #0000ff">?&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">DIV </span>
				<span style="COLOR: #ff0000">ID</span>
				<span style="COLOR: #0000ff">="oDIV"</span>
				<span style="COLOR: #ff0000"> STYLE</span>
				<span style="COLOR: #0000ff">="position:absolute; top:100px; left:50px; width:100px;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />height:50px; border:solid black 1px; text-align:center;"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">Moving DIV!</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">t:ANIMATE </span>
				<span style="COLOR: #ff0000">targetElement</span>
				<span style="COLOR: #0000ff">="oDIV"</span>
				<span style="COLOR: #ff0000"> attributeName</span>
				<span style="COLOR: #0000ff">="left"</span>
				<span style="COLOR: #ff0000"> to</span>
				<span style="COLOR: #0000ff">="200"</span>
				<span style="COLOR: #ff0000"> dur</span>
				<span style="COLOR: #0000ff">="5"</span>
				<span style="COLOR: #ff0000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />fill</span>
				<span style="COLOR: #0000ff">="hold"</span>
				<span style="COLOR: #0000ff">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</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.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HTML</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000"> </span>
		</div>
<img src ="http://www.blogjava.net/emu/aggbug/56736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-07-05 14:27 <a href="http://www.blogjava.net/emu/articles/56736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UserData 管理器和IE一个相关的bug</title><link>http://www.blogjava.net/emu/articles/39485.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 05 Apr 2006 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/39485.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/39485.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/39485.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/39485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/39485.html</trackback:ping><description><![CDATA[一个简单的UserData管理器，可以save、load和delete数据。<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"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> UserData manager </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Generator"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="EditPlus"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Author"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="emu"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Keywords"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="IE USER DATA manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Description"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="UserData manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT </span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />document.documentElement.addBehavior(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">#default#userdata</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  saveUserData(key, value){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> {<br />    load(key);<br />    setAttribute(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, value);<br />    save(key);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</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">value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message)}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> loadUserData(key){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />    load(key);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</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">value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  deleteUserData(key){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />      load(key);<br />    expires </span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">315532799000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toUTCString();<br />    save(key);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);}<br />} <br /><br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">hello world !</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />deleteUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br /><br /></span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span></div><p><br />注意这一行： expires = new Date(315532799000).toUTCString();<br /><br />315532799000 是格林威治时间1979年12月31日23时59分59秒。这是删除UserData的最靠前的一个有效expires时间了，再往前一毫秒，expires = new Date(315532798999).toUTCString(); 就删不掉userdata了，可以认为是IE的一个bug。所以我们删除userdata的时候不能像删除cookie一样，用new Date(0)来制造过期时间了。<br /><br />一个等效的写法是 expires = new Date(1980,0,1,7,59,59).toUTCString();  用toGMTString也一样。 <br /><br />如果需要按照user来管理userdata，可以这样：<br /></p><p> </p><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"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> UserData manager </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Generator"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="EditPlus"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Author"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="emu"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Keywords"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="IE USER DATA manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Description"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="UserData manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT </span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />document.documentElement.addBehavior(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">#default#userdata</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  saveUserData(user,key,value){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> {<br />    load(user);<br />    setAttribute(key, value);<br />    save(user);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</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">value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message)}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> loadUserData(user,key){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />    load(user);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> getAttribute(key);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  deleteUserData(user){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />      load(user);<br />    expires </span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">315532799000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toGMTString();<br />    save(user);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);}<br />} <br /><br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">Name</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">emu !</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">Name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">blog</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">http://www.blogjava.net/emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">blog</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br /><br /></span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span></div><br /><br />兼容上面两种的写法是这样：<br /><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"><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> UserData manager </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">TITLE</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Generator"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="EditPlus"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Author"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="emu"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Keywords"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="IE USER DATA manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">META </span><span style="COLOR: #ff0000">NAME</span><span style="COLOR: #0000ff">="Description"</span><span style="COLOR: #ff0000"> CONTENT</span><span style="COLOR: #0000ff">="UserData manager"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">SCRIPT </span><span style="COLOR: #ff0000">LANGUAGE</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />document.documentElement.addBehavior(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">#default#userdata</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  saveUserData(user,key,value){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">value){<br />        value </span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> key;key</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">user;user</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">defaultUser</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br />    }<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> {<br />    load(user);<br />    expires </span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date()</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">86400000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)).toGMTString();<br />    setAttribute(key, value);<br />    save(user);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</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">value</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex)}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> loadUserData(user,key){<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">key){<br />        key</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">user;user</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">defaultUser</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />    }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />    load(user);<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> getAttribute(key);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;}<br />}<br /><br /></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">  deleteUserData(user){<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex; <br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">user)user</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">defaultUser</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />    </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">with</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(document.documentElement)</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />      load(user);<br />    expires </span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> Date()</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">-</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">86400000</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toGMTString();<br />    save(user);<br />  }<br />  </span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (ex){alert(ex.message);}<br />} <br /><br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">Name</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">emu !</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">Name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />deleteUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">Name</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">blog</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">http://www.blogjava.net/emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">blog</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />deleteUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu</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">blog</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br /><br />saveUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu_articles</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">http://www.blogjava.net/emu/category/1383.html</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu_articles</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br />deleteUserData()<br />alert(loadUserData(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu_articles</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<br /></span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HTML</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span></div><img src ="http://www.blogjava.net/emu/aggbug/39485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-04-05 22:09 <a href="http://www.blogjava.net/emu/articles/39485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使firefox对xml的处理兼容IE的节点处理方法</title><link>http://www.blogjava.net/emu/articles/32699.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 27 Feb 2006 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/32699.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/32699.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/32699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/32699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/32699.html</trackback:ping><description><![CDATA[
		<p> </p>
		<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">
				<span style="COLOR: #0000ff">&lt;!</span>
				<span style="COLOR: #ff00ff">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HTML</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">HEAD</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">TITLE</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000"> 使firefox对xml的处理兼容IE的selectSingleNode selectNodes方法 </span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">TITLE</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">META </span>
				<span style="COLOR: #ff0000">NAME</span>
				<span style="COLOR: #0000ff">="Author"</span>
				<span style="COLOR: #ff0000"> CONTENT</span>
				<span style="COLOR: #0000ff">="emu"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">META </span>
				<span style="COLOR: #ff0000">NAME</span>
				<span style="COLOR: #0000ff">="Keywords"</span>
				<span style="COLOR: #ff0000"> CONTENT</span>
				<span style="COLOR: #0000ff">="firefox IE selectSingleNode selectNodes"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">META </span>
				<span style="COLOR: #ff0000">NAME</span>
				<span style="COLOR: #0000ff">="Description"</span>
				<span style="COLOR: #ff0000"> CONTENT</span>
				<span style="COLOR: #0000ff">="使firefox可以支持selectSingleNode selectNodes方法"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">SCRIPT </span>
				<span style="COLOR: #ff0000">LANGUAGE</span>
				<span style="COLOR: #0000ff">="JavaScript"</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> isIE </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">document.all;<br /><br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> parseXML(st){<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(isIE){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> result </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ActiveXObject(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">microsoft.XMLDOM</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />        result.loadXML(st);<br />    }</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> parser </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> DOMParser();<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> result </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> parser.parseFromString(st, </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text/xml</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />    }<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> result;<br />}<br /><br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">isIE){<br />    </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> ex;<br />    XMLDocument.prototype.__proto__.__defineGetter__(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">xml</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> XMLSerializer().serializeToString(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />        }</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(ex){<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> d </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> document.createElement(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">div</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />            d.appendChild(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.cloneNode(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> d.innerHTML;<br />        }<br />    });<br />    Element.prototype.__proto__.__defineGetter__(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">xml</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">try</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> XMLSerializer().serializeToString(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />        }</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">catch</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(ex){<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> d </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> document.createElement(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">div</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />            d.appendChild(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.cloneNode(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">));<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> d.innerHTML;<br />        }<br />    });<br />    XMLDocument.prototype.__proto__.__defineGetter__(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.firstChild.textContent<br />    });<br />    Element.prototype.__proto__.__defineGetter__(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">text</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.textContent<br />    });<br /><br /><br /><br /><br />    XMLDocument.prototype.selectSingleNode</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Element.prototype.selectSingleNode</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(xpath){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.selectNodes(xpath)<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">x </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">||</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.length</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">1</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x[</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">];<br />    }<br />    XMLDocument.prototype.selectNodes</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Element.prototype.selectNodes</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(xpath){<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> xpe </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> XPathEvaluator();<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> nsResolver </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> xpe.createNSResolver(</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.ownerDocument </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />            </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.documentElement : </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.ownerDocument.documentElement);<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> result </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> xpe.evaluate(xpath, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, nsResolver, </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">, </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> found </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> [];<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> res;<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">while</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (res </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> result.iterateNext())<br />            found.push(res);<br />        </span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> found;<br />    }<br />}<br /><br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> parseXML(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;people&gt;  &lt;person first-name=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">eric\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> middle-initial=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">H\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> last-name=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">jung\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;    &lt;address street=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">321</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> south st\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> city=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">denver\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> state=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">co\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> country=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">usa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/&gt;    &lt;address street=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">123</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> main st\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> city=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">arlington\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> state=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">ma\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> country=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">usa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/&gt;  &lt;/person&gt;  &lt;person first-name=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">jed\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> last-name=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">brown\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;    &lt;address street=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">321</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> north st\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> city=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">atlanta\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> state=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">ga\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> country=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">usa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/&gt;    &lt;address street=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">123</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> west st\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> city=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">seattle\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> state=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">wa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> country=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">usa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/&gt;    &lt;address street=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">321</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> south avenue\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> city=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">denver\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> state=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">co\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> country=\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">usa\</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/&gt;  &lt;/person&gt;&lt;/people&gt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /><br />alert(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">搜索所有人的姓氏（last-name）</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> results </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.selectNodes(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">//person/@last-name</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">; i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">results.length;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />  alert(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">Person #</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"> i </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"> has the last name </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"> results[i].nodeValue);<br /><br />alert(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">搜索第二个人</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /></span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> IE是以0为下标基数的，而不是1</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.all)<br />    results </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.selectSingleNode(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/people/person[2]</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">
						<br />    results </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.selectSingleNode(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/people/person[1]</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />alert(results.xml)<br /><br />alert(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">获得住址在donver街上的人</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />results </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.selectNodes(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">//person[address/@city='denver']</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> (</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">; i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">results.length;i</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)alert(results[i].xml)<br /><br /></span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">!</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.all){<br />    </span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"> 获得所有街名中带south的地址</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">    results </span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"> x.selectNodes(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">//address[contains(@street, 'south')]</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br />    alert(results[</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">].xml);<br />}</span>
				<span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br />    alert(</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">IE不支持 //address[contains(@street, 'south')] 这种查询方式</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span>
				<span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br />}<br /></span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span>
				<span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">SCRIPT</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HEAD</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;</span>
				<span style="COLOR: #800000">BODY</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">BODY</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<span style="COLOR: #0000ff">&lt;/</span>
				<span style="COLOR: #800000">HTML</span>
				<span style="COLOR: #0000ff">&gt;</span>
				<span style="COLOR: #000000">
						<br />
				</span>
		</div>
		<br />例子引自 <a href="http://kb.mozillazine.org/XPath">http://kb.mozillazine.org/XPath</a> 。从例子可以看到，IE对xpath的支持还是有限度的。<img src ="http://www.blogjava.net/emu/aggbug/32699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-02-27 17:18 <a href="http://www.blogjava.net/emu/articles/32699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emu的简繁互转脚本</title><link>http://www.blogjava.net/emu/articles/31798.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 21 Feb 2006 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/31798.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/31798.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/31798.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/31798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/31798.html</trackback:ping><description><![CDATA[就象秋水很久以前就指出的，简繁体字本来就没有一一对应的关系。比如发、發、髮，线、綫、缐、線，所以wps和word都提供了按词转换的功能。不过简繁对应词库一时也不好找，还是做个最简单的字典转换程序把：<BR><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"><SPAN style="COLOR: #0000ff">&lt;!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">HTML</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">HEAD</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">TITLE</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;emu的简繁互转脚本&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">TITLE</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">META&nbsp;</SPAN><SPAN style="COLOR: #ff0000">NAME</SPAN><SPAN style="COLOR: #0000ff">="Author"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;CONTENT</SPAN><SPAN style="COLOR: #0000ff">="emu"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">HEAD</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">BODY</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">SCRIPT&nbsp;</SPAN><SPAN style="COLOR: #ff0000">LANGUAGE</SPAN><SPAN style="COLOR: #0000ff">="JavaScript"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;s1</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">亸刬勚叆叇唝唡啰啴垯垱塆壸婳屃峃峣崄嵚庼彟慭挜挦旸昽梼梾槚沨沵浉浐浕涢溇滪狝玙玚玱珰琎瘆皑蔼碍爱袄奥坝罢摆败颁办绊帮绑镑谤剥眬饱宝报鲍辈贝钡狈备惫绷笔毕毙币闭边编贬变辩辫标鳖别瘪濒滨宾摈饼并拨钵铂驳卜补财参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤硁硙硚场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑蹿窜错达带贷祎担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔颠点垫电淀钓调谍叠秾钉顶锭订丢东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺堕鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞诽废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗镐搁鸽阁铬个给筜箓龚宫巩贡钩沟构购够蛊顾剐挂关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉号阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥迹讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧将浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较阶节杰洁结诫届紧锦仅谨进晋烬尽劲荆茎鲸惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥纮纴纻纼绖绤绬绹缊缐缞馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历翙翚沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅幂绵缅庙灭悯闽鸣铭谬腘谋亩钠纳难挠脑恼闹馁内拟腻撵捻酿鸟聂啮镊镍柠狞宁臜拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞抛赔喷鹏骗飘频贫苹凭评泼颇扑铺仆朴谱栖凄脐齐骑岂启气弃讫荙牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲寝轻氢倾顷请庆琼穷趋区躯驱萚龋颧权劝却鹊确让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛叁伞丧骚扫涩杀纱筛晒删闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势适释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽随绥岁孙损笋缩琐锁獭挞态摊贪瘫滩坛谭谈叹汤烫涛绦讨腾誊锑题体屉条贴铁厅听烃铜统头秃图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网螀韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝卧呜钨乌污诬无芜吴坞雾务误锡牺蟏袭习铣戏细虾辖峡侠狭厦吓锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧嚣销晓袆啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许叙绪续轩悬袯裈选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶襕摇尧遥窑谣药爷页业叶医铱颐遗仪蚁艺亿忆义诣议谊译异绎荫阴银饮隐觃觍樱婴鹰应缨莹萤营荧蝇赢颖哟拥佣痈踊咏涌优忧邮铀犹诱舆鱼渔娱与屿语吁御狱誉詟预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣责择则泽贼赠扎札轧铡闸栅诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰争帧郑证织职执纸挚掷帜质滞钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑讱讻诇诐诪谞驻专砖转赚桩庄装妆壮状锥赘坠缀谆着浊兹资渍踪综总纵邹诅组钻豮亘鼗芈啬厍厣厮靥赝匦匮赜刭刿剀伛伥伧伫侪侬俦俨俪俣偾偬偻傥傧傩佥籴黉冁凫兖衮亵脔禀贠赑赒赗赟赪冢讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卺陉陧邝邬邺跶郏郐郄郓郦刍奂劢勐凼巯垩圹坜坂垅垆垭垲垧垴埘埚埙埯埝塬艹芗苈苋苌苁苎茏苘茑茔茕荛荜荞荟荠荦荥荨荩荬荪荭荮莳莴莜莅莶莸莺莼萦蒇蒉蒌蓦蓠蓥蓣蔹蔺轪辀辌辒蕲薮藓藁奁尴扪抟挢掴掼揸揿摅撄撷撸撺叽呒呓呖呗呙吣咔咛咝咴哒哓哔哕哌哙哜咤哝唛唠唢唣啧啭唿喽喾嗫嗬嗳辔嘤噜噼嚯囵帏帱帻帼酦幞岖岘岙岚岽峄峤峥崂崃嵘嵛嵝嵴巅徕犭犷犸狍狯狲猃鉅猡猕猬饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庑赓廪忏怃怄忾怅怆怿恸恹恻恺恽悭惬愠愦憷懔闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬沣沩泷泸泺泾浃浈浍浏浒浔涞涠渎渑渖渌溆滟滠滢滗潆潇漤潋潴濑灏骞迩迳逦屦弪妩妪妫姗娅娆娈娲娴婵媪嫒嫔嫱嬷驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺玑玮珏珑珉顼玺珲琏钑钖钘铏铓铔铚铦铻锜锠瑷璎璇瓒韪韫韬杩枥枧枨枞枭栉栊栌栀栎柽桠桡桢桤桦桧栾桊棂椟椠锧锳锽镃镈镋镕镚镠镮镴镵椤椁榄榇榈榉槟槠樯橥橹橼檐檩殁殇殒殓殚殡轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋闬闿阇阓阘阛辍辎辏辘辚戋戗戬瓯昙晔晖暧贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑犟牦毵氇氩氲牍肷胧胨胪胫脍脶腌腼腽腭膑欤飑飒飓飕飙飚毂齑斓炀炜炖炝烨焖煳煅煺熘焘祢祯禅韨怼悫愍懑戆沓泶矶砀砗砜砺砻硖硗碛碜碹磙龛眍眦睐睑畲罴羁钆钇钋钊钌钍钏钐钔钗钕钚钛钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪颋颎颒颕颙颣飏飐飔飖飗铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺稆饤饦饳饸饹饻饾馂馃馉穑鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疖疠疬疴疱痖痨痫瘅瘗瘘馌馎瘿瘾癞癫癯窦窭裆裢裣裥褛褴襁皲耢耧聍聩顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虬虮虿蚬蚝蛎蛏蛱蛲蛳蛴蝈蝾蝼螨驲骃骉骍骎骔骕骙骦罂笃笕笾筚筝箦箧箨箪箫篑簖籁舣舻袅羟籼粝粜糁糇絷麸趱酰酽酾鹾趸跄跖跞跷跸跹跻踬踯蹑蹒蹰躏躜觞觯靓雳霁霭龀龃龅龆龇龈龉龊龌黾鼋鼍隽雠銮錾鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鱽鱾鲀鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢鞑鞒鞯鞴鹘髅髋髌魇魉飨餍鬓黩黪鼹齄鳣鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹯鹲鹴黡鼌龁龂</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<BR></SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;s2</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">嚲剗勩靉靆嗊啢囉嘽墶壋壪壼嫿屭嶨嶢嶮嶔廎彠憖掗撏暘曨檮棶檟渢濔溮滻濜溳漊澦獮璵瑒瑲璫璡瘮皚藹礙愛襖奧壩罷擺敗頒辦絆幫綁鎊謗剝矓飽寶報鮑輩貝鋇狽備憊繃筆畢斃幣閉邊編貶變辯辮標鱉別癟瀕濱賓擯餅並撥缽鉑駁蔔補財參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟產闡顫硜磑礄場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊躥竄錯達帶貸禕擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締顛點墊電澱釣調諜疊穠釘頂錠訂丟東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪墮鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛誹廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗鎬擱鴿閣鉻個給簹籙龔宮鞏貢鉤溝構購夠蠱顧剮掛關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢號閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴匯諱誨繪葷渾夥獲貨禍擊機積饑跡譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗將漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較階節傑潔結誡屆緊錦僅謹進晉燼盡勁荊莖鯨驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺紘紝紵紖絰綌緓綯縕線縗饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆翽翬瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麼黴沒鎂門悶們錳夢謎彌覓冪綿緬廟滅憫閩鳴銘謬膕謀畝鈉納難撓腦惱鬧餒內擬膩攆撚釀鳥聶齧鑷鎳檸獰寧臢擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐拋賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪僕樸譜棲淒臍齊騎豈啟氣棄訖薘牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親寢輕氫傾頃請慶瓊窮趨區軀驅蘀齲顴權勸卻鵲確讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽三傘喪騷掃澀殺紗篩曬刪閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢適釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖隨綏歲孫損筍縮瑣鎖獺撻態攤貪癱灘壇譚談歎湯燙濤絛討騰謄銻題體屜條貼鐵廳聽烴銅統頭禿圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網螿韋違圍為濰維葦偉偽緯謂衛溫聞紋穩問甕撾蝸渦窩臥嗚鎢烏汙誣無蕪吳塢霧務誤錫犧蠨襲習銑戲細蝦轄峽俠狹廈嚇鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭囂銷曉褘嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許敘緒續軒懸襏褌選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顏閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤襴搖堯遙窯謠藥爺頁業葉醫銥頤遺儀蟻藝億憶義詣議誼譯異繹蔭陰銀飲隱覎覥櫻嬰鷹應纓瑩螢營熒蠅贏穎喲擁傭癰踴詠湧優憂郵鈾猶誘輿魚漁娛與嶼語籲禦獄譽讋預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗責擇則澤賊贈紮劄軋鍘閘柵詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙爭幀鄭證織職執紙摯擲幟質滯鐘終種腫眾謅軸皺晝驟豬諸誅燭矚囑貯鑄築訒訩詗詖譸諝駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄著濁茲資漬蹤綜總縱鄒詛組鑽豶亙鞀羋嗇厙厴廝靨贗匭匱賾剄劌剴傴倀傖佇儕儂儔儼儷俁僨傯僂儻儐儺僉糴黌囅鳧兗袞褻臠稟貟贔賙賵贇赬塚訁訐訌訕謳詎訥詁訶詆詔詘詒誆誄詿詰詼詵詬詮諍諢詡誚誥誑誒諏諑諉諛諗諂誶諶諫謔謁諤諭諼諳諦諮諞謨讜謖諡謐謫譾譖譙譎讞譫讖巹陘隉鄺鄔鄴躂郟鄶郤鄆酈芻奐勱猛氹巰堊壙壢阪壟壚埡塏坰堖塒堝塤垵墊原艸薌藶莧萇蓯苧蘢檾蔦塋煢蕘蓽蕎薈薺犖滎蕁藎蕒蓀葒葤蒔萵蓧蒞薟蕕鶯蓴縈蕆蕢蔞驀蘺鎣蕷蘞藺軑輈輬轀蘄藪蘚槁奩尷捫摶撟摑摜摣撳攄攖擷擼攛嘰嘸囈嚦唄咼唚哢嚀噝噅噠嘵嗶噦呱噲嚌吒噥嘜嘮嗩唕嘖囀呼嘍嚳囁呵噯轡嚶嚕劈謔圇幃幬幘幗醱襆嶇峴嶴嵐崠嶧嶠崢嶗崍嶸崳嶁脊巔徠犬獷獁麅獪猻獫钜玀獼蝟餳飩餼飪飫飭飴餉餑餘餛餷餿饃饈饉饊饌饢廡賡廩懺憮慪愾悵愴懌慟懨惻愷惲慳愜慍憒怵懍閂閆闈閎閔閌闥閭閫鬮閬閾閶鬩閿閽閼闃闋闔闐闕闞爿灃溈瀧瀘濼涇浹湞澮瀏滸潯淶潿瀆澠瀋淥漵灩灄瀅潷瀠瀟濫瀲瀦瀨灝騫邇逕邐屨弳嫵嫗媯姍婭嬈孌媧嫻嬋媼嬡嬪嬙嬤駔駟駙騶驛駑駘驍驊駢驪騏騍騅驂騭騖驁騮騸驃驄驏驥驤糸紆紂紇紈纊紜紕紓紺絏紱縐紼絀紿絝絎絳綆綃綈綾綺緋緔緄綞綬綹綣綰緇緙緗緹緲繢緦緶緱縋緡縉縝縟縞縭縊縑繽縹縵縲繆繅纈繚繒韁繾繰繯纘么璣瑋玨瓏瑉頊璽琿璉鈒鍚鈃鉶鋩錏銍銛鋙錡錩璦瓔璿瓚韙韞韜榪櫪梘棖樅梟櫛櫳櫨梔櫟檉椏橈楨榿樺檜欒棬欞櫝槧鑕鍈鍠鎡鎛钂鎔鏰鏐鐶鑞鑱欏槨欖櫬櫚櫸檳櫧檣櫫櫓櫞簷檁歿殤殞殮殫殯軔軛軲軻轤軹軼軫軤轢軺軾輊輇輅輒輦輞閈闓闍闠闒闤輟輜輳轆轔戔戧戩甌曇曄暉曖賁貰貺貽贄貲賅贐賑賚賕齎賧賻覘覬覡覿覦覯覲覷強犛毿氌氬氳牘膁朧腖臚脛膾腡醃靦膃齶臏歟颮颯颶颼飆飆轂齏斕煬煒燉熗燁燜糊煆退溜燾禰禎禪韍懟愨湣懣戇遝澩磯碭硨碸礪礱硤磽磧磣镟滾龕瞘眥睞瞼佘羆羈釓釔釙釗釕釷釧釤鍆釵釹鈈鈦鈑鈐鈁鈧鈄鈥鈀鈺鉦鈷鈳鉕鈽鈸鉞鉬鉭鈿鑠鈰鉉鉈鉍鈮鈹鐸銬銠鉺銪鋮鋏鐃鋣鐺銱銦鎧銖鋌銩鏵銓鉿頲熲頮頴顒纇颺颭颸颻飀鎩銚錚銫銃鐋銨銣鐒錸鋱鏗鋥鋰鋯鋨銼鋝鋶鉲鐧鋃鋟鋦錒錆鍩錛鍀錁錕錮鍃錇錈錟錙鍥鍇鍶鍔鍤鎪鍰鎄鏤鏘鐨鋂鏌鎘鐫錼鎦鎰鎵鑌鏢鏜鏝鏍鏞鏃鏇鏑鐔钁鏷鑥鐓鑭鐠鑹鏹鐙鑊鐲鐿鑔鑣鍾穭飣飥飿餄餎餏餖餕餜餶穡鳩鳶鴇鴆鴣鶇鸕鴝鴟鷥鴯鷙鴰鵂鸞鵓鸝鵠鵒鷳鵜鵡鶓鵪鵯鶉鶘鶚鶿鶥鶩鷂鶼鸚鷓鷚鷯鷦鷲鷸鸌鷺鸛癤癘鬁屙皰瘂癆癇癉瘞瘺饁餺癭癮癩癲臒竇窶襠褳襝襇褸襤繈皸耮耬聹聵頇頎頏頡頜潁頦頷顎顓顳顢顙顥顬顰虯蟣蠆蜆蠔蠣蟶蛺蟯螄蠐蟈蠑螻蟎馹駰驫騂駸騌驌騤驦罌篤筧籩篳箏簀篋籜簞簫簣籪籟艤艫嫋羥秈糲糶糝餱縶麩趲醯釅釃鹺躉蹌蹠躒蹺蹕躚躋躓躑躡蹣躕躪躦觴觶靚靂霽靄齔齟齙齠齜齦齬齪齷黽黿鼉雋讎鑾鏨魷魴鮁鮃鯰鱸穌鮒鱟鮐鮭鮚鮪鮞鱭鮫鯗鱘鯁鱺鰱鰹鰣鰷鯀鯊鯇鯽鯖鯪鯫鯡鯤鯧鯝鯢鯰鯛鯴鯔鱝鰈鱷鰍鰒鰉鯿鰠魛魢魨魺鮋鮓鮊鮍鮳鮦鰂鮜鱠鮺鮶鯒鯕鯵鰏鱨鯷鰮鰃鰁鱂鰟鰜鰼鱯鱤鼇鰭鰨鰥鰩鰳鰾鱈鰻鰵鱅鱖鱔鱒鱧韃鞽韉韝鶻髏髖髕魘魎饗饜鬢黷黲鼴齇鱣鳲鶬鴞鴒鴬鴴鵃鵐鶤鵮鶊鵷鷫鶡鶖鷊鶲鶹鶺鷁鷖鸇鸏鸘黶鼂齕齗</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<BR>String.prototype.s2t</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;[];<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.length;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;c&nbsp;</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">this</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.charAt(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;p&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;s1.indexOf(c)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[a.length]</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">p</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">c:s2.charAt(p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;a.join(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<BR>}<BR>String.prototype.t2s</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;[];<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">this</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.length;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;c&nbsp;</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">this</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.charAt(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;p&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;s2.indexOf(c)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a[a.length]</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">p</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">c:s1.charAt(p);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;a.join(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<BR>}<BR>alert(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">在春节期间悄然上线的“google.cn”中国网站昨天被指涉嫌违规经营，并已经引起信产部的关注。Google.cn事实上并没有取得在中国运营互联网信息服务所必须的ICP牌照，而按照我国现行政策的相关规定，外资在没有得到许可的前提下，并不允许经营包括ICP在内的电信业务。</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.s2t())<BR>alert(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">在春節期間悄然上線的“google.cn”中國網站昨天被指涉嫌違規經營，並已經引起信產部的關注。Google.cn事實上並沒有取得在中國運營互聯網信息服務所必須的ICP牌照，而按照我國現行政策的相關規定，外資在沒有得到許可的前提下，並不允許經營包括ICP在內的電信業務。</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">.t2s())<BR></SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">SCRIPT</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">BODY</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">HTML</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN></DIV><BR>已知的无法保证正确转换的汉字如下：<BR><BR><EM>乾并伪倏劫劫刬铲札剑效绩勋丐奁奁历启衔咱啖当尝嚣回国阶涂场砖坛野坛埙坛垄坝寿侄偷妫妩娴袅采寜克鮮尴屃昆仑岽岁岩岩幫厕厩荫厂厅回回别强汇彝仿匆恶恿惭悫慑凭恹懒戏帽拿采揿捣携攒挡叙扬驱斫斫晖向楠拐柳桠干构梅规丛椟攒棂叹啸敛欢歷历毡泛污凄沩湿汇淫涩蒙渎弥滟灾暖毁烨为墙窗牦雕琉璃砖产苏当叠迭瘘愈皓杯碗尽盘荡视视众蒙并碇棋碜硗处炮雕棱稚颓获窗窑伫并复管策个笺奁签糠磷妆辉团扎纴绁绦绒捆线绵缗绁举缊绦总绷伞绣襁系纤钵坛瓮罂垆阔骂罚罗绒翱端锄听卤胁捻台铺馆樯橹盘橹艹兹灾干参莅参莼蕊萱药苏萱蕊萱花呼蛔蛔猿蚊蚁脉冲卫帙袅夹裙里艳杂襕核觅医觑觑抵吁诃讻钥脏诓说闸谌谥呼哗证讹毁谪审燕雠雠赞呓竖艳赀恤赃宾赞同赆贛赝赃局碰迹坂体裸亸软辒烟辞农乃径熏奔溯乡酬盞酝酬燕仿征僥钥钟铁巨钻钩铁焊鉴炼锹宁针镅辖镕锤镎戚锈锎镌镯鉴矿刨炉镢镋栌闲闹关合合阅暗窥厄升阴坞邻隶只鸡灵韧鼗秋缰袜俯颕颓赖颜憔台扬飘飙飙翻饥碹喂馈馍晰疴驳骔验骗骡歡鲠仿发剃疬鬃胡须鬓斗斗麸曲曲鲧鲶鳀鳅鳁鲹鳝鲙鳄胳鹅雕鸦鹍鹚鸡燕鹇鹇莺碱粗面面么鳌鳖赍啮</EM> <BR><BR>更大的简繁汉字对换表如下：<BR><BR>简体：<BR><BR><EM>丢并乘乾乾乱亘亚享夜廉亸亡夫似伫布占并来仑侣局俣系俯侠備伥俩仓个倏们幸仿伦睬伟侃逼侧侦偷咱伪杰伧伞备效家佣偬传伛债伤倾偻仅佥仙動侨仆伪侥偾雇价仪俊侬亿当侩俭僥傧俦侪擬尽偿优储倏俪罗攒傩傥俨凶兑兔儿兖兜内两冉册冒幂泯涂冻凛渎凡处凯凭别劫劫删刬劫刭则銼克刬創刚剥剐札剀创铲铲戮划札剧刘刽刿剑剂剑效劲敕倦动勖务勚勋胜劳势绩绩剿劢勋励劝匀丐丐炕匦汇匮奁奁奁椟区协恤却膝厍厅厕历历厌歷厂厉厣参參叆叇睿丛咿吴吕叫咒和呙员咔咩呗唣吣唝唡吟念忤问喋启啖哑启衔衔啰啴哲咱唤岩丧吃乔单哟啼呛啬吗呜唢哔慨叹喽呼呕啧尝唛嘎哗唠啸叽哓呒恶咴啖嘘咝哒哝哕嗳哙喷吨当咛吓哜尝噜啮咽呖咙向喾严嘤嚣啭嗫嚣冁呓苏嘱嚙回因囱回国函囵国围园圆图团垧丘附垛垯垱埯坝炯野垭采坎执坤坚垩垴塍埚阶阶尧报场碱塆块茔垲埘涂冢葬坞埙场尘堑砖砖垫塔坠硗墩堕坛坛坟墙垦野坛埙压垒圹垆坛坏垄垄坜坝壮壸壶婿寿寿帽够梦夹奂奥奬夺奋妆妒你侄姊姗妊奸侄娱妩婀娄妇淫娅婳婦娲偷妫妫媪妈愧袅妪嫩妩娴娴娆婵娇嫱袅嫒嬷嫔奶婴婶懒娘娈孙学孽孪冗宫寇采寢實寜寜置寝实宁审写宽寶宠宝克将专寻对导爾鮮鮮尴尴屃届尸屃屉屡层屦属坂冈峃峒峣峨峰岘岛峡崄崃昆昆岗侖仑岽岽峥嵛岚岁岁嵚嵝嶄崭岖崂峤峄岙嵘岭屿岳岿峦巅岩岩巯卮卺匝紙帅师裙帐带帧帏幫徽帼帻幕幫帜币帮帱襕干几库庶庼厕厢厩厦厩荫荫厨厮庙厂庑废广廪庐厅巡迫回回乃吊弪张强别弹强弥弯汇彝彝彟彦雕佛往径从徕复仿征彻匆恍恒怪吝耻悦匆德怅闷凄婪恶恿恼恽恻爱惬悫訴怆恺博忾恿栗殷态愠惨惭惭恸惯悫怄怂慭虑悭慑慑庆戚欲忧憩惫怜凭愦惮愤悯怃宪忆勤恳应怿懔恹蒙怼懑恹惩懒怀悬忏惧欢恋戆戋戗戬戏战戏户厄帽扦抛拿拖拿挜挦挲挟插救舍扪卷扫抡挣挂采碰拣捏扬换揪挥背构揿榷损摇捣捶拓掏抢榨掴掼搂揸挚抠抟掺捞撑挠捻挢操掸拨扯抚扑揿挞挝捡拥掳择击挡担携据挤抬捣举拟摈拧搁掷扩撷摆擞撸扰摅撵拢拦撄搀撺携摄攒挛摊挡搅揽考叩叙败叙扬敌数驱驱敛毙斓斩斫斫斫断旗禍旸時春升愼昏是昽时晋昼晰暗晕晖晖映皓畅暂昵晔昙晓向暧旷叠晒书会望胧朵东楠丫拐楠栅柿拐查柳刊柏杯柳杆栀枧条枭捆梼梾梨弃棋枨枣栋栈桊栖碗桠桠碇棕緘箋杨枫楦桢业梅极干杩荣桤稿盘构枪梅杠桌槚椠椁概桨规规桩乐枞櫓梁楼标枢样丛朴树桦桡桥橛机椭蕊横槔檩柽档桧楫检樯台槟柠槛苘棹柜凳橹榈栉椟橼栎橱槠栌枥橥榇栊榉棂樱栏权椤攒栾榄棂咳款钦叹欧啸敛欤欢歷历归殁夭残殒殇殚僵殓殡歼杀壳毁殴医毗绒球毵牦毡毡氇气氢氩氲冰凼泛泛污污决冱没冲沨沵况溯泄汹凈浉浐浕浃泾莅涢凉凄泪浙渌净凌沦渊涞浅涣减涡测浑凑浈愍涌汤淳溇沩沩准沟温湿湿沧灭涤荥汇淫滪沪滞渗卤浒滚满渔沤汉涟渍涨溆渐浆颍漱泼洁潜舄润浔溃滗涠涩涩澄浇涝涧渑泽泶浍淀浊浓泞蒙济涛滥浚潍滨阔溅泺滤滢渎泻渖浏澀濒泸沥潇潆潴泷濑弥潋澜沣滠法洒漓滩灏湾滦滟贛滟灾照为乌灾烃无煅辉炼煮炜暖暖烟茕焕烦炀煕荧炝热颎炽烨焰灯炖磷烧烫焖营灿毁烛烩熏烬焘耀烁炉烨烂争为爷尔床墙笺窗闸榜窗牍它抵牵犁奔荦牦犊牺状狝徇狭狈悍狰猿犹狲犸呆狱狮嗥奖弊狷独狯猃狞获猎犷兽獭献猕猡妙兹玙玚珏玱珍佩珰现璃琎盞管雕琴珐珲珉玮琉琐瑶莹玛琅琏琉玑瑷环玺璇璃琼瑰珑璎瓒瓯砖瓮罂嘗产产苏畝耕亩毕略画异留当畴叠迭迭疏肛痱蛔痉酸淋痹疴痖瘆愈疯疡痪喑瘗疮疟瘘瘘疗憔瘤痨痫瘅愈疠瘪痴痒疖症疬癞癣瘿瘾痈瘫癫发皂皑皓疱鼓皲皱杯蔼碍袄罢颁办绊绑镑谤盍鉢碗盗盏尽监盘卢荡荡视视视眦眬众众困睁饱鲍辈贝钡绷笔闭边编贬变辩辫鳖宾饼睐眷眯翳眍瞒睑瞅蒙瞰瞩并钵铂驳卜补财蚕苍舱诧蝉馋谗缠阐颤矫碇炮硁朱硙硚硖砗砚碜棋长肠钞车陈衬称诚骋迟驰齿虫踌筹绸丑锄雏硕砧砀砜确码碜碛碂矶硗础触处闯锤纯绰辞词赐聪蹿窜错达贷矿砺砾矾炮砻祎佑帙秘禄祸祯郸胆诞党祷邓递缔颠点电雕钓调谍御祀禅礼祢秃籼秋秾税秆棱棱钉顶锭订斗读赌镀锻缎队顿钝鹅额讹饿饵禀秸种稚谷糠稚稣积颖穑秽颓颓稳获稆阱窗贰罚阀钒范贩饭访纺飞诽费纷粪丰锋风冯缝讽凤肤辐窝洼穷窑窑窭窥窍窦灶窃伫并俟竖竞辅赋复负讣缚该钙盖赶赣钢纲镐鸽阁铬给笋筜策管笕筒箸策个笺筝帚箓棰节龚巩贡钩购蛊顾关观馆贯硅龟闺轨诡贵辊锅过筑箧箬筱笃筛筚纂箦篓蓑篡箪简篑箫簪檐签帘骇韩号阂鹤贺轰鸿红后篮藤箨籁笼奁签钥笾簖篱箩吁秕糠磷妆曲麸粤稗护华话还缓黄谎辉贿讳诲绘荤伙货粽糁模粮团粝籴粜糾纠纪纣约纡纥纨纫纹纳纽纾纰纼纱纮纸级纭纴扎綢扎细绂绁绅纻饥讥鸡缉辑蓟计记际继荚颊贾钾驾间艰缄茧硷荐鉴践贱见键绍绀绋绐绌终弦组纴绗绁结绝绦绦绔绞络绚绒绖统丝绛绢绡绠绨绣绤绥捆经舰饯蒋讲酱胶骄铰饺缴轿较诫紧锦谨进综缍绿绻线绶维绹绾网缀彩纶绺绮绽绫绵绲缁绯缗繁绪绬绱缃缂线绵缗缘绁褓缌缅纬缑缈练缏缇荆茎鲸惊颈静镜旧驹举锯鹃觉诀钧军致缊总萦缙缢缒绉缣缊缞绦缜缟缛县缡缩演纵缧纤缦絷缕缥总绷缫缪襁缯织缮伞翻缭骏开颗课裤夸亏绕绣缋襁绳系缰缳缲绎缤缱颣缬纩续累缨纤缵缆缐钵瓶樽坛瓮罂垆馈阔蜡腊莱赖蓝阑兰谰览镭类离里鲤丽骂骂罚罗罴羁芈羌绒群羟羡义膻习翙翚隶联莲连镰脸链辆谅辽镣临邻鳞赁龄铃灵领馏龙聋玩翱翘翱端端锄耧耢圣闻声耸聩聂职聍听听陇芦颅卤虏鲁赂录陆驴铝轮论萝逻锣骡骆蚂马买麦卖迈馒蛮肃肯胳胚胸脆胁胁脉吻胫唇修脱胀谩锚铆贸么霉镁门锰谜觅闽鸣铭谬肾胨腘脶脑肿脚肷腽腸腻脍脓臘臀脐膑癯谋钠难闹馁捻酿鸟镊镍膘胭胪臜裸脏脔卧皋台与兴铺铺馆船膀樯橹舣钮农诺鸥盘庞赔鹏橹舻艳艹艹花刍苎荔兹骗飘频贫苹评颇谱齐骑岂讫蕎荙豆庄苋灾果钎铅迁谦干钱钳谴蔷锹亲轻顷请邱趋躯庵苌萚万萱莴叶荭参荮苇药龋颧鹊让饶韧认软锐闰萨鳃赛叁搜莼莳莅荪席参莜苁莼荜骚闪陕赡赏赊设菱蒂蒌葱茑麻藜荨蒇蕊荞荬芸莸荛萼蒉芜萧蓣萱诗蚀识驶适释饰试输赎术荟芗姜剃莶荠荩艺药薮苈薯双谁顺说饲颂讼诵苏诉虽随锁蔺萱蕊蕲蕴萱蘇藓蔹茏花蓠呼虚贪谭谈讨腾誊锑题体贴铁虬蛇蛔蛕蛱蜕蚬螂蛔铜头鸵驮驼袜顽蝶霓猬虾虱猿玳蜗螀蛳融蚁蚊萤韦违谓卫钨诬雾误锡蝼蚊蛰蟆蝈螨蟏虮蛲蛏蚁蝇虿蝎蟹蛴蝾蚝蛎袭铣辖锨鲜咸贤闲显险馅镶乡详响项销脉蔑同弄胡冲卫只邪袆衮帙谐谢锌衅锈须许轩袯褲衽裈袅夹装裙里褒制裊裢选询驯训讯逊鸦鸭讶阉盐颜阎艳谚验鸯阳养褛亵幞裥杂杂襕裣裆袒褴霸核核羈觃觅觇眺觋遥谣页医铱颐遗诣议谊译阴银饮隐觍觎睹觊觏觑觐觑觑觌斤粗抵觞觯讠讧吁讦讱讪托鹰赢踊邮铀诱舆鱼语誉欣讷谌讻诃诃诊注证诂诋讵诈诒诏诐诇诎诅詟咏诩察诟诠诘诜酬诙讻诖预驭鸳辕远愿跃钥阅云郧陨运酝载赞赃脏凿责贼赠轧诔诛诓诓志诳诶悖诮诰说谇谄谆诿诤诹愆诼谂話谀谞谝喧谥诨铡闸斋辗账赵辙锗这贞针镇阵谔谛谏谕谘谙谌诸谖谒诌歌谧谑谡谥谟謨谪讴呼哗郑证质钟轴骤着贮铸嘻讹谲撰谮谯噪谵毁诪谫谪审燕燕雠雠雠谶歡赞呓谠谳驻转赚锥赘资邹钻溪竖艶艳猪豮狸猫獾贠鼗靥赝赜贳赀赀贶贻贲赅恤赃赈宾赇赒赉赞赓赕赍赆赗剩赙贽赟同畲黉凫赆贛赑赝赃赪趁趱陉陧邝邬邺迹跺踩跶局脛蜷碰逾跄蹄跸趟迹跖蹒踪糟郏郐郄郓郦勐坂垅埝蹴跷蹺趸跻踯跞踬蹰跹蹑躜躏体躬裸亸轪轫轭轷塬轸轱轵轺轲轶轼辂辁辀轾辄挽輒辎辋辍辇辌软辏辒辒毂莺烟菇蓦蓥辘辚辔轹轳罪辣辞农迤乃移迥径熏槁奔周偵游沓溯遁繞迩逦村折咤哌唿合乡墉嗬撅噼嚯鴆酦酬腌盞醇酝酬燕酾酽厘钆钇钌钊钋钐嵴仿征僥犭狍扣钏焊钗钍钕钯钫钘钭钥鉛钚钤钣钑钟钬钛钪铌铈钶钴钹铍钰钸钿铁巨巨饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕钻铊铉刨铋钷钺钩钲钼钽锎铏铒铪铳铚铨铁铢铫铦铑铷铟楞憷闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬铵铥铕铯铐铞焊锉镅锒铤铗铻镯锊锓铘锃锔锇铓铖锆锂铽锍鉴锞锖锫锩混漤铔锕锟锱铮锛锬锜锠锢表铼镎锝锪钔锴锳炼锷钖锽锸锲锘锹淡宁骞迳锾鑒锶针锺锿镅辖鐮镕镕槍镉锤镈镃镏铠铩锼镒镋镓镌镎镞旋镆镙驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟镠镝铿锵戚镗镘镛镖镂錾镚铧镤镪锈铙铴铹镦镡镫镢镨锎锏镄镌幺顼镯镮铎铛镱镬镔鉴镲锧鑽矿镴铄镳刨镥炉镧镵罐镩銮镢镋韪韫韬栌案闬闲闹关合合阅板暗矩阇阘闿鬥窥阓辟阛厄坑址峭升堙阴堤犟坞邻隶只隽雍鸡氛沾灵腼溜霁雳霭靓面韧韌鼗鞍飑飒飕飙飚齑于煳煺熘秋鞋鞒靴缰鞑千襪鞯韨鞴袜韭韵顸颀渺寨碹磙龛颃颌額颉颏俯颒颋颕颕颔颓赖腮颚颜颙颛颡颟颢憔颥颦颞飐台刮飓飔扬飖帆飗飘飙飙飏翻饥饤飼饦飧饳飪饸碹糍饹饻馂饾余肴馃喂糊糇喂馉糖馎糕馈馌膳飨餍馍餉粘晰鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疴驲馱驅駝驳骃骎夾匹骍骔骔验骗鬃骙骕骡骦歡骉腿鲠鲠髅髌髋仿鬓发剃疬松鬃胡须鬓斗哄斗鬱郁魉魇鱽鱾鲀鲂鱿鲄剪麸曲曲鲅鲆鲌鲉鲧鲏鲇鲐鲋鲊鲒鲘鲕鲖鲔鲛鲑鲓鲪鳀鲝鲧鲩鲨鲬鲻鲯鲭鲞鲷酰鹾鲴鲱鲵鲲鲳鲮鲰鲶鲶鲺鲹鳀鲫鳊鳈鲗鳂鲽鳇鳅鳅鲾鳄鳆鳁鳒鳑鳋鲥鳏鳎鳐鳍鳁鲢鳌鳓鳘鲦鲣鲹鳗龀龃龅龆龇龈龉龊龌黾鼋鼍鲈鲎鲚鲟鲡鲼鳛鳔鳉鳙鳕鳟鳝鳝鳜鲙鲙鳣鳡鳢鲿鳠鳄鹘胳黩黪齄鸤雁鸰鸮鸴鸻鸼鹀鹅鹐雕鸦鹓鹍鹒鹙鹖鹍鸧鹟鹠鹡鹚鹢鸡鹝鹥鹔燕鹇鹇鹯莺鹲鹴鹼碱麟獐粗面面么黡鼌蛙鳌鳖冬鼹赍龁龂出啮腭<BR><BR></EM>繁体：<BR><BR><EM>丟並乗乹亁亂亙亞亯亱亷嚲亾伕佀佇佈佔併來侖侶侷俁係俛俠俻倀倆倉個倐們倖倣倫倸偉偘偪側偵偸偺偽傑傖傘備傚傢傭傯傳傴債傷傾僂僅僉僊働僑僕僞僥僨僱價儀儁儂億儅儈儉儌儐儔儕儗儘償優儲儵儷儸儹儺儻儼兇兌兎兒兗兠內兩冄冊冐冪冺凃凍凜凟凣処凱凴別刦刧刪鏟刼剄則剉剋剗剙剛剝剮剳剴創剷鏟剹劃劄劇劉劊劌劍劑劒効勁勅勌動勗務勩勛勝勞勢勣績勦勱勳勵勸勻匃匄匟匭匯匱匲奩匳匵區協卹卻厀厙厛厠厤曆厭厯厰厲厴參叅靉靆叡叢吚吳呂呌呪咊咼員哢哶唄唕唚嗊啢唫唸啎問啑啓啗啞啟啣銜囉嘽喆喒喚喦喪喫喬單喲嗁嗆嗇嗎嗚嗩嗶嘅嘆嘍嘑嘔嘖嘗嘜嘠嘩嘮嘯嘰嘵嘸噁噅噉噓噝噠噥噦噯噲噴噸噹嚀嚇嚌嚐嚕嚙嚥嚦嚨嚮嚳嚴嚶嚻囀囁囂囅囈囌囑囓囘囙囪囬囯圅圇國圍園圓圖團坰坵坿垜墶壋垵垻埛埜埡埰埳執堃堅堊堖堘堝堦階堯報場堿壪塊塋塏塒塗塚塟塢塤塲塵塹塼磚墊墖墜墝墪墮墰罎墳墻墾壄壇壎壓壘壙壚壜壞壟壠壢壩壯壼壺壻壽夀夘夠夢夾奐奧奨奪奮妝妬妳妷姉姍姙姦姪娛娬娿婁婦婬婭嫿媍媧媮媯嬀媼媽媿嫋嫗嫰嫵嫺嫻嬈嬋嬌嬙嬝嬡嬤嬪嬭嬰嬸嬾孃孌孫學孼孿宂宮宼寀寑寔寕寗寘寢實寧審寫寬寳寵寶尅將專尋對導尒尟尠尲尷屭屆屍屓屜屢層屨屬岅岡嶨峝嶢峩峯峴島峽嶮崍崐崑崗崘崙崠崬崢崳嵐嵗歲嶔嶁嶃嶄嶇嶗嶠嶧嶴嶸嶺嶼嶽巋巒巔巖巗巰巵巹帀帋帥師帬帳帶幀幃幇幑幗幘幙幚幟幣幫幬幱幹幾庫庻廎廁廂廄廈廐廕蔭廚廝廟廠廡廢廣廩廬廳廵廹廻迴廼弔弳張強彆彈彊彌彎彙彜彞彠彥彫彿徃徑從徠復徬徴徹怱怳恆恠恡恥悅悤悳悵悶悽惏惡惥惱惲惻愛愜愨愬愴愷愽愾慂慄慇態慍慘慙慚慟慣慤慪慫憖慮慳慴懾慶慼慾憂憇憊憐憑憒憚憤憫憮憲憶懃懇應懌懍懕懞懟懣懨懲懶懷懸懺懼懽戀戇戔戧戩戯戰戲戶戹戼扡拋拏拕挐掗撏挱挾挿捄捨捫捲掃掄掙掛採掽揀揑揚換揫揮揹搆搇搉損搖搗搥搨搯搶搾摑摜摟摣摯摳摶摻撈撐撓撚撟撡撣撥撦撫撲撳撻撾撿擁擄擇擊擋擔擕據擠擡擣擧擬擯擰擱擲擴擷擺擻擼擾攄攆攏攔攖攙攛攜攝攢攣攤攩攪攬攷敂敍敗敘敭敵數敺驅斂斃斕斬斮斲斵斷旂旤暘旹旾昇昚昬昰曨時晉晝晳晻暈暉輝暎暠暢暫暱曄曇曉曏曖曠曡曬書會朢朧朶東枏枒枴柟柵柹柺査栁栞栢桮桺桿梔梘條梟梱檮棶棃棄棊棖棗棟棧棬棲椀椏丫椗椶椷椾楊楓楥楨業楳極榦榪榮榿槀槃構槍槑槓槕檟槧槨槩槳槼規樁樂樅樐樑樓標樞樣樷樸樹樺橈橋橜機橢橤橫橰檁檉檔檜檝檢檣檯檳檸檻檾櫂櫃櫈櫓櫚櫛櫝櫞櫟櫥櫧櫨櫪櫫櫬櫳櫸櫺櫻欄權欏欑欒欖欞欬欵欽歎歐歗歛歟歡歴歷歸歿殀殘殞殤殫殭殮殯殲殺殼毀毆毉毘毧毬毿氂氈氊氌氣氫氬氳氷氹氾汎汙汚決沍沒沖渢濔況泝洩洶浄溮滻濜浹涇涖溳涼淒淚淛淥淨淩淪淵淶淺渙減渦測渾湊湞湣湧湯湻漊溈潙準溝溫溼濕滄滅滌滎滙滛澦滬滯滲滷滸滾滿漁漚漢漣漬漲漵漸漿潁潄潑潔潛潟潤潯潰潷潿澀澁澂澆澇澗澠澤澩澮澱濁濃濘濛濟濤濫濬濰濱濶濺濼濾瀅瀆瀉瀋瀏瀒瀕瀘瀝瀟瀠瀦瀧瀨瀰瀲瀾灃灄灋灑灕灘灝灣灤灧灨灩災炤為烏烖烴無煆煇煉煑煒煖煗煙煢煥煩煬熈熒熗熱熲熾燁燄燈燉燐燒燙燜營燦燬燭燴燻燼燾燿爍爐爗爛爭爲爺爾牀牆牋牎牐牓牕牘牠牴牽犂犇犖犛犢犧狀獮狥狹狽猂猙猨猶猻獁獃獄獅獋獎獘獧獨獪獫獰獲獵獷獸獺獻獼玀玅玆璵瑒玨瑲珎珮璫現琍璡琖琯琱琹琺琿瑉瑋瑠瑣瑤瑩瑪瑯璉璢璣璦環璽璿瓈瓊瓌瓏瓔瓚甌甎甕甖甞產産甦畆畊畝畢畧畫異畱當疇疉疊叠疎疘疿痐痙痠痳痺痾瘂瘮瘉瘋瘍瘓瘖瘞瘡瘧瘺瘻療癄癅癆癇癉癒癘癟癡癢癤癥癧癩癬癭癮癰癱癲發皁皚皜皰皷皸皺盃藹礙襖罷頒辦絆綁鎊謗盇盋盌盜盞盡監盤盧盪蕩眎視眡眥矓眾衆睏睜飽鮑輩貝鋇綳筆閉邊編貶變辯辮鱉賓餅睞睠瞇瞖瞘瞞瞼矁矇矙矚幷鉢鉑駁蔔補財蠶蒼艙詫蟬饞讒纏闡顫矯矴砲硜硃磑礄硤硨硯硶碁長腸鈔車陳襯稱誠騁遲馳齒蟲躊籌綢醜鋤雛碩碪碭碸確碼磣磧磫磯磽礎觸處闖錘純綽辭詞賜聰躥竄錯達貸礦礪礫礬礮礱禕祐祑祕祿禍禎鄲膽誕黨禱鄧遞締顛點電凋釣調諜禦禩禪禮禰禿秈秌穠稅稈稜楞釘頂錠訂鬥讀賭鍍鍛緞隊頓鈍鵝額訛餓餌稟稭種稺穀穅穉穌積穎穡穢穨頽穩穫穭穽窓貳罰閥釩範販飯訪紡飛誹費紛糞豐鋒風馮縫諷鳳膚輻窩窪窮窯窰窶窺竅竇竈竊竚竝竢竪競輔賦複負訃縛該鈣蓋趕贛鋼綱鎬鴿閣鉻給筍簹筞筦筧筩筯筴箇箋箏箒籙箠節龔鞏貢鈎購蠱顧關觀館貫矽龜閨軌詭貴輥鍋過築篋篛篠篤篩篳篹簀簍簑簒簞簡簣簫簮簷簽簾駭韓號閡鶴賀轟鴻紅後籃籐籜籟籠籢籤籥籩籪籬籮籲粃粇粦粧粬粰粵粺護華話還緩黃謊輝賄諱誨繪葷夥貨糉糝糢糧糰糲糴糶糺糾紀紂約紆紇紈紉紋納紐紓紕紖紗紘紙級紜紝紥紬紮細紱紲紳紵饑譏鶏緝輯薊計記際繼莢頰賈鉀駕間艱緘繭鹼薦鑒踐賤見鍵紹紺紼紿絀終絃組絍絎絏結絕絛縧絝絞絡絢絨絰統絲絳絹綃綆綈綉綌綏綑經艦餞蔣講醬膠驕鉸餃繳轎較誡緊錦謹進綜綞綠綣綫綬維綯綰網綴綵綸綹綺綻綾綿緄緇緋緍緐緒緓緔緗緙線緜緡緣緤緥緦緬緯緱緲練緶緹荊莖鯨驚頸靜鏡舊駒舉鋸鵑覺訣鈞軍緻緼縂縈縉縊縋縐縑縕縗縚縝縞縟縣縭縮縯縱縲縴縵縶縷縹總繃繅繆繈繒織繕繖繙繚駿開顆課褲誇虧繞繡繢繦繩繫繮繯繰繹繽繾纇纈纊續纍纓纖纘纜綫缽缾罇罈罋罌罏饋闊蠟臘萊賴藍闌蘭讕覽鐳類離裏鯉麗罵駡罸羅羆羈羋羗羢羣羥羨義羶習翽翬隸聯蓮連鐮臉鏈輛諒遼鐐臨鄰鱗賃齡鈴靈領餾龍聾翫翶翹翺耑專耡耬耮聖聞聲聳聵聶職聹聼聽隴蘆顱鹵虜魯賂錄陸驢鋁輪論蘿邏鑼騾駱螞馬買麥賣邁饅蠻肅肎肐肧胷脃脅脇脈脗脛脣脩脫脹謾錨鉚貿麽黴鎂門錳謎覓閩鳴銘謬腎腖膕腡腦腫腳膁膃膓膩膾膿臈臋臍臏臒謀鈉難鬧餒拈釀鳥鑷鎳臕臙臚臢臝臟臠臥臯臺與興舖鋪舘舩艕艢艣艤鈕農諾鷗磐龐賠鵬艪艫艷艸草芲芻苧茘茲騙飄頻貧蘋評頗譜齊騎豈訖荍薘荳莊莧菑菓釺鉛遷謙乾錢鉗譴薔鍬親輕頃請丘趨軀菴萇蘀萬萲萵葉葒葠葤葦葯齲顴鵲讓饒韌認軟銳閏薩鰓賽三蒐蒓蒔蒞蓀蓆蓡蓧蓯蓴蓽騷閃陝贍賞賒設蔆蔕蔞蔥蔦蔴蔾蕁蕆蕋蕎蕒蕓蕕蕘蕚蕢蕪蕭蕷蕿詩蝕識駛適釋飾試輸贖術薈薌薑薙薟薺藎藝藥藪藶藷雙誰順說飼頌訟誦蘇訴雖隨鎖藺藼蘂蘄蘊蘐蘓蘚蘞蘢蘤蘺虖虛貪譚談討騰謄銻題體貼鐵虯虵蚘蛔蛺蛻蜆蜋蜖銅頭鴕馱駝襪頑蜨蜺蝟蝦蝨蝯蝳蝸螿螄螎螘螡螢韋違謂衛鎢誣霧誤錫螻蟁蟄蟇蟈蟎蠨蟣蟯蟶蟻蠅蠆蠍蠏蠐蠑蠔蠣襲銑轄鍁鮮鹹賢閑顯險餡鑲鄉詳響項銷衇衊衕衖衚衝衞衹衺褘袞袠諧謝鋅釁銹須許軒襏袴袵褌裊裌裝裠裡裦製褭褳選詢馴訓訊遜鴉鴨訝閹鹽顔閻艶諺驗鴦陽養褸褻襆襇襍雜襴襝襠襢襤覇覈和覊覎覔覘覜覡遙謠頁醫銥頤遺詣議誼譯陰銀飲隱覥覦覩覬覯覰覲覷覻覿觔觕觝觴觶訁訌訏訐訒訕託鷹贏踴郵鈾誘輿魚語譽訢訥訦訩訶呵診註証詁詆詎詐詒詔詖詗詘詛讋詠詡詧詬詮詰詵詶詼詾詿預馭鴛轅遠願躍鑰閱雲鄖隕運醞載贊贓髒鑿責賊贈軋誄誅誆誑誌誑誒誖誚誥説誶諂諄諉諍諏諐諑諗諙諛諝諞諠諡諢鍘閘齋輾賬趙轍鍺這貞針鎮陣諤諦諫諭諮諳諶諸諼謁謅謌謐謔謖謚謨謩謫謳謼譁鄭證質鐘軸驟著貯鑄譆譌譎譔譖譙譟譫譭譸譾讁讅讌宴讎仇讐讖讙讚讛讜讞駐轉賺錐贅資鄒鑽谿豎豓豔豬豶貍貓貛貟鞀靨贋賾貰貲資貺貽賁賅賉賍賑賔賕賙賚賛賡賧賫賮賵賸賻贄贇仝佘黌鳧贐贑贔贗贜赬趂趲陘隉鄺鄔鄴跡跥跴躂跼踁踡踫踰蹌蹏蹕蹚蹟蹠蹣蹤蹧郟鄶郤鄆酈猛阪壟墊蹵蹺蹻躉躋躑躒躓躕躚躡躦躪躰躳躶軃軑軔軛軤原軫軲軹軺軻軼軾輅輇輈輊輒輓輙輜輞輟輦輬輭輳輼轀轂鶯菸菰驀鎣轆轔轡轢轤辠辢辤辳迆迺迻逈逕薰藁逩週遉遊遝遡遯遶邇邐邨摺吒呱呼郃鄕鄘呵噘劈謔酖醱酧醃醆醕醖醻醼釃釅釐釓釔釕釗釙釤脊彷徵徼犬麅釦釧釬釵釷釹鈀鈁鈃鈄鈅鈆鈈鈐鈑鈒鈡鈥鈦鈧鈮鈰鈳鈷鈸鈹鈺鈽鈿鉄鉅钜餳飩餼飪飫飭飴餉餑餘餛餷餿饃饈饉饊饌饢鉆鉈鉉鉋鉍鉕鉞鉤鉦鉬鉭鉲鉶鉺鉿銃銍銓銕銖銚銛銠銣銦愣怵閂閆闈閎閔閌闥閭閫鬮閬閾閶鬩閿閽閼闃闋闔闐闕闞爿銨銩銪銫銬銱銲銼鋂鋃鋌鋏鋙鋜鋝鋟鋣鋥鋦鋨鋩鋮鋯鋰鋱鋶鋻錁錆錇錈溷濫錏錒錕錙錚錛錟錡錩錮錶錸錼鍀鍃鍆鍇鍈鍊鍔鍚鍠鍤鍥鍩鍫澹甯騫徑鍰鍳鍶鍼鍾鎄鎇鎋鎌鎔熔鎗鎘鎚鎛鎡鎦鎧鎩鎪鎰鎲鎵鎸鎿鏃鏇鏌鏍駔駟駙騶驛駑駘驍驊駢驪騏騍騅驂騭騖驁騮騸驃驄驏驥驤糸鏐鏑鏗鏘鏚鏜鏝鏞鏢鏤鏨鏰鏵鏷鏹鏽鐃鐋鐒鐓鐔鐙鐝鐠鐦鐧鐨鐫么頊鐲鐶鐸鐺鐿鑊鑌鑑鑔鑕鑚鑛鑞鑠鑣鑤鑥鑪鑭鑱鑵鑹鑾钁钂韙韞韜櫓桉閈閒閙関閤閣閲闆闇榘闍闒闓闘闚闠闢闤阨阬阯陗陞陻隂隄强隖隣隷隻雋雝雞雰霑霛靦霤霽靂靄靚靣靭靱鞉鞌颮颯颼飈飈齏於糊退溜鞦鞵鞽鞾韁韃韆韈韉韍韝韤韮韻頇頎淼砦镟滾龕頏頜頟頡頦頫頮頲頴颖頷頹顂顋顎顏顒顓顙顢顥顦顬顰顳颭颱颳颶颸颺颻颿飀飃飆飇揚飜飢飣飤飥飱飿餁餄鏇餈餎餏餕餖餘餚餜餧餬餱餵餶餹餺餻餽饁饍饗饜饝饟黏皙鳩鳶鴇鴆鴣鶇鸕鴝鴟鷥鴯鷙鴰鵂鸞鵓鸝鵠鵒鷳鵜鵡鶓鵪鵯鶉鶘鶚鷀鶥鶩鷂鶼鸚鷓鷚鷯鷦鷲鷸鸌鷺鸛屙馹駄駈駞駮駰駸袷疋騂騌鬃騐騗騣騤驌驘驦驩驫骽骾鯁髏髕髖髣髩髮鬀鬁鬆鬉鬍鬚鬢鬦鬨鬭鬰鬱魎魘魛魢魨魴魷魺翦麩麴麯鮁鮃鮊鮋鮌鮍鮎鮐鮒鮓鮚鮜鮞鮦鮪鮫鮭鮳鮶鮷鮺鯀鯇鯊鯒鯔鯕鯖鯗鯛醯鹺鯝鯡鯢鯤鯧鯪鯫鯰鮎鯴鯵鯷鯽鯿鰁鰂鰃鰈鰉鰌鰍鰏鰐鰒鰛鰜鰟鰠鰣鰥鰨鰩鰭鰮鰱鰲鰳鰵鰷鰹鰺鰻齔齟齙齠齜齦齬齪齷黽黿鼉鱸鱟鱭鱘鱺鱝鰼鰾鱂鱅鱈鱒鱓鱔鱖鱠膾鱣鱤鱧鱨鱯鱷鶻骼黷黲齇鳲鴈鴒鴞鴬鴴鵃鵐鵞鵮鵰鵶鵷鵾鶊鶖鶡鶤鶬鶲鶹鶺鶿鷁鷄鷊鷖鷫鷰鷴鷼鸇鸎鸏鸘鹻鹼麐麞麤麪麵麼黶鼂鼃鼇鼈鼕鼴齎齕齗齣齧齶<BR><BR></EM>这个对换表实在是太全了，有一些汉字恐怕即使是港台地区和海外的用户也未能尽识，比如：<BR>時－－旹 、 春－－旾 等。所以决定不采用这个对换表。<BR><img src ="http://www.blogjava.net/emu/aggbug/31798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-02-21 14:49 <a href="http://www.blogjava.net/emu/articles/31798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emu的GBK编码</title><link>http://www.blogjava.net/emu/articles/31756.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 21 Feb 2006 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/31756.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/31756.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/31756.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/31756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/31756.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在前几天的文章《emu的gb2312编码 》中emu已经提供了一个gb2312编码的脚本。对于更大的汉字范围，emu编写了如下的gbk编码脚本：&lt;!DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;...&nbsp;&nbsp;<a href='http://www.blogjava.net/emu/articles/31756.html'>阅读全文</a><img src ="http://www.blogjava.net/emu/aggbug/31756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-02-21 11:36 <a href="http://www.blogjava.net/emu/articles/31756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>emu的gb2312编码</title><link>http://www.blogjava.net/emu/articles/31283.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 17 Feb 2006 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/31283.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/31283.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/31283.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/31283.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/31283.html</trackback:ping><description><![CDATA[用ajax向服务器post数据的时候，如果服务器只能接受gbk编码，通常我们会用vbscript来做预编码再post数据：<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"><SPAN style="COLOR: #0000ff">Function</SPAN><SPAN style="COLOR: #000000">&nbsp;URLEncoding(vstrIn)<BR>&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">For</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">To</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Len</SPAN><SPAN style="COLOR: #000000">(vstrIn)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThisChr&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Mid</SPAN><SPAN style="COLOR: #000000">(vStrIn,i,</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">If</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Abs</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">Asc</SPAN><SPAN style="COLOR: #000000">(ThisChr))&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">HFF&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Then</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;strReturn&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;ThisChr<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Else</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Asc</SPAN><SPAN style="COLOR: #000000">(ThisChr)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">If</SPAN><SPAN style="COLOR: #000000">&nbsp;innerCode&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Then</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;innerCode&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;innerCode&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">H10000<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">End</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">If</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hight8&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(innerCode&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">And</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">HFF00)</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">HFF<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Low8&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;innerCode&nbsp;</SPAN><SPAN style="COLOR: #0000ff">And</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">HFF<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strReturn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;strReturn&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">%</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Hex</SPAN><SPAN style="COLOR: #000000">(Hight8)&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">%</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Hex</SPAN><SPAN style="COLOR: #000000">(Low8)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">End</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">If</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">Next</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp;&nbsp;&nbsp;&nbsp;URLEncoding&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;strReturn<BR></SPAN><SPAN style="COLOR: #0000ff">End&nbsp;Function</SPAN></DIV>
<P>但是如果用户的机器是繁体中文系统，这个编码脚本就会把汉字编成big5码了。查了一下gb2312的字符编码，写了如下程序来完成类似的功能：</P>
<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"><SPAN style="COLOR: #0000ff">&lt;!</SPAN><SPAN style="COLOR: #ff00ff">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">HTML</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">HEAD</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">meta&nbsp;</SPAN><SPAN style="COLOR: #ff0000">http-equiv</SPAN><SPAN style="COLOR: #0000ff">="Content-Type"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;content</SPAN><SPAN style="COLOR: #0000ff">="text/html;&nbsp;charset=gb2312"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">TITLE</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;emu的gb2312编码&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">TITLE</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">HEAD</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">BODY</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">SCRIPT&nbsp;</SPAN><SPAN style="COLOR: #ff0000">LANGUAGE</SPAN><SPAN style="COLOR: #0000ff">="JavaScript"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;st&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">　　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓　　ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ　　！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣　　ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん　　ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ　　ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴　　АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя　　āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ　　─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋　　　　　　　　　　　　　　啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥　　薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳　　病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖　　场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚　　础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮　　怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠　　丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二　　贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服　　浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹　　埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈　　骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖　　弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕　　肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件　　健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸　　尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻　　俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀　　馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐　　痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿　　隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫　　谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸　　摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁　　拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗　　啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐　　恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠　　取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁　　伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳　　省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱　　恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔　　獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃　　汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威　　巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺　　稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓　　小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄　　选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶　　摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐　　印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉　　浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧　　铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政　　帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑　　住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座　　亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝　　佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼　　凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺　　邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝　　堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥　　荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺　　蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖　　摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼　　唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼　　帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺　　狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂　　恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾　　洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑　　濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣　　妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩　　纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬　　琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹　　椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋　　辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰　　搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻　　臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐　　怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨　　睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪　　铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔　　稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙　　瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃　　颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒　　蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋　　簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤　　酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜　　觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋　　鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄　</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<BR><BR></SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;GBEncode(s){<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;r</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">[],maxAsc</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">String.fromCharCode(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">127</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;s = s.replace(/%/g,"%25");<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">s.length;i</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ch&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;s.charAt(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(ch</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">maxAsc){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[r.length]</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">ch;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;j&nbsp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;st.indexOf(ch);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(Math.floor(j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">/</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">96</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">*</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">160</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0xA1A0</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[r.length]</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">%</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&gt;&gt;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">8</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toString(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">16</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">%</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">+</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(j</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&amp;</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">255</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).toString(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">16</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r[r.length]</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">**</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;r.join(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<BR>}<BR>alert(GBEncode(</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">emu的gb2312编码</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">))<BR></SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</SPAN><SPAN style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">SCRIPT</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">BODY</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">HTML</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></DIV><BR>这个脚本只支持一、二级汉字，更大的GBK字符集请看《<A id=CategoryEntryList1_EntryStoryList_Entries__ctl0_TitleUrl HREF="/emu/articles/31756.html">emu的GBK编码</A> 》。<BR>原则上除了字母数字之外其它的符号都需要重编码，不过实践上似乎除了“%”之外其它的不编码也没有什么不良影响，先偷懒一下，遇到问题再加上了。<img src ="http://www.blogjava.net/emu/aggbug/31283.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2006-02-17 18:09 <a href="http://www.blogjava.net/emu/articles/31283.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>跨浏览器的脚本</title><link>http://www.blogjava.net/emu/articles/25416.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 26 Dec 2005 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/25416.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/25416.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/25416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/25416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/25416.html</trackback:ping><description><![CDATA[emu 2002年末和网友在 <a href="http://search.csdn.net/Expert/topic/1238/1238516.xml">http://search.csdn.net/Expert/topic/1238/1238516.xml</a> 中的讨论。<br /><br /><div style="OVERFLOW: hidden; WIDTH: 600px; HEIGHT: 30400px; BACKGROUND-COLOR: blue"><iframe id="fff" style="MARGIN-LEFT: -225px; POSITION: relative; TOP: -1280px" src="http://search.csdn.net/Expert/topic/1238/1238516.xml" width="900" height="32000"></iframe></div><img src ="http://www.blogjava.net/emu/aggbug/25416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-12-26 11:30 <a href="http://www.blogjava.net/emu/articles/25416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>script 版的日期格式函数</title><link>http://www.blogjava.net/emu/articles/25415.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 26 Dec 2005 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/25415.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/25415.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/25415.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/25415.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/25415.html</trackback:ping><description><![CDATA[<P>emu 2003年5月发表在 <A href="http://search.csdn.net/Expert/topic/1779/1779160.xml">http://search.csdn.net/Expert/topic/1779/1779160.xml</A>&nbsp;上。<BR><BR>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<BR>&lt;TITLE&gt;emu's date simple date formatter&lt;/TITLE&gt;<BR>&lt;META NAME="Generator" CONTENT="EditPlus"&gt;<BR>&lt;META NAME="Author" CONTENT="emu"&gt;<BR>&lt;META NAME="Keywords" CONTENT="date formatter format emu"&gt;<BR>&lt;META NAME="Description" CONTENT="A function to format Date object into String"&gt;<BR>&lt;/HEAD&gt;</P>
<P>&lt;BODY&gt;<BR>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<BR>&lt;!--<BR>Date.prototype.format = function (format){<BR>&nbsp;if (format == null) format = "yyyy/MM/dd HH:mm:ss.SSS";<BR>&nbsp;var year = this.getFullYear();<BR>&nbsp;var month = this.getMonth();<BR>&nbsp;var sMonth = ["January","February","March","April","May","June","July","August","September","October","November","December"][month];<BR>&nbsp;var date = this.getDate();<BR>&nbsp;var day = this.getDay();<BR>&nbsp;var hr = this.getHours();<BR>&nbsp;var min = this.getMinutes();<BR>&nbsp;var sec = this.getSeconds();<BR>&nbsp;var daysInYear = Math.ceil((this-new Date(year,0,0))/86400000);<BR>&nbsp;var weekInYear = Math.ceil((daysInYear+new Date(year,0,1).getDay())/7);<BR>&nbsp;var weekInMonth = Math.ceil((date+new Date(year,month,1).getDay())/7);<BR>&nbsp;return format.replace("yyyy",year).replace("yy",year.toString().substr(2)).replace("dd",(date&lt;10?"0":"")+date).replace("HH",(hr&lt;10?"0":"")+hr).replace("KK",(hr%12&lt;10?"0":"")+hr%12).replace("kk",(hr&gt;0&amp;&amp;hr&lt;10?"0":"")+(((hr+23)%24)+1)).replace("hh",(hr&gt;0&amp;&amp;hr&lt;10||hr&gt;12&amp;&amp;hr&lt;22?"0":"")+(((hr+11)%12)+1)).replace("mm",(min&lt;10?"0":"")+min).replace("ss",(sec&lt;10?"0":"")+sec).replace("SSS",this%1000).replace("a",(hr&lt;12?"AM":"PM")).replace("W",weekInMonth).replace("F",Math.ceil(date/7)).replace(/E/g,["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][day]).replace("D",daysInYear).replace("w",weekInYear).replace(/MMMM+/,sMonth).replace("MMM",sMonth.substring(0,3)).replace("MM",(month&lt;9?"0":"")+(month+1));<BR>}</P>
<P>var d = new Date();<BR>alert(d.format());//default format<BR>alert(d.format("MM-dd-yyyy"));<BR>alert(d.format("dd/MM/yy"));<BR>alert(d.format("dd\\MM\\yyyy HH:mm ss.SSS"));<BR>alert(d.format("yyyy年MM月dd日 HH时mm分ss.SSS秒"));<BR>alert(d.format("yyyy年MM月dd日 E&nbsp; HH(0~23)时mm分ss.SSS秒"));<BR>alert(d.format("yyyy年MM月dd日 E&nbsp; KK(0~11)时mm分ss.SSS秒 a"));<BR>alert(d.format("yyyy年MM月dd日 E&nbsp; hh(1~12)时mm分ss.SSS秒 a"));<BR>alert(d.format("yyyy年MM月dd日 E&nbsp; kk(1~24)时mm分ss.SSS秒 今年的第D天,第w周,MMMM这个月的第W周,MMM这个月的第F个E"));<BR>//--&gt;<BR>&lt;/SCRIPT&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;<BR></P><img src ="http://www.blogjava.net/emu/aggbug/25415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-12-26 11:19 <a href="http://www.blogjava.net/emu/articles/25415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修正Sarissa 的一个小错误</title><link>http://www.blogjava.net/emu/articles/23101.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 09 Dec 2005 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/23101.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/23101.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/23101.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/23101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/23101.html</trackback:ping><description><![CDATA[Sarissa 在winxp+sp2或者win2003+sp1上面的单元测试是无法全部通过的，在 testCopyChildNodes 和 testMoveChildNodes 两个试例中报错误。<BR><BR>跟踪了一番代码，确定了问题出现在：copyChildNodes 和 moveChildNodes这两个函数的这一行上：<BR><BR>if(ownerDoc.importNode &amp;&amp; (!_SARISSA_IS_IE)) {<BR><BR>这个javascript本身是没有错的，错就错在IE。最新版的IE补丁使IE支持Msxml2.DOMDocument.5.0和Msxml2.DOMDocument.4.0，这两个ActiveX虽然没有提供对importNode这个API的支持，但是却内部使用了这个API名字，并且没有很好的包装，导致在判断ownerDoc.importNode 是否存在的时候居然抛了异常。<BR><BR>解决方法之一，是利用逻辑短路原理，调整判断逻辑<BR><BR>if((!_SARISSA_IS_IE) &amp;&amp; ownerDoc.importNode ) {<BR><BR>这样在IE上后面一个判断就不会被执行了。<BR><BR>更安全的方法是使用in关键字<BR><BR>if("importNode" in ownerDoc &amp;&amp; (!_SARISSA_IS_IE)) {<BR><BR>in关键字不会造成浏览器误会我们要访问importNode这个内部API而抛异常，它只是很忠实的高速我们属性是否存在。<BR><BR>相关的讨论见：<BR><BR><A href="https://sourceforge.net/forum/forum.php?thread_id=1237853&amp;forum_id=256492">https://sourceforge.net/forum/forum.php?thread_id=1237853&amp;forum_id=256492</A><BR><BR><BR><BR><BR><img src ="http://www.blogjava.net/emu/aggbug/23101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-12-09 11:08 <a href="http://www.blogjava.net/emu/articles/23101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>1072896748 错误</title><link>http://www.blogjava.net/emu/articles/20653.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 20 Nov 2005 05:15:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/20653.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/20653.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/20653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/20653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/20653.html</trackback:ping><description><![CDATA[<P>在做AJAX项目的时候，突然在页面里报告下面这个错误：<BR><BR>
<HR>
错误: 系统错误: -1072896748。 
<P></P>
<P><BR>代码: 0<BR>
<HR>
<BR>看起来应该是xmlhttp控件解析xml的时候出现了内部错误了。<BR><BR>可以在访问xml内容的时候try/cache并判断<BR>&nbsp;&nbsp;&nbsp;exception.description.indexOf("-1072896748。")&gt;0<BR>来进行相应的错误处理。<BR><BR>有些人喜欢判断：<BR>&nbsp;&nbsp;&nbsp;exception.description=="系统错误: -1072896748。"<BR>如果用户用的是繁体或者其他语言版本的话就捕获不到错误了。<BR><img src ="http://www.blogjava.net/emu/aggbug/20653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-11-20 13:15 <a href="http://www.blogjava.net/emu/articles/20653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个通用的动态加载数据例子（IE5，NS6，Mozilla 1.3b）</title><link>http://www.blogjava.net/emu/articles/4771.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 18 May 2005 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/4771.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/4771.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/4771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/4771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/4771.html</trackback:ping><description><![CDATA[<TABLE style="BORDER-COLLAPSE: collapse" width="100%" border=0>
<TBODY>
<TR>
<TD class=BlogArticleTitle><A href="http://stonelf.bloglong.com/BlogCollection/MyBlog.aspx?ArticleID=19799">一个通用的动态加载数据例子（IE5，NS6，Mozilla 1.3b） </A></TD></TR>
<TR>
<TD class=BlogArticleContent>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word"><PRE><P>&nbsp;<P>以前曾经以为用动态加载script或者iframe都可以实现动态加载数据，今天试验了一下发现script的方法在NS下面没有用，IFRAME的方法实现如下：</P><P>sample.html:</P><P>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<BR>&lt;HTML&gt;<BR>&lt;HEAD&gt;<BR>&lt;TITLE&gt;Emu's sample of load data dynamically&lt;/TITLE&gt;<BR>&lt;META NAME="Generator" CONTENT="EditPlus"&gt;<BR>&lt;META NAME="Author" CONTENT="emu"&gt;<BR>&lt;META NAME="Keywords" CONTENT="javascript,netscape,cross-browser"&gt;<BR>&lt;META NAME="Description" CONTENT="A sample of load data dynamically by iframe"&gt;<BR>&lt;/HEAD&gt;<BR>&lt;BODY onload="out.innerHTML=''"&gt;<BR>&lt;iframe id=testLoadData style="width:0;height:0;visibility:hidden;position:absolute"&gt;&lt;/iframe&gt;<BR>&lt;input type=button onclick="test()" value="test"&gt;<BR>&lt;div id=output&gt;&lt;/div&gt;<BR>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<BR>&lt;!--<BR>var t;<BR>var sumFrm = document.getElementById("testLoadData");<BR>var out = document.getElementById("output");<BR>function test(){<BR>&nbsp;sumFrm.src="test.html?"+new Date();<BR>}<BR>function receiveData(){<BR>&nbsp;for (var i = 0 ; i &lt; arguments.length ; i++)<BR>&nbsp;&nbsp;out.innerHTML += "&lt;br&gt;&lt;br&gt;&lt;a href='"+arguments[i]+"'&gt;"+arguments[i]+"&lt;/a&gt;";<BR>}<BR><A href="file://--/"><U><FONT color=#0000ff>//--</FONT></U></A>&gt;<BR>&lt;/SCRIPT&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;</P><P>&nbsp;</P><P>test.html:</P><P>&lt;HTML&gt;<BR>&lt;BODY onload="setData()"&gt;<BR>&lt;SCRIPT LANGUAGE="JavaScript"&gt;<BR>&lt;!--<BR>function setData(){<BR>&nbsp;parent.receiveData("http://www.csdn.net","http://www.iecn.net");<BR>}<BR><A href="file://--/"><U><FONT color=#0000ff>//--</FONT></U></A>&gt;<BR>&lt;/SCRIPT&gt;<BR>&lt;/BODY&gt;<BR>&lt;/HTML&gt;</P><P><BR>两个文件要放在同一目录下。test.html当然可以换成jsp或者php之类的任何动态页面。</P><P>IE5,NS6,MOZ1.3b下测试通过。</P><P></P></PRE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/emu/aggbug/4771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-05-18 16:10 <a href="http://www.blogjava.net/emu/articles/4771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 版的 MD5  </title><link>http://www.blogjava.net/emu/articles/4764.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 18 May 2005 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/4764.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/4764.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/4764.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/4764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/4764.html</trackback:ping><description><![CDATA[<TABLE style="BORDER-COLLAPSE: collapse" width="95%" border=0>
<TBODY>
<TR>
<TD class=BlogArticleTitle><SPAN id=BlogBody_BlogArticleView_lbTitle>javascript 版的 MD5 </SPAN></TD></TR>
<TR>
<TD class=BlogArticleContent>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word"><SPAN id=BlogBody_BlogArticleView_lbContent><PRE><P><P>/*<BR>&nbsp;* A JavaScript implementation of the RSA Data Security, Inc. MD5 Message<BR>&nbsp;* Digest Algorithm, as defined in RFC 1321.<BR>&nbsp;* Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.<BR>&nbsp;* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet<BR>&nbsp;* Distributed under the BSD License<BR>&nbsp;* See <A href="http://pajhome.org.uk/crypt/md5">http://pajhome.org.uk/crypt/md5</A> for more info.<BR>&nbsp;*/</P><P>/*<BR>&nbsp;* Configurable variables. You may need to tweak these to be compatible with<BR>&nbsp;* the server-side, but the defaults work in most cases.<BR>&nbsp;*/<BR>var hexcase = 0;&nbsp; /* hex output format. 0 - lowercase; 1 - uppercase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>var b64pad&nbsp; = ""; /* base-64 pad character. "=" for strict RFC compliance&nbsp;&nbsp; */<BR>var chrsz&nbsp;&nbsp; = 8;&nbsp; /* bits per input character. 8 - ASCII; 16 - Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</P><P>/*<BR>&nbsp;* These are the functions you'll usually want to call<BR>&nbsp;* They take string arguments and return either hex or base-64 encoded strings<BR>&nbsp;*/<BR>function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}<BR>function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}<BR>function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}<BR>function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }<BR>function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }<BR>function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }</P><P>/*<BR>&nbsp;* Perform a simple self-test to see if the VM is working<BR>&nbsp;*/<BR>function md5_vm_test()<BR>{<BR>&nbsp; return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72";<BR>}</P><P>/*<BR>&nbsp;* Calculate the MD5 of an array of little-endian words, and a bit length<BR>&nbsp;*/<BR>function core_md5(x, len)<BR>{<BR>&nbsp; /* append padding */<BR>&nbsp; x[len &gt;&gt; 5] |= 0x80 &lt;&lt; ((len) % 32);<BR>&nbsp; x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = len;</P><P>&nbsp; var a =&nbsp; 1732584193;<BR>&nbsp; var b = -271733879;<BR>&nbsp; var c = -1732584194;<BR>&nbsp; var d =&nbsp; 271733878;</P><P>&nbsp; for(var i = 0; i &lt; x.length; i += 16)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var olda = a;<BR>&nbsp;&nbsp;&nbsp; var oldb = b;<BR>&nbsp;&nbsp;&nbsp; var oldc = c;<BR>&nbsp;&nbsp;&nbsp; var oldd = d;</P><P>&nbsp;&nbsp;&nbsp; a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);<BR>&nbsp;&nbsp;&nbsp; d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);<BR>&nbsp;&nbsp;&nbsp; c = md5_ff(c, d, a, b, x[i+ 2], 17,&nbsp; 606105819);<BR>&nbsp;&nbsp;&nbsp; b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);<BR>&nbsp;&nbsp;&nbsp; a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);<BR>&nbsp;&nbsp;&nbsp; d = md5_ff(d, a, b, c, x[i+ 5], 12,&nbsp; 1200080426);<BR>&nbsp;&nbsp;&nbsp; c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);<BR>&nbsp;&nbsp;&nbsp; b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);<BR>&nbsp;&nbsp;&nbsp; a = md5_ff(a, b, c, d, x[i+ 8], 7 ,&nbsp; 1770035416);<BR>&nbsp;&nbsp;&nbsp; d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);<BR>&nbsp;&nbsp;&nbsp; c = md5_ff(c, d, a, b, x[i+10], 17, -42063);<BR>&nbsp;&nbsp;&nbsp; b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);<BR>&nbsp;&nbsp;&nbsp; a = md5_ff(a, b, c, d, x[i+12], 7 ,&nbsp; 1804603682);<BR>&nbsp;&nbsp;&nbsp; d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);<BR>&nbsp;&nbsp;&nbsp; c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);<BR>&nbsp;&nbsp;&nbsp; b = md5_ff(b, c, d, a, x[i+15], 22,&nbsp; 1236535329);</P><P>&nbsp;&nbsp;&nbsp; a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);<BR>&nbsp;&nbsp;&nbsp; d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);<BR>&nbsp;&nbsp;&nbsp; c = md5_gg(c, d, a, b, x[i+11], 14,&nbsp; 643717713);<BR>&nbsp;&nbsp;&nbsp; b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);<BR>&nbsp;&nbsp;&nbsp; a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);<BR>&nbsp;&nbsp;&nbsp; d = md5_gg(d, a, b, c, x[i+10], 9 ,&nbsp; 38016083);<BR>&nbsp;&nbsp;&nbsp; c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);<BR>&nbsp;&nbsp;&nbsp; b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);<BR>&nbsp;&nbsp;&nbsp; a = md5_gg(a, b, c, d, x[i+ 9], 5 ,&nbsp; 568446438);<BR>&nbsp;&nbsp;&nbsp; d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);<BR>&nbsp;&nbsp;&nbsp; c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);<BR>&nbsp;&nbsp;&nbsp; b = md5_gg(b, c, d, a, x[i+ 8], 20,&nbsp; 1163531501);<BR>&nbsp;&nbsp;&nbsp; a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);<BR>&nbsp;&nbsp;&nbsp; d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);<BR>&nbsp;&nbsp;&nbsp; c = md5_gg(c, d, a, b, x[i+ 7], 14,&nbsp; 1735328473);<BR>&nbsp;&nbsp;&nbsp; b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);</P><P>&nbsp;&nbsp;&nbsp; a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);<BR>&nbsp;&nbsp;&nbsp; d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);<BR>&nbsp;&nbsp;&nbsp; c = md5_hh(c, d, a, b, x[i+11], 16,&nbsp; 1839030562);<BR>&nbsp;&nbsp;&nbsp; b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);<BR>&nbsp;&nbsp;&nbsp; a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);<BR>&nbsp;&nbsp;&nbsp; d = md5_hh(d, a, b, c, x[i+ 4], 11,&nbsp; 1272893353);<BR>&nbsp;&nbsp;&nbsp; c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);<BR>&nbsp;&nbsp;&nbsp; b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);<BR>&nbsp;&nbsp;&nbsp; a = md5_hh(a, b, c, d, x[i+13], 4 ,&nbsp; 681279174);<BR>&nbsp;&nbsp;&nbsp; d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);<BR>&nbsp;&nbsp;&nbsp; c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);<BR>&nbsp;&nbsp;&nbsp; b = md5_hh(b, c, d, a, x[i+ 6], 23,&nbsp; 76029189);<BR>&nbsp;&nbsp;&nbsp; a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);<BR>&nbsp;&nbsp;&nbsp; d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);<BR>&nbsp;&nbsp;&nbsp; c = md5_hh(c, d, a, b, x[i+15], 16,&nbsp; 530742520);<BR>&nbsp;&nbsp;&nbsp; b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);</P><P>&nbsp;&nbsp;&nbsp; a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);<BR>&nbsp;&nbsp;&nbsp; d = md5_ii(d, a, b, c, x[i+ 7], 10,&nbsp; 1126891415);<BR>&nbsp;&nbsp;&nbsp; c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);<BR>&nbsp;&nbsp;&nbsp; b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);<BR>&nbsp;&nbsp;&nbsp; a = md5_ii(a, b, c, d, x[i+12], 6 ,&nbsp; 1700485571);<BR>&nbsp;&nbsp;&nbsp; d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);<BR>&nbsp;&nbsp;&nbsp; c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);<BR>&nbsp;&nbsp;&nbsp; b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);<BR>&nbsp;&nbsp;&nbsp; a = md5_ii(a, b, c, d, x[i+ 8], 6 ,&nbsp; 1873313359);<BR>&nbsp;&nbsp;&nbsp; d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);<BR>&nbsp;&nbsp;&nbsp; c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);<BR>&nbsp;&nbsp;&nbsp; b = md5_ii(b, c, d, a, x[i+13], 21,&nbsp; 1309151649);<BR>&nbsp;&nbsp;&nbsp; a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);<BR>&nbsp;&nbsp;&nbsp; d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);<BR>&nbsp;&nbsp;&nbsp; c = md5_ii(c, d, a, b, x[i+ 2], 15,&nbsp; 718787259);<BR>&nbsp;&nbsp;&nbsp; b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);</P><P>&nbsp;&nbsp;&nbsp; a = safe_add(a, olda);<BR>&nbsp;&nbsp;&nbsp; b = safe_add(b, oldb);<BR>&nbsp;&nbsp;&nbsp; c = safe_add(c, oldc);<BR>&nbsp;&nbsp;&nbsp; d = safe_add(d, oldd);<BR>&nbsp; }<BR>&nbsp; return Array(a, b, c, d);</P><P>}</P><P>/*<BR>&nbsp;* These functions implement the four basic operations the algorithm uses.<BR>&nbsp;*/<BR>function md5_cmn(q, a, b, x, s, t)<BR>{<BR>&nbsp; return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b);<BR>}<BR>function md5_ff(a, b, c, d, x, s, t)<BR>{<BR>&nbsp; return md5_cmn((b &amp; c) | ((~b) &amp; d), a, b, x, s, t);<BR>}<BR>function md5_gg(a, b, c, d, x, s, t)<BR>{<BR>&nbsp; return md5_cmn((b &amp; d) | (c &amp; (~d)), a, b, x, s, t);<BR>}<BR>function md5_hh(a, b, c, d, x, s, t)<BR>{<BR>&nbsp; return md5_cmn(b ^ c ^ d, a, b, x, s, t);<BR>}<BR>function md5_ii(a, b, c, d, x, s, t)<BR>{<BR>&nbsp; return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);<BR>}</P><P>/*<BR>&nbsp;* Calculate the HMAC-MD5, of a key and some data<BR>&nbsp;*/<BR>function core_hmac_md5(key, data)<BR>{<BR>&nbsp; var bkey = str2binl(key);<BR>&nbsp; if(bkey.length &gt; 16) bkey = core_md5(bkey, key.length * chrsz);</P><P>&nbsp; var ipad = Array(16), opad = Array(16);<BR>&nbsp; for(var i = 0; i &lt; 16; i++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ipad[i] = bkey[i] ^ 0x36363636;<BR>&nbsp;&nbsp;&nbsp; opad[i] = bkey[i] ^ 0x5C5C5C5C;<BR>&nbsp; }</P><P>&nbsp; var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz);<BR>&nbsp; return core_md5(opad.concat(hash), 512 + 128);<BR>}</P><P>/*<BR>&nbsp;* Add integers, wrapping at 2^32. This uses 16-bit operations internally<BR>&nbsp;* to work around bugs in some JS interpreters.<BR>&nbsp;*/<BR>function safe_add(x, y)<BR>{<BR>&nbsp; var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);<BR>&nbsp; var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);<BR>&nbsp; return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);<BR>}</P><P>/*<BR>&nbsp;* Bitwise rotate a 32-bit number to the left.<BR>&nbsp;*/<BR>function bit_rol(num, cnt)<BR>{<BR>&nbsp; return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 - cnt));<BR>}</P><P>/*<BR>&nbsp;* Convert a string to an array of little-endian words<BR>&nbsp;* If chrsz is ASCII, characters &gt;255 have their hi-byte silently ignored.<BR>&nbsp;*/<BR>function str2binl(str)<BR>{<BR>&nbsp; var bin = Array();<BR>&nbsp; var mask = (1 &lt;&lt; chrsz) - 1;<BR>&nbsp; for(var i = 0; i &lt; str.length * chrsz; i += chrsz)<BR>&nbsp;&nbsp;&nbsp; bin[i&gt;&gt;5] |= (str.charCodeAt(i / chrsz) &amp; mask) &lt;&lt; (i%32);<BR>&nbsp; return bin;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a string<BR>&nbsp;*/<BR>function binl2str(bin)<BR>{<BR>&nbsp; var str = "";<BR>&nbsp; var mask = (1 &lt;&lt; chrsz) - 1;<BR>&nbsp; for(var i = 0; i &lt; bin.length * 32; i += chrsz)<BR>&nbsp;&nbsp;&nbsp; str += String.fromCharCode((bin[i&gt;&gt;5] &gt;&gt;&gt; (i % 32)) &amp; mask);<BR>&nbsp; return str;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a hex string.<BR>&nbsp;*/<BR>function binl2hex(binarray)<BR>{<BR>&nbsp; var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";<BR>&nbsp; var str = "";<BR>&nbsp; for(var i = 0; i &lt; binarray.length * 4; i++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; str += hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8+4)) &amp; 0xF) +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8&nbsp; )) &amp; 0xF);<BR>&nbsp; }<BR>&nbsp; return str;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a base-64 string<BR>&nbsp;*/<BR>function binl2b64(binarray)<BR>{<BR>&nbsp; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";<BR>&nbsp; var str = "";<BR>&nbsp; for(var i = 0; i &lt; binarray.length * 4; i += 3)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var triplet = (((binarray[i&nbsp;&nbsp; &gt;&gt; 2] &gt;&gt; 8 * ( i&nbsp;&nbsp; %4)) &amp; 0xFF) &lt;&lt; 16)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (((binarray[i+1 &gt;&gt; 2] &gt;&gt; 8 * ((i+1)%4)) &amp; 0xFF) &lt;&lt; 8 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; ((binarray[i+2 &gt;&gt; 2] &gt;&gt; 8 * ((i+2)%4)) &amp; 0xFF);<BR>&nbsp;&nbsp;&nbsp; for(var j = 0; j &lt; 4; j++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i * 8 + j * 6 &gt; binarray.length * 32) str += b64pad;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else str += tab.charAt((triplet &gt;&gt; 6*(3-j)) &amp; 0x3F);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; return str;<BR>}</P><P>&nbsp;</P><P></P></PRE></SPAN></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/emu/aggbug/4764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-05-18 14:53 <a href="http://www.blogjava.net/emu/articles/4764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 版的 MD4  </title><link>http://www.blogjava.net/emu/articles/4763.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 18 May 2005 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/4763.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/4763.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/4763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/4763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/4763.html</trackback:ping><description><![CDATA[<TABLE style="BORDER-COLLAPSE: collapse" width="95%" border=0>
<TBODY>
<TR>
<TD class=BlogArticleTitle><SPAN id=BlogBody_BlogArticleView_lbTitle>javascript 版的 MD4</SPAN> </TD></TR>
<TR>
<TD class=BlogArticleContent>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word"><SPAN id=BlogBody_BlogArticleView_lbContent><PRE><P><P>/*<BR>&nbsp;* A JavaScript implementation of the RSA Data Security, Inc. MD4 Message<BR>&nbsp;* Digest Algorithm, as defined in RFC 1320.<BR>&nbsp;* Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.<BR>&nbsp;* Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet<BR>&nbsp;* Distributed under the BSD License<BR>&nbsp;* See <A href="http://pajhome.org.uk/crypt/md5"><U><FONT color=#0000ff>http://pajhome.org.uk/crypt/md5</FONT></U></A> for more info.<BR>&nbsp;*/</P><P>/*<BR>&nbsp;* Configurable variables. You may need to tweak these to be compatible with<BR>&nbsp;* the server-side, but the defaults work in most cases.<BR>&nbsp;*/<BR>var hexcase = 0;&nbsp; /* hex output format. 0 - lowercase; 1 - uppercase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<BR>var b64pad&nbsp; = ""; /* base-64 pad character. "=" for strict RFC compliance&nbsp;&nbsp; */<BR>var chrsz&nbsp;&nbsp; = 8;&nbsp; /* bits per input character. 8 - ASCII; 16 - Unicode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</P><P>/*<BR>&nbsp;* These are the functions you'll usually want to call<BR>&nbsp;*/<BR>function hex_md4(s){ return binl2hex(core_md4(str2binl(s), s.length * chrsz));}<BR>function b64_md4(s){ return binl2b64(core_md4(str2binl(s), s.length * chrsz));}<BR>function str_md4(s){ return binl2str(core_md4(str2binl(s), s.length * chrsz));}<BR>function hex_hmac_md4(key, data) { return binl2hex(core_hmac_md4(key, data)); }<BR>function b64_hmac_md4(key, data) { return binl2b64(core_hmac_md4(key, data)); }<BR>function str_hmac_md4(key, data) { return binl2str(core_hmac_md4(key, data)); }</P><P>/* <BR>&nbsp;* Perform a simple self-test to see if the VM is working <BR>&nbsp;*/<BR>function md4_vm_test()<BR>{<BR>&nbsp; return hex_md4("abc") == "a448017aaf21d8525fc10ae87aa6729d";<BR>}</P><P>/*<BR>&nbsp;* Calculate the MD4 of an array of little-endian words, and a bit length<BR>&nbsp;*/<BR>function core_md4(x, len)<BR>{<BR>&nbsp; /* append padding */<BR>&nbsp; x[len &gt;&gt; 5] |= 0x80 &lt;&lt; (len % 32);<BR>&nbsp; x[(((len + 64) &gt;&gt;&gt; 9) &lt;&lt; 4) + 14] = len;<BR>&nbsp; <BR>&nbsp; var a =&nbsp; 1732584193;<BR>&nbsp; var b = -271733879;<BR>&nbsp; var c = -1732584194;<BR>&nbsp; var d =&nbsp; 271733878;</P><P>&nbsp; for(var i = 0; i &lt; x.length; i += 16)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var olda = a;<BR>&nbsp;&nbsp;&nbsp; var oldb = b;<BR>&nbsp;&nbsp;&nbsp; var oldc = c;<BR>&nbsp;&nbsp;&nbsp; var oldd = d;</P><P>&nbsp;&nbsp;&nbsp; a = md4_ff(a, b, c, d, x[i+ 0], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_ff(d, a, b, c, x[i+ 1], 7 );<BR>&nbsp;&nbsp;&nbsp; c = md4_ff(c, d, a, b, x[i+ 2], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_ff(b, c, d, a, x[i+ 3], 19);<BR>&nbsp;&nbsp;&nbsp; a = md4_ff(a, b, c, d, x[i+ 4], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_ff(d, a, b, c, x[i+ 5], 7 );<BR>&nbsp;&nbsp;&nbsp; c = md4_ff(c, d, a, b, x[i+ 6], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_ff(b, c, d, a, x[i+ 7], 19);<BR>&nbsp;&nbsp;&nbsp; a = md4_ff(a, b, c, d, x[i+ 8], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_ff(d, a, b, c, x[i+ 9], 7 );<BR>&nbsp;&nbsp;&nbsp; c = md4_ff(c, d, a, b, x[i+10], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_ff(b, c, d, a, x[i+11], 19);<BR>&nbsp;&nbsp;&nbsp; a = md4_ff(a, b, c, d, x[i+12], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_ff(d, a, b, c, x[i+13], 7 );<BR>&nbsp;&nbsp;&nbsp; c = md4_ff(c, d, a, b, x[i+14], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_ff(b, c, d, a, x[i+15], 19);</P><P>&nbsp;&nbsp;&nbsp; a = md4_gg(a, b, c, d, x[i+ 0], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_gg(d, a, b, c, x[i+ 4], 5 );<BR>&nbsp;&nbsp;&nbsp; c = md4_gg(c, d, a, b, x[i+ 8], 9 );<BR>&nbsp;&nbsp;&nbsp; b = md4_gg(b, c, d, a, x[i+12], 13);<BR>&nbsp;&nbsp;&nbsp; a = md4_gg(a, b, c, d, x[i+ 1], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_gg(d, a, b, c, x[i+ 5], 5 );<BR>&nbsp;&nbsp;&nbsp; c = md4_gg(c, d, a, b, x[i+ 9], 9 );<BR>&nbsp;&nbsp;&nbsp; b = md4_gg(b, c, d, a, x[i+13], 13);<BR>&nbsp;&nbsp;&nbsp; a = md4_gg(a, b, c, d, x[i+ 2], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_gg(d, a, b, c, x[i+ 6], 5 );<BR>&nbsp;&nbsp;&nbsp; c = md4_gg(c, d, a, b, x[i+10], 9 );<BR>&nbsp;&nbsp;&nbsp; b = md4_gg(b, c, d, a, x[i+14], 13);<BR>&nbsp;&nbsp;&nbsp; a = md4_gg(a, b, c, d, x[i+ 3], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_gg(d, a, b, c, x[i+ 7], 5 );<BR>&nbsp;&nbsp;&nbsp; c = md4_gg(c, d, a, b, x[i+11], 9 );<BR>&nbsp;&nbsp;&nbsp; b = md4_gg(b, c, d, a, x[i+15], 13);</P><P>&nbsp;&nbsp;&nbsp; a = md4_hh(a, b, c, d, x[i+ 0], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_hh(d, a, b, c, x[i+ 8], 9 );<BR>&nbsp;&nbsp;&nbsp; c = md4_hh(c, d, a, b, x[i+ 4], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_hh(b, c, d, a, x[i+12], 15);<BR>&nbsp;&nbsp;&nbsp; a = md4_hh(a, b, c, d, x[i+ 2], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_hh(d, a, b, c, x[i+10], 9 );<BR>&nbsp;&nbsp;&nbsp; c = md4_hh(c, d, a, b, x[i+ 6], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_hh(b, c, d, a, x[i+14], 15);<BR>&nbsp;&nbsp;&nbsp; a = md4_hh(a, b, c, d, x[i+ 1], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_hh(d, a, b, c, x[i+ 9], 9 );<BR>&nbsp;&nbsp;&nbsp; c = md4_hh(c, d, a, b, x[i+ 5], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_hh(b, c, d, a, x[i+13], 15);<BR>&nbsp;&nbsp;&nbsp; a = md4_hh(a, b, c, d, x[i+ 3], 3 );<BR>&nbsp;&nbsp;&nbsp; d = md4_hh(d, a, b, c, x[i+11], 9 );<BR>&nbsp;&nbsp;&nbsp; c = md4_hh(c, d, a, b, x[i+ 7], 11);<BR>&nbsp;&nbsp;&nbsp; b = md4_hh(b, c, d, a, x[i+15], 15);</P><P>&nbsp;&nbsp;&nbsp; a = safe_add(a, olda);<BR>&nbsp;&nbsp;&nbsp; b = safe_add(b, oldb);<BR>&nbsp;&nbsp;&nbsp; c = safe_add(c, oldc);<BR>&nbsp;&nbsp;&nbsp; d = safe_add(d, oldd);</P><P>&nbsp; }<BR>&nbsp; return Array(a, b, c, d);</P><P>}</P><P>/*<BR>&nbsp;* These functions implement the basic operation for each round of the<BR>&nbsp;* algorithm.<BR>&nbsp;*/<BR>function md4_cmn(q, a, b, x, s, t)<BR>{<BR>&nbsp; return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);<BR>}<BR>function md4_ff(a, b, c, d, x, s)<BR>{<BR>&nbsp; return md4_cmn((b &amp; c) | ((~b) &amp; d), a, 0, x, s, 0);<BR>}<BR>function md4_gg(a, b, c, d, x, s)<BR>{<BR>&nbsp; return md4_cmn((b &amp; c) | (b &amp; d) | (c &amp; d), a, 0, x, s, 1518500249);<BR>}<BR>function md4_hh(a, b, c, d, x, s)<BR>{<BR>&nbsp; return md4_cmn(b ^ c ^ d, a, 0, x, s, 1859775393);<BR>}</P><P>/*<BR>&nbsp;* Calculate the HMAC-MD4, of a key and some data<BR>&nbsp;*/<BR>function core_hmac_md4(key, data)<BR>{<BR>&nbsp; var bkey = str2binl(key);<BR>&nbsp; if(bkey.length &gt; 16) bkey = core_md4(bkey, key.length * chrsz);</P><P>&nbsp; var ipad = Array(16), opad = Array(16);<BR>&nbsp; for(var i = 0; i &lt; 16; i++) <BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ipad[i] = bkey[i] ^ 0x36363636;<BR>&nbsp;&nbsp;&nbsp; opad[i] = bkey[i] ^ 0x5C5C5C5C;<BR>&nbsp; }</P><P>&nbsp; var hash = core_md4(ipad.concat(str2binl(data)), 512 + data.length * chrsz);<BR>&nbsp; return core_md4(opad.concat(hash), 512 + 128);<BR>}</P><P>/*<BR>&nbsp;* Add integers, wrapping at 2^32. This uses 16-bit operations internally<BR>&nbsp;* to work around bugs in some JS interpreters.<BR>&nbsp;*/<BR>function safe_add(x, y)<BR>{<BR>&nbsp; var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);<BR>&nbsp; var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);<BR>&nbsp; return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);<BR>}</P><P>/*<BR>&nbsp;* Bitwise rotate a 32-bit number to the left.<BR>&nbsp;*/<BR>function rol(num, cnt)<BR>{<BR>&nbsp; return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 - cnt));<BR>}</P><P>/*<BR>&nbsp;* Convert a string to an array of little-endian words<BR>&nbsp;* If chrsz is ASCII, characters &gt;255 have their hi-byte silently ignored.<BR>&nbsp;*/<BR>function str2binl(str)<BR>{<BR>&nbsp; var bin = Array();<BR>&nbsp; var mask = (1 &lt;&lt; chrsz) - 1;<BR>&nbsp; for(var i = 0; i &lt; str.length * chrsz; i += chrsz)<BR>&nbsp;&nbsp;&nbsp; bin[i&gt;&gt;5] |= (str.charCodeAt(i / chrsz) &amp; mask) &lt;&lt; (i%32);<BR>&nbsp; return bin;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a string<BR>&nbsp;*/<BR>function binl2str(bin)<BR>{<BR>&nbsp; var str = "";<BR>&nbsp; var mask = (1 &lt;&lt; chrsz) - 1;<BR>&nbsp; for(var i = 0; i &lt; bin.length * 32; i += chrsz)<BR>&nbsp;&nbsp;&nbsp; str += String.fromCharCode((bin[i&gt;&gt;5] &gt;&gt;&gt; (i % 32)) &amp; mask);<BR>&nbsp; return str;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a hex string.<BR>&nbsp;*/<BR>function binl2hex(binarray)<BR>{<BR>&nbsp; var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";<BR>&nbsp; var str = "";<BR>&nbsp; for(var i = 0; i &lt; binarray.length * 4; i++)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; str += hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8+4)) &amp; 0xF) +<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hex_tab.charAt((binarray[i&gt;&gt;2] &gt;&gt; ((i%4)*8&nbsp; )) &amp; 0xF);<BR>&nbsp; }<BR>&nbsp; return str;<BR>}</P><P>/*<BR>&nbsp;* Convert an array of little-endian words to a base-64 string<BR>&nbsp;*/<BR>function binl2b64(binarray)<BR>{<BR>&nbsp; var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";<BR>&nbsp; var str = "";<BR>&nbsp; for(var i = 0; i &lt; binarray.length * 4; i += 3)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var triplet = (((binarray[i&nbsp;&nbsp; &gt;&gt; 2] &gt;&gt; 8 * ( i&nbsp;&nbsp; %4)) &amp; 0xFF) &lt;&lt; 16)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | (((binarray[i+1 &gt;&gt; 2] &gt;&gt; 8 * ((i+1)%4)) &amp; 0xFF) &lt;&lt; 8 )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; ((binarray[i+2 &gt;&gt; 2] &gt;&gt; 8 * ((i+2)%4)) &amp; 0xFF);<BR>&nbsp;&nbsp;&nbsp; for(var j = 0; j &lt; 4; j++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i * 8 + j * 6 &gt; binarray.length * 32) str += b64pad;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else str += tab.charAt((triplet &gt;&gt; 6*(3-j)) &amp; 0x3F);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; return str;<BR>}<BR></P><P></P></PRE></SPAN></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/emu/aggbug/4763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-05-18 14:52 <a href="http://www.blogjava.net/emu/articles/4763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript 版的 sha-1  </title><link>http://www.blogjava.net/emu/articles/4762.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 18 May 2005 06:50:00 GMT</pubDate><guid>http://www.blogjava.net/emu/articles/4762.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/4762.html</wfw:comment><comments>http://www.blogjava.net/emu/articles/4762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/4762.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/4762.html</trackback:ping><description><![CDATA[<TABLE style="BORDER-COLLAPSE: collapse" width="95%" border=0>
<TBODY>
<TR>
<TD class=BlogArticleTitle><SPAN id=BlogBody_BlogArticleView_lbTitle>javascript 版的 sha-1 </SPAN></TD></TR>
<TR>
<TD class=BlogArticleContent>
<TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 width="100%" border=0>
<TBODY>
<TR>
<TD style="LEFT: 0px; WIDTH: 100%; WORD-WRAP: break-word"><SPAN id=BlogBody_BlogArticleView_lbContent><PRE><P>&nbsp;<PRE><P>/*<BR>&nbsp;* A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined<BR>&nbsp;* in FIPS PUB 180-1<BR>&nbsp;* Copyright (C) Paul Johnston 2000 - 2002.<BR>&nbsp;* See <A href="http://pajhome.org.uk/site/legal.html"><U><FONT color=#0000ff>http://pajhome.org.uk/site/legal.html</FONT></U></A> for details.<BR>&nbsp;*/</P><P>/*<BR>&nbsp;* Convert a 32-bit number to a hex string with ms-byte first<BR>&nbsp;*/<BR>var hex_chr = "0123456789abcdef";<BR>function hex(num)<BR>{<BR>&nbsp; var str = "";<BR>&nbsp; for(var j = 7; j &gt;= 0; j--)<BR>&nbsp;&nbsp;&nbsp; str += hex_chr.charAt((num &gt;&gt; (j * 4)) &amp; 0x0F);<BR>&nbsp; return str;<BR>}</P><P>/*<BR>&nbsp;* Convert a string to a sequence of 16-word blocks, stored as an array.<BR>&nbsp;* Append padding bits and the length, as described in the SHA1 standard.<BR>&nbsp;*/<BR>function str2blks_SHA1(str)<BR>{<BR>&nbsp; var nblk = ((str.length + 8) &gt;&gt; 6) + 1;<BR>&nbsp; var blks = new Array(nblk * 16);<BR>&nbsp; for(var i = 0; i &lt; nblk * 16; i++) blks[i] = 0;<BR>&nbsp; for(var i = 0; i &lt; str.length; i++)<BR>&nbsp;&nbsp;&nbsp; blks[i &gt;&gt; 2] |= str.charCodeAt(i) &lt;&lt; (24 - (i % 4) * 8);<BR>&nbsp; blks[i &gt;&gt; 2] |= 0x80 &lt;&lt; (24 - (i % 4) * 8);<BR>&nbsp; blks[nblk * 16 - 1] = str.length * 8;<BR>&nbsp; return blks;<BR>}</P><P>/*<BR>&nbsp;* Add integers, wrapping at 2^32. This uses 16-bit operations internally<BR>&nbsp;* to work around bugs in some JS interpreters.<BR>&nbsp;*/<BR>function safe_add(x, y)<BR>{<BR>&nbsp; var lsw = (x &amp; 0xFFFF) + (y &amp; 0xFFFF);<BR>&nbsp; var msw = (x &gt;&gt; 16) + (y &gt;&gt; 16) + (lsw &gt;&gt; 16);<BR>&nbsp; return (msw &lt;&lt; 16) | (lsw &amp; 0xFFFF);<BR>}</P><P>/*<BR>&nbsp;* Bitwise rotate a 32-bit number to the left<BR>&nbsp;*/<BR>function rol(num, cnt)<BR>{<BR>&nbsp; return (num &lt;&lt; cnt) | (num &gt;&gt;&gt; (32 - cnt));<BR>}</P><P>/*<BR>&nbsp;* Perform the appropriate triplet combination function for the current<BR>&nbsp;* iteration<BR>&nbsp;*/<BR>function ft(t, b, c, d)<BR>{<BR>&nbsp; if(t &lt; 20) return (b &amp; c) | ((~b) &amp; d);<BR>&nbsp; if(t &lt; 40) return b ^ c ^ d;<BR>&nbsp; if(t &lt; 60) return (b &amp; c) | (b &amp; d) | (c &amp; d);<BR>&nbsp; return b ^ c ^ d;<BR>}</P><P>/*<BR>&nbsp;* Determine the appropriate additive constant for the current iteration<BR>&nbsp;*/<BR>function kt(t)<BR>{<BR>&nbsp; return (t &lt; 20) ?&nbsp; 1518500249 : (t &lt; 40) ?&nbsp; 1859775393 :<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (t &lt; 60) ? -1894007588 : -899497514;<BR>}</P><P>/*<BR>&nbsp;* Take a string and return the hex representation of its SHA-1.<BR>&nbsp;*/<BR>function calcSHA1(str)<BR>{<BR>&nbsp; var x = str2blks_SHA1(str);<BR>&nbsp; var w = new Array(80);</P><P>&nbsp; var a =&nbsp; 1732584193;<BR>&nbsp; var b = -271733879;<BR>&nbsp; var c = -1732584194;<BR>&nbsp; var d =&nbsp; 271733878;<BR>&nbsp; var e = -1009589776;</P><P>&nbsp; for(var i = 0; i &lt; x.length; i += 16)<BR>&nbsp; {<BR>&nbsp;&nbsp;&nbsp; var olda = a;<BR>&nbsp;&nbsp;&nbsp; var oldb = b;<BR>&nbsp;&nbsp;&nbsp; var oldc = c;<BR>&nbsp;&nbsp;&nbsp; var oldd = d;<BR>&nbsp;&nbsp;&nbsp; var olde = e;</P><P>&nbsp;&nbsp;&nbsp; for(var j = 0; j &lt; 80; j++)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(j &lt; 16) w[j] = x[i + j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var t = safe_add(safe_add(rol(a, 5), ft(j, b, c, d)), safe_add(safe_add(e, w[j]), kt(j)));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e = d;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d = c;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c = rol(b, 30);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b = a;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a = t;<BR>&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp; a = safe_add(a, olda);<BR>&nbsp;&nbsp;&nbsp; b = safe_add(b, oldb);<BR>&nbsp;&nbsp;&nbsp; c = safe_add(c, oldc);<BR>&nbsp;&nbsp;&nbsp; d = safe_add(d, oldd);<BR>&nbsp;&nbsp;&nbsp; e = safe_add(e, olde);<BR>&nbsp; }<BR>&nbsp; return hex(a) + hex(b) + hex(c) + hex(d) + hex(e);<BR>}<BR></P></PRE><P></P></PRE></SPAN></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD height=22>
<HR color=#dcdcdc SIZE=1>
</TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/emu/aggbug/4762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/emu/" target="_blank">emu</a> 2005-05-18 14:50 <a href="http://www.blogjava.net/emu/articles/4762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>