﻿<?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</title><link>http://www.blogjava.net/emu/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 16 Mar 2010 19:56:17 GMT</lastBuildDate><pubDate>Tue, 16 Mar 2010 19:56:17 GMT</pubDate><ttl>60</ttl><item><title>[翻译]加速Javascript：DOM操作优化</title><link>http://www.blogjava.net/emu/archive/2010/03/01/314185.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 01 Mar 2010 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2010/03/01/314185.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/314185.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2010/03/01/314185.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/314185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/314185.html</trackback:ping><description><![CDATA[<p>原文：《Speeding up JavaScript: Working with the DOM》</p>
<p>作者： KeeKim Heng, Google Web Developer</p>
<p>在我们开发互联网富应用（RIA）时，我们经常写一些javascript脚本来修改或者增加页面元素，这些工作最终是DOM——或者说文档对象模型——来完成的，而我们的实现方式会影响到应用的响应速度。</p>
<p>DOM操作会导致浏览器重解析(reflow)，这是浏览器的一个决定页面元素如何展现的计算过程。直接修改DOM，修改元素的CSS样式，修改浏览器的窗口大小，都会触发重解析。读取元素的布局属性比如offsetHeithe或者offsetWidth也会触发重解析。重解析需要花费计算时间，因此重解析触发的越少，应用就会越快。</p>
<p>DOM操作通常要不就是修改已经存在的页面上的元素，要不就是创建新的页面元素。下面的4种优化方案覆盖了修改和创建DOM节点两种方式，帮助你减少触发浏览器重解析的次数。<br />
<br />
</p>
<p><span style="font-size: 18pt"><strong>方案一：通过CSS类名切换来修改DOM</strong></span>&nbsp;</p>
<p>这个方案让我们可以一次性修改一个元素和它的子元素的多个样式属性而只触发一次重解析。</p>
<p>需求：</p>
<p>（emu注：原文作者写到这里的时候脑子显然短路了一下，把后面的Out-of-the-flow DOM Manipulation模式要解决的问题给摆到这里来了，不过从示范代码中很容易明白作者真正想描述的问题，因此emu就不照翻原文了）</p>
<p>我们现在需要写一个函数来修改一个超链接的几个样式规则。要实现很简单，把这几个规则对应的属性逐一改了就好了。但是带来的问题是，每修改一个样式属性，都会导致一次页面的重解析。<br />
</p>
<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">function</span><span style="color: #000000">&nbsp;selectAnchor(element)&nbsp;{<br />
&nbsp;&nbsp;element.style.fontWeight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'bold';<br />
&nbsp;&nbsp;element.style.textDecoration&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'none';<br />
&nbsp;&nbsp;element.style.color&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'#</span><span style="color: #000000">000</span><span style="color: #000000">';<br />
}</span></div>
<p>&nbsp;</p>
<p><strong>解决方案</strong></p>
<p>要解决这个问题，我们可以先创建一个样式名，并且把要修改的样式规则都放到这个类名上，然后我们给超链接添加上这个新类名，就可以实现添加几个样式规则而只触发一次重解析了。这个模式还有个好处是也实现了表现和逻辑相分离。</p>
<p><br />
&nbsp;</p>
<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">.selectedAnchor&nbsp;{<br />
&nbsp;&nbsp;font</span><span style="color: #000000">-</span><span style="color: #000000">weight:&nbsp;bold;<br />
&nbsp;&nbsp;text</span><span style="color: #000000">-</span><span style="color: #000000">decoration:&nbsp;none;<br />
&nbsp;&nbsp;color:&nbsp;#</span><span style="color: #000000">000</span><span style="color: #000000">;<br />
}<br />
<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;selectAnchor(element)&nbsp;{<br />
&nbsp;&nbsp;element.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'selectedAnchor';<br />
}</span></div>
<br />
<strong><span style="font-size: 18pt"><strong>方案二：在非渲染区修改DOM</strong> </span></strong>
<p>（emu注：作者在这里再次脑子短路，把DocumentFragment DOM Generation模式的介绍提前到这里来了，emu只好再次发挥一下）<br />
上一个方案解决的是修改一个超链接的问题，当一次需要对很多个超链接进行相同修改的时候，这个方案就可以大显身手了。</p>
<p><strong>需求</strong></p>
<p>需求是这样的，我们要写一个函数来修改一个指定元素的子元素中所有的超链接的样式名（className）属性。要实现很简单，我们可以通过遍历每个超链接并且修改它们的样式名来完成任务。但是带来的问题就是，每修改一个超链接都会导致一次重解析。</p>
<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">function</span><span style="color: #000000">&nbsp;updateAllAnchors(element,&nbsp;anchorClass)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;anchors&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;element.getElementsByTagName('a');<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchors.length;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;length;&nbsp;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchors[i].className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorClass;<br />
&nbsp;&nbsp;}<br />
}</span></div>
<br />
<p><strong>解决方案</strong></p>
<p>要解决这个问题，我们可以把被修改的指定元素从DOM里面移除，再修改所有的超链接，然后在把这个元素插入回到它原来的位置上。为了完成这个复杂的操作，我们可以先写一个可重用的函数，它不但移除了这个DOM节点，还返回了一个把元素插回到原来的位置的函数。</p>
<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: #008000">/*</span><span style="color: #008000">*<br />
&nbsp;*&nbsp;Remove&nbsp;an&nbsp;element&nbsp;and&nbsp;provide&nbsp;a&nbsp;function&nbsp;that&nbsp;inserts&nbsp;it&nbsp;into&nbsp;its&nbsp;original&nbsp;position<br />
&nbsp;*&nbsp;@param&nbsp;element&nbsp;{Element}&nbsp;The&nbsp;element&nbsp;to&nbsp;be&nbsp;temporarily&nbsp;removed<br />
&nbsp;*&nbsp;@return&nbsp;{Function}&nbsp;A&nbsp;function&nbsp;that&nbsp;inserts&nbsp;the&nbsp;element&nbsp;into&nbsp;its&nbsp;original&nbsp;position<br />
&nbsp;*</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;removeToInsertLater(element)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;parentNode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;element.parentNode;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;nextSibling&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;element.nextSibling;<br />
&nbsp;&nbsp;parentNode.removeChild(element);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(nextSibling)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentNode.insertBefore(element,&nbsp;nextSibling);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parentNode.appendChild(element);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;};<br />
}</span></div>
<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">function</span><span style="color: #000000">&nbsp;updateAllAnchors(element,&nbsp;anchorClass)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;insertFunction&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;removeToInsertLater(element);<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;anchors&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;element.getElementsByTagName('a');<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;length&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchors.length;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;length;&nbsp;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchors[i].className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorClass;<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;insertFunction();<br />
}</span></div>
<br />
<p><span style="font-size: large"><strong>方案三：一次性的DOM元素生成</strong></span></p>
<p>这个方案让我们创建一个元素的过程只触发一次重解析。在创建完元素以后，先进行所有需要的修改，最后才把它插入到DOM里面去就可以了</p>
<p><strong>需求</strong></p>
<p>需求是这样的，实现一个函数，往一个指定的父元素上插入一个超链接元素。这个函数要同时可以设置这个超链接的显示文字和样式类。我们可以这样做：创建元素，插入到DOM里面，然后设置相应的属性。这就要触发3次重解析。</p>
<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">function</span><span style="color: #000000">&nbsp;addAnchor(parentElement,&nbsp;anchorText,&nbsp;anchorClass)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;element&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('a');<br />
&nbsp;&nbsp;parentElement.appendChild(element);<br />
&nbsp;&nbsp;element.innerHTML&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorText;<br />
&nbsp;&nbsp;element.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorClass;<br />
}</span></div>
<br />
<p><strong>解决方案</strong></p>
<p>很简单，我们只要把插入元素这个操作放到最后做，就可以只进行一次重解析了。</p>
<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">function</span><span style="color: #000000">&nbsp;addAnchor(parentElement,&nbsp;anchorText,&nbsp;anchorClass)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;element&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('a');<br />
&nbsp;&nbsp;element.innerHTML&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorText;<br />
&nbsp;&nbsp;element.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;anchorClass;<br />
&nbsp;&nbsp;parentElement.appendChild(element);<br />
}</span></div>
<br />
<p>不过，要是我们想要插入很多个超链接到一个元素里面的话，那么这个做法还是有问题：每插入一个超链接还是要触发一次重解析。下一个方案可以解决这个问题。</p>
<p><strong style="font-size: 18pt">方案四：通过文档片段对象（DocumentFragment）创建一组元素</strong></p>
<p>这个方案允许我们创建并插入很多个元素而只触发一次重解析。要实现这点需要用到所谓的文档片段对象（DocumentFragment）。我们先在DOM之外创建一个文档片段对象（这样它也就不需要解析和渲染），然后我们在文档片段对象中创建很多个元素，最后我们把这个文档片段对象中所有的元素一次性放到DOM里面去，只触发一次重解析。</p>
<p><strong>需求</strong></p>
<p><br />
我们要写一个函数，往一个指定的元素上面增加10个超链接。如果我们简单的直接插入10个超链接到元素上面，就会触发10次重解析。</p>
<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">function</span><span style="color: #000000">&nbsp;addAnchors(element)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;anchor;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchor&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('a');<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchor.innerHTML&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'test';<br />
&nbsp;&nbsp;&nbsp;&nbsp;element.appendChild(anchor);<br />
&nbsp;&nbsp;}<br />
}</span></div>
<br />
<p><strong>解决方案</strong></p>
<p>要解决这个问题，我们要先创建一个文档片段对象，然后把每个新创建的超链接都插入到它里面去。当我们把文档片段对象用appendChild命令插入到指定的节点时，这个文档片段对象的所有子节点就一起被插入到指定的元素里面，而且只需要触发一次重解析。<br />
<br />
</p>
<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">function</span><span style="color: #000000">&nbsp;addAnchors(element)&nbsp;{<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;anchor,&nbsp;fragment&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createDocumentFragment();<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchor&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('a');<br />
&nbsp;&nbsp;&nbsp;&nbsp;anchor.innerHTML&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'test';<br />
&nbsp;&nbsp;&nbsp;&nbsp;fragment.appendChild(anchor);<br />
&nbsp;&nbsp;}<br />
&nbsp;&nbsp;element.appendChild(fragment);<br />
}</span></div>
<br />
<br />
<em style="font-size: 10pt">注意：如无特别声明，本文中引用的所有程序均不是Google开发，也与Google没有其他什么关系。这些程序引发的责任均由其开发者或者所有者自己承担，与google无关。</em>
<img src ="http://www.blogjava.net/emu/aggbug/314185.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-03-01 17:20 <a href="http://www.blogjava.net/emu/archive/2010/03/01/314185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[翻译] 压缩，让网络更快</title><link>http://www.blogjava.net/emu/archive/2010/02/18/313398.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 18 Feb 2010 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2010/02/18/313398.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/313398.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2010/02/18/313398.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/313398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/313398.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 互联网上，每天有超过99人年浪费在下载未经压缩的内容上面。虽然支持压缩已经是每个现代的浏览器的标准功能了，但是它们的使用者们往往还是由于这样那样的原因不能下载到压缩的数据。这样就造成了带宽浪费并且拖慢了用户和网页的交互。&nbsp;&nbsp;<a href='http://www.blogjava.net/emu/archive/2010/02/18/313398.html'>阅读全文</a><img src ="http://www.blogjava.net/emu/aggbug/313398.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-02-18 17:00 <a href="http://www.blogjava.net/emu/archive/2010/02/18/313398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谷歌的在线翻译API很好用哈哈</title><link>http://www.blogjava.net/emu/archive/2010/02/15/313141.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 15 Feb 2010 15:50:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2010/02/15/313141.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/313141.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2010/02/15/313141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/313141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/313141.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: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Strict//EN"&nbsp;"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&nbsp;</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 />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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=utf-8"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Google&nbsp;AJAX&nbsp;Language&nbsp;API&nbsp;-&nbsp;Basic&nbsp;Translation</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="http://www.google.com/jsapi"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="background-color: #f5f5f5; color: #000000"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;google.load(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">language</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">,&nbsp;</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">);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">function</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;initialize()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;google.language.translate(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">Happy&nbsp;new&nbsp;year!</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">,&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">en</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">,&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">zh-CN</span><span style="background-color: #f5f5f5; color: #000000">"</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">(result)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">if</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;(</span><span style="background-color: #f5f5f5; color: #000000">!</span><span style="background-color: #f5f5f5; color: #000000">result.error)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff">var</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;container&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;document.getElementById(</span><span style="background-color: #f5f5f5; color: #000000">"</span><span style="background-color: #f5f5f5; color: #000000">translation</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;container.innerHTML&nbsp;</span><span style="background-color: #f5f5f5; color: #000000">=</span><span style="background-color: #f5f5f5; color: #000000">&nbsp;result.translation;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;google.setOnLoadCallback(initialize);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="translation"</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 />
&nbsp;&nbsp;</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/313141.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-02-15 23:50 <a href="http://www.blogjava.net/emu/archive/2010/02/15/313141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于firefox下setTimeout的诡异函数</title><link>http://www.blogjava.net/emu/archive/2010/01/19/310127.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 19 Jan 2010 11:51:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2010/01/19/310127.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/310127.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2010/01/19/310127.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/310127.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/310127.html</trackback:ping><description><![CDATA[舜子老早就反应过<a href="http://www.pjhome.net/article/Javascript/756.htm">这个问题</a>了，当时也没有留心去好奇一下。今天jayyang有再提起，上mozilla查了一下，原来有<a href="https://developer.mozilla.org/en/DOM/window.setTimeout">文档说明</a>的：<br />
<strong>Lateness" argument</strong>
<p>Functions invoked by setTimeout are passed an extra "lateness" argument in Mozilla, i.e., the lateness of the timeout in milliseconds.</p>
<br />
写个小脚本测试了一下，果然不错<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">var</span><span style="color: #000000">&nbsp;delay</span><span style="color: #000000">=</span><span style="color: #000000">3000</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">/</span><span style="color: #000000">firefox</span><span style="color: #000000">/</span><span style="color: #000000">i.test(navigator.userAgent)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;setTimeout(test,delay)<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</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">else</span><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">只有&nbsp;firefox&nbsp;浏览器支持&nbsp;Lateness&nbsp;参数！</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
}<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;test(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">arguments[arguments.length</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">你点alert之前犹豫了</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">(t</span><span style="color: #000000">&lt;</span><span style="color: #000000">2</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">delay:delay</span><span style="color: #000000">+</span><span style="color: #000000">t)</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">)<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/emu/aggbug/310127.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-19 19:51 <a href="http://www.blogjava.net/emu/archive/2010/01/19/310127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>flash player往页面注入的脚本表现了adobe的临时工水平</title><link>http://www.blogjava.net/emu/archive/2010/01/16/309769.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sat, 16 Jan 2010 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2010/01/16/309769.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/309769.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2010/01/16/309769.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/309769.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/309769.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">function</span><span style="color: #000000">&nbsp;__flash__arrayToXML(obj)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;array&gt;</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;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">obj.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="font-size: 24pt; color: red"><strong>+=</strong></span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;property&nbsp;id=\</span><span style="color: #000000">""</span><span style="color: #000000">&nbsp;+&nbsp;i&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;__flash__toXML(obj[i])&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/property&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/array&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;__flash__argumentsToXML(obj,index)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;arguments&gt;</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;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">index;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">obj.length;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="font-size: 24pt; color: red"><strong>+=</strong></span><span style="color: #000000">&nbsp;__flash__toXML(obj[i]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/arguments&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;__flash__objectToXML(obj)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;object&gt;</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;(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;prop&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;obj)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;</span><span style="font-size: 24pt; color: red"><strong>+=</strong></span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;property&nbsp;id=\</span><span style="color: #000000">""</span><span style="color: #000000">&nbsp;+&nbsp;prop&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;__flash__toXML(obj[prop])&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/property&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/object&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
}<br />
</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;__flash__escapeXML(s)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s.replace(</span><span style="color: #000000">/&amp;/</span><span style="color: #000000">g,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&amp;amp;</span><span style="color: #000000">"</span><span style="color: #000000">).replace(</span><span style="color: #000000">/&lt;/</span><span style="color: #000000">g,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&amp;lt;</span><span style="color: #000000">"</span><span style="color: #000000">).replace(</span><span style="color: #000000">/&gt;/</span><span style="color: #000000">g,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&amp;gt;</span><span style="color: #000000">"</span><span style="color: #000000">).replace(</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">/g,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&amp;</span><span style="color: #000000">quot;</span><span style="color: #000000">"</span><span style="color: #000000">).replace(/'/g,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&amp;</span><span style="color: #000000">apos;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}<br />
function&nbsp;__flash__toXML(value)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;var&nbsp;type&nbsp;=&nbsp;typeof(value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(type&nbsp;==&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">string</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">string</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;+&nbsp;__flash__escapeXML(value)&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/</span><span style="color: #000000">string</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(type&nbsp;==&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">undefined</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">undefined</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(type&nbsp;==&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">number</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">number</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;+&nbsp;value&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/</span><span style="color: #000000">number</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(value&nbsp;==&nbsp;null)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">null</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(type&nbsp;==&nbsp;</span><span style="color: #000000">"</span><span style="color: #0000ff">boolean</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;value&nbsp;?&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">true</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">false</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(value&nbsp;instanceof&nbsp;Date)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;+&nbsp;value.getTime()&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/</span><span style="color: #000000">date</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(value&nbsp;instanceof&nbsp;Array)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;__flash__arrayToXML(value);<br />
&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(type&nbsp;==&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">object</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;__flash__objectToXML(value);<br />
&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">null</span><span style="color: #000000">/&gt;</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;//???<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
function&nbsp;__flash__addCallback(instance,&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;instance[name]&nbsp;=&nbsp;function&nbsp;()&nbsp;{&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;eval(instance.CallFunction(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;</span><span style="color: #000000">invoke&nbsp;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">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">&nbsp;returntype</span><span style="color: #000000">=</span><span style="color: #000000">\</span><span style="color: #000000">"</span><span style="color: #000000">javascript\</span><span style="color: #000000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;+&nbsp;__flash__argumentsToXML(arguments,0)&nbsp;+&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;/</span><span style="color: #000000">invoke</span><span style="color: #000000">&gt;</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;}<br />
}<br />
function&nbsp;__flash__removeCallback(instance,&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;instance[name]&nbsp;=&nbsp;null;<br />
}<br />
</span></div>
<br />
啥都甭说了，看看上面这几个&#8220;+=&#8221;，已经把啥都说了。刚看到youyee同学定位到一个严重性能瓶颈并表情上面把这段flash往页面里面注入的代码贴出来的时候，emu简直无法相信。<br />
还好大家都是干这行的，在flash注入完上述脚本后再覆盖（一开始误为重载了，感谢<a id="AjaxHolder_Comments_CommentList_ctl01_NameLink" target="_blank">jee</a>等同学的）掉这几个函数并不为难，最多就是为之难受罢了。<br />
<img src ="http://www.blogjava.net/emu/aggbug/309769.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 13:09 <a href="http://www.blogjava.net/emu/archive/2010/01/16/309769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE8下对cookie的限制。</title><link>http://www.blogjava.net/emu/archive/2009/10/29/300227.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 29 Oct 2009 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/10/29/300227.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/300227.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/10/29/300227.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/300227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/300227.html</trackback:ping><description><![CDATA[<p>emu测试了一下IE8，发现cookie的限制似乎比以前宽松多了。具体限制是：<br />
* 每个域名下允许50个cookie，超过了覆盖最早写入的cookie（或者说队列式管理，超过了第一个出队）<br />
* 同一个页面（和从这个页面发出的请求）子域、父域和根域各自有自己的50个cookie。<br />
* 单个cookie的总长度：cookieName+cookieValue+附加信息（包括等号，空格，分号，domain，expires，path之类的）不能超过5k（最多5119bytes）<br />
* 同一个页面（和从这个页面发出的请求）子域、父域和根域的全部cookie的内容长度（cookieName+cookieValue+等号，空格，分号）不能超过10k，否则全部变成httponly，无法用脚本访问</p>
* 同一个页面（和从这个页面发出的请求）子域、父域和根域的全部cookie的内容长度（cookieName+cookieValue+等号，空格，分号）不能超过50k。<br />
<br />
总而言之，cookie不是用来存数据的，能不用就别用。 <br />
<br />
边做测试边些博客的后果是，由于不停的清空cookie把博客的登陆态清掉了，差点文章提交失败重新写呵呵
<img src ="http://www.blogjava.net/emu/aggbug/300227.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-10-29 18:50 <a href="http://www.blogjava.net/emu/archive/2009/10/29/300227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSDN sd2.0大会，与csdn社区网友合影</title><link>http://www.blogjava.net/emu/archive/2009/10/24/299573.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sat, 24 Oct 2009 08:05:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/10/24/299573.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/299573.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/10/24/299573.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/299573.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/299573.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.blogjava.net/images/blogjava_net/emu/1359/o_IMG_3748.JPG" border="0" style="margin-left:-150px"/ />


<img src ="http://www.blogjava.net/emu/aggbug/299573.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-10-24 16:05 <a href="http://www.blogjava.net/emu/archive/2009/10/24/299573.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>白突发了回奇想</title><link>http://www.blogjava.net/emu/archive/2009/08/26/292709.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 26 Aug 2009 11:27:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/08/26/292709.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/292709.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/08/26/292709.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/292709.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/292709.html</trackback:ping><description><![CDATA[一向用脚本冲掉浏览器缓存文件都是通过XHR做一个no-cache的请求来实现的，但是一些早期的XHR并不稳定，用来请求非文本资源的时候有可能会导致浏览器崩溃。<br />
有一天突发奇想，用表单想指定的资源发起一个post请求会如何呢？众所周知post请求到的数据是不能cache的，那么如果这个请求指向指定的URL，该URL的cache是否也就应该跟着失效呢？<br />
说干就干，用 fiddler+IE/Firefox 模拟了一下整个过程，结果是令人失望的，post请求到的数据固然不会进入cache，也不会把相同URL的cache资源给冲掉。重新打开页面的时候，还是显示post以前cache住的那份资源。<br />
看来还是只好冒死用XHR去清cache了。
<img src ="http://www.blogjava.net/emu/aggbug/292709.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-26 19:27 <a href="http://www.blogjava.net/emu/archive/2009/08/26/292709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE8里，“about：”又回来了</title><link>http://www.blogjava.net/emu/archive/2009/05/22/277277.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 22 May 2009 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/05/22/277277.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/277277.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/05/22/277277.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/277277.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/277277.html</trackback:ping><description><![CDATA[还记得IE6.0.2600以前的美好日子吗？那时我们多喜欢搞这种代码来节省一个http请求啊：<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"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">iframe&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="about:&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">iframe</span><span style="color: #0000ff">&gt;</span></div>
<br />
当然还有这样的<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: #000000">showModalDialog(</span><span style="color: #000000">"</span><span style="color: #000000">about:&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;</span><span style="color: #000000">"</span><span style="color: #000000">)</span></div>
<br />
<br />
在IE6.0.2600以后，大家就只好转向更兼容的写法了：<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">iframe&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="javascript:&amp;quot;&lt;b&nbsp;style='color:red'&gt;hello&lt;/b&gt;&lt;script&gt;alert(123)&lt;/script&gt;&amp;quot;"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">iframe</span><span style="color: #0000ff">&gt;</span></div>
<br />
今天偶然发现，IE8正式版下面，久违的&#8220;about：&#8221;又可以显示和执行了呵呵。
<img src ="http://www.blogjava.net/emu/aggbug/277277.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-05-22 12:32 <a href="http://www.blogjava.net/emu/archive/2009/05/22/277277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我现在在哪？</title><link>http://www.blogjava.net/emu/archive/2009/05/07/269353.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 07 May 2009 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/05/07/269353.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/269353.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/05/07/269353.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/269353.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/269353.html</trackback:ping><description><![CDATA[google太猛了，可以把我现在的地理信息暴露无遗（不过当然是在我同意的前提下）

<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=roadmap" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=terrain" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=hybrid" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! -->

<!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=-8041228331609848306&type=iframe&maptype=satellite&z=3" width="500" height="600" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! --><img src ="http://www.blogjava.net/emu/aggbug/269353.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-05-07 10:38 <a href="http://www.blogjava.net/emu/archive/2009/05/07/269353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Chrome浏览器第一次使用google gears组建的时候会有问题</title><link>http://www.blogjava.net/emu/archive/2009/01/13/251099.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 13 Jan 2009 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/01/13/251099.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/251099.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/01/13/251099.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/251099.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/251099.html</trackback:ping><description><![CDATA[<a href="http://qzone.qq.com/blog/286013388-1231818216">http://qzone.qq.com/blog/286013388-1231818216</a><br />
<br />
<p>使用谷歌浏览器(chrome)的时候，有的时候脚本程序会捕获到&#8220;Uncaught TypeError: Object #&lt;an HTMLObjectElement&gt; has no method 'create' &#8221;这个错误，在chrome的用户论坛上也有人在问这个问题。</p>
<p>这个错误应该是由于最新版的谷歌浏览器没有自带完整的google gears组件导致的。看起来最新版的chrome浏览器会在用户第一次使用gears组件的时候自动下载和安装该组件，而在安装成功以前我们虽然可以成功创建 application/x-googlegears 对象，却无法调用它的create方法创建任何有用的东西。</p>
<p>这个时候其实没有太多的事情可以做，基本上我们我们只能检测这个对象的create接口是否存在，发现不存在的时候提示用户耐心等待，过一段时间后再刷新，或者下回再来看看，希望它已经自己安装好了。<br />
</p>
  <img src ="http://www.blogjava.net/emu/aggbug/251099.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-01-13 11:46 <a href="http://www.blogjava.net/emu/archive/2009/01/13/251099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>打开QQ空间速度飞快的方法</title><link>http://www.blogjava.net/emu/archive/2009/01/11/250880.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 11 Jan 2009 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2009/01/11/250880.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/250880.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2009/01/11/250880.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/250880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/250880.html</trackback:ping><description><![CDATA[<a href="http://qzone.qq.com/blog/286013388-1231422960">打开QQ空间速度飞快的方法<br />
</a><br />
<div style="font-size: 16px" id="blogDetailDiv">假如你是中国电信adsl上网的用户，在windows平台下试用IE浏览器访问QQ空间，那么<br />
首先呢，就是访问<wbr><a target="_blank" href="http://gears.google.com/">http://gears.google.com/</a><wbr> 先把google gears装上(最新是0.5版)。有一些同学访问不了gears主页或者由于某种原因安装不上google上的最新版gears，那么可以试试到<br />
<a href="http://down1.tech.sina.com.cn/download/down_contents/1194710400/37265.shtml">http://down1.tech.sina.com.cn/download/down_contents/1194710400/37265.shtml</a><br />
上下载稍微旧一点的版本（0.4版）<br />
网上还有更旧的版本，但是emu就没有实验过了。<br />
然后呢，你就可以访问这个地址了：<wbr><a target="_blank" href="http://imgcache.qq.com/qzone/test/gears/gearsMng.html">http://imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
对于网通宽带的朋友，就要访问这个：<wbr><a target="_blank" href="http://cnc.imgcache.qq.com/qzone/test/gears/gearsMng.html">http://cnc.imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
而对于教育网的朋友，则要访问这个：<wbr><a target="_blank" href="http://edu.imgcache.qq.com/qzone/test/gears/gearsMng.html">http://edu.imgcache.qq.com/qzone/test/gears/gearsMng.html</a><wbr><br />
点击&#8220;启用加速&#8221;，会有个gears提示，确认以后，等全部进度条走成绿色就好了，以后访问QQ空间的时候就会自动的变得飞快。<br />
<br />
有几点小技巧：<br />
* google gears不是很稳定，有的时候进度条走着走着就卡住不走了，这个时候可以多点几下&#8220;启用加速&#8221;就好了。如果还是不行，可能是网络原因，也没有关系，不管它就可以了，google gears会在网络好的时候自己把没下载完的文件给补上的。<br />
* 如果不大确定你的上网环境（联通？有线宽屏？铁通？），或者笔记本经常抱来抱去上QQ空间，那么不妨把电信、网通和教育网三个页面都访问一遍，分别启用加速，这样不管在什么环境下都可以确定获得最好的效果。<br />
* 如果你用的是FireFox浏览器，也可以依照上面的操作。<br />
* 如果你用的是google的chrome浏览器，并且是1.0正式版以上的版本，那么它已经自带了一个比较稳定版本的gears，跳过安装gears这一步。但是chrome下面gears还是有时不十分稳定，虽然emu已经尽力做了兼容，在第一次使用的时候还是可能有点问题。<br />
* 如果用的不是windows系统，那么gears还有MacOS下的版本，支持Safari(<a href="http://gears.google.com/?platform=mac-safari">http://gears.google.com/?platform=mac-safari</a>)和Firefox(<a href="http://gears.google.com/?platform=mac-firefox">http://gears.google.com/?platform=mac-firefox</a>)和linux下的版本(<a href="http://gears.google.com/?platform=linux">http://gears.google.com/?platform=linux</a> 支持Firefox)，恭喜恭喜。不过到底用起来怎么样，emu也没试过。<br />
* 如果你用的居然是opera，就认命了吧。</div>
<img style="position: relative; display: none" id="paperPicArea1" alt="" src="http://qzone.qq.com/ac/b.gif" width="1" height="1" /> 
 <img src ="http://www.blogjava.net/emu/aggbug/250880.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-01-11 21:07 <a href="http://www.blogjava.net/emu/archive/2009/01/11/250880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分域名优化的时候要考虑备选IP的问题</title><link>http://www.blogjava.net/emu/archive/2008/05/23/202357.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 23 May 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/05/23/202357.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/202357.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/05/23/202357.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/202357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/202357.html</trackback:ping><description><![CDATA[我们在需要下载很多内容的时候，很容易想到做分域名的并发下载，给原来的服务器多分几个域名，因为分不同的域名可能可以在浏览器中分到更多的下载进程，提高下载速度。<br />
但是在做网络应用的时候，我们的一个域名下面有的时候会有多个ip多台服务器，分布在不同的机房，这个时候浏览器会在可选的ip里面随机的选择一个ip。用nslookup可以看到可选的ip，用ping可以看到当前正在实用的ip。<br />
在多个ip的情况下，对具体的一个用户，往往是连接到某些ip特别快，而连接到某些ip就不怎么块。比如我现在有一个域名（和它的几个分域名），在深圳访问的时候有2个ip可以分，其中一个是深圳本地的服务器，一个是外地的服务器。这个时候如果页面打开需要用到的关键资源依赖于这个域名，那么分域名有可能对速度不是提高而是有反作用。<br />
因为这种情况下，慢的资源成为了瓶颈，变成是速度的决定因素。我本来有一半的机会是快的，一半的机会是慢的，如果现在分两个域名去下载关键资源，变成有1/4的机会是两个域名都分到深圳的服务器，可以有提高，而3/4的机会是有一个以上的域名分到外地的服务器，反而变慢了，这样提高的是少部分人的感受，而多数人的感受没有提升或者变的更差。如果简单的按照yahoo的优化建议分散到4个域名上，那么这个比例就变成1：15，更差了。<br />
因此分域名下载不能简单的绝对化的看待，要看实际应用场景做决定。
<img src ="http://www.blogjava.net/emu/aggbug/202357.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> 2008-05-23 11:36 <a href="http://www.blogjava.net/emu/archive/2008/05/23/202357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache返回Request header field is missing ':' separator</title><link>http://www.blogjava.net/emu/archive/2008/05/09/199542.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 09 May 2008 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/05/09/199542.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/199542.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/05/09/199542.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/199542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/199542.html</trackback:ping><description><![CDATA[一段时间没有用这个apache，突然之间发现apache不返回东西了，抓包发现不管发什么请求，这个apache总是返回：<br />
Request header field is missing ':' separator<br />
重启apache，关掉重开，卸掉重装，折腾半天后还是选择google了，原来早有人郁闷过这个问题：<a href="http://www.apachelounge.com/forum/viewtopic.php?t=602">http://www.apachelounge.com/forum/viewtopic.php?t=602</a><br />
<br />
<span class="postbody">Just spent half of night googling. <br />
<br />
The main reason that I switched to 2.2.x branch is mod_proxy errors like <br />
"Request header field is missing ':' separator." when accessing sites localhost sites. <br />
Somewhere I read that it might be fixed in 2.2, so that's why I'm here. <br />
<br />
After 3 weeks building all neccessary modules putting and tuning all together I see the same error =/ <br />
<br />
Problem was in Nod32's IMON module. It for some reason duplicates request. I disabled it and all works fine again. <br />
<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=34716" target="_blank">http://issues.apache.org/bugzilla/show_bug.cgi?id=34716</a> <br />
<br />
Posting it here to help other with issues like this.</span><br />
<br />
一模一样的现象，一模一样的原因。把nod32的imon（也就是网络监控）禁用了就好了。
<img src ="http://www.blogjava.net/emu/aggbug/199542.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> 2008-05-09 16:30 <a href="http://www.blogjava.net/emu/archive/2008/05/09/199542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>facebook全面开放了web IM</title><link>http://www.blogjava.net/emu/archive/2008/04/24/195477.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 24 Apr 2008 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/04/24/195477.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/195477.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/04/24/195477.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/195477.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/195477.html</trackback:ping><description><![CDATA[悄悄在几个network内试用了一段时间后，今天终于全员开放了。web IM最大的问题是不能P2P的传递消息，什么都要走服务器，一来一回比起直接点对点发送显然成本要高的多，尤其我们亚洲用户的数据都要走到米国的服务器上再走回来（我被连接到了69.63.176.174这台米国服务器）。facebook用了推模式尽量保证了消息的即时性，同时维持那么多http连接看来也是不小的技术挑战，不过目前看来表现还不错。<br />
Facebook建议大家用IE7或者Firefox来试用聊天功能。在IE6下面会弹开一个新页面来聊天。在Firefox下面没有使用传说中的COMET技术，还是每次推消息后断开连接重新请求。
<img src ="http://www.blogjava.net/emu/aggbug/195477.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> 2008-04-24 11:23 <a href="http://www.blogjava.net/emu/archive/2008/04/24/195477.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>百度不知道百度知道</title><link>http://www.blogjava.net/emu/archive/2008/04/23/194963.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 23 Apr 2008 02:38:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/04/23/194963.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/194963.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/04/23/194963.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/194963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/194963.html</trackback:ping><description><![CDATA[<p>有朋友在问卡巴斯基报告一个&#8220;Trojan-Clicker.HTML.Agent.ad&#8221;的事情，说是百度搜不到，我google了一把：<br />
<br />
<img height="339" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/google.gif" width="673" border="0" /><br />
嗯，google上有100多个搜索结果，而百度呢？</p>
<p>&nbsp;</p>
<p><img height="1" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/google.gif" width="2" border="0" /></p>
<p><br />
<img height="205" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/baidu.gif" width="614" border="0" /><br />
<br />
交白卷了。谁说搜中文内容百度更专业来着。更好笑的是在google的搜索结果的第二个就是百度知道上面的问题，试了下在百度知道里面搜：<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/emu/zhidao.gif" border="0" /><br />
<br />
百度知道里面有两个结果而百度居然不知道百度其实知道？其实问题<span style="color: red">在于百度的网页搜索引擎无法理解&#8220;Trojan-Clicker&#8221;中的这个横杠是个连接符而不是排除搜索内容的意思</span>，把这个横杠去掉以后，百度还是可以搜出来6个结果的。<br />
<br />
<img height="106" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/baidu2.gif" width="823" border="0" /><br />
<br />
<br />
百度号称更懂中文，以前的理解是百度比其他搜索引擎更懂中文，现在才明白过来，百度更懂中文是相对于百度懂英文的程度来说的。</p>
<br />
奇怪的是百度知道的搜索居然没有这个问题，难道用的是不同的搜索引擎？ <img src ="http://www.blogjava.net/emu/aggbug/194963.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> 2008-04-23 10:38 <a href="http://www.blogjava.net/emu/archive/2008/04/23/194963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用shindig搭Opensocial容器</title><link>http://www.blogjava.net/emu/archive/2008/03/26/188812.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 26 Mar 2008 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/03/26/188812.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/188812.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/03/26/188812.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/188812.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/188812.html</trackback:ping><description><![CDATA[<p>&nbsp;<br />
shindig是google的一个opensocial容器的参考实现。google高调发布opensocial以后大家纷纷在宣布支持opensocial，可是真正要找个支持opensocial的容器一点也不容易，orkut的sandbox限制很多，myspace中国也只支持flash的方式，真正要玩opensocial，还是自己搭一个环境算了。</p>
<p>shindig现在还不能简单的安装运行（http://incubator.apache.org/shindig/#tab-download），要做一些手工活：<br />
按照 http://incubator.apache.org/shindig/#tab-building 的指引，</p>
<ol>
    <li>下载安装JDK，设置好JAVA_HOME和PATH环境变量
    <li>下载安装subversion客户端（我用了TortoiseSVN）
    <li>下载解压Maven（在windows上用，我用了zip版本），一个类似ant的东东，用于编译shindig。设置好M2_HOME（指向Maven的解压目录），M2（指向bin子目录）和PATH环境变量（加进bin子目录的路径）。
    <li>新建shindig目录，用TortoiseSVN update下来shindig工程（http://svn.apache.org/repos/asf/incubator/shindig/trunk）<br />
    在shindig/java/gadgets目录下面运行mvn package编译。由于依赖的jar都要从网上下载，等了漫长的一个多小时，最后在shindig\java\gadgets\target目录下得到一个gadgets.war，大约2M左右大小。 </li>
</ol>
<p>拿到war就好办了，随便找一个web容器给它运行。首选的当然是开源、绿色、轻巧可爱的tomcat了。下载下来解压，运行startup.bat，就跑起来了。访问http://localhost:8080/看到欢迎页面，从Administration--&gt;Tomcat Manager进入。衰，要登陆。在tomcat/conf下面找到tomcat-users.xml，加两行<br />
&nbsp; &lt;role rolename="manager"/&gt;<br />
&nbsp; &lt;user username="tomcat" password="tomcat" roles="manager"/&gt;<br />
重启tomcat，用tomcat/tomcat进入Administration--&gt;Tomcat Manager<br />
找到 WAR file to deploy--&gt;Select WAR file to upload ，选中刚才编译好的gadgets.war上传。后在Applications列表中看到/gadgets就好了。</p>
<p>http://localhost:8080/gadgets下面没有默认页面，只能直接访问 samplecontainer 页面 http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html</p>
<p>&nbsp;</p>
<p><br />
<br />
<br />
<img height="519" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/sampleContainer.gif" width="992" border="0" /></p>
第一个输入框是gadget的xml地址，也就是所谓的OpensocialAPP了。第二个输入框指向的xml里面描述了一些模拟的用户信息，主要提供了people、personAppData、activities这些基本的APP信息。<br />
<br />
下面蓝色框是一个iframe，里面就是这个APP的展示区域了。<br />
<br />
看来google现在还想让大家用iframe来作web application，失望一下。要是第三方可以像igoogle里面的gmail模块一样直接inline嵌入到页面中间就好了。iframe还是很多问题的，速度问题，页面负担，还有<a href="http://www.blogjava.net/emu/archive/2007/07/06/128666.html">浏览器bug</a>。 
<img src ="http://www.blogjava.net/emu/aggbug/188812.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> 2008-03-26 17:41 <a href="http://www.blogjava.net/emu/archive/2008/03/26/188812.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为IE找个新死法</title><link>http://www.blogjava.net/emu/archive/2008/02/01/178847.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 01 Feb 2008 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/02/01/178847.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/178847.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/02/01/178847.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/178847.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/178847.html</trackback:ping><description><![CDATA[IE在解释表达式的时候显然大有优化的余地，FireFox就没这个毛病。下面这段小代码可以轻松让IE崩溃掉：<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;n</span><span style="color: #000000">=</span><span style="color: #000000">32768</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: #0000ff">new</span><span style="color: #000000">&nbsp;Array(n).join(</span><span style="color: #000000">"</span><span style="color: #000000">0+</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">;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(confirm(</span><span style="color: #000000">"</span><span style="color: #000000">真的要杀了浏览器吗?</span><span style="color: #000000">"</span><span style="color: #000000">)){<br />
&nbsp;&nbsp;&nbsp;&nbsp;eval(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;alert(</span><span style="color: #000000">"</span><span style="color: #000000">杀不掉,试试把n调大一点?</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}</span></div>
<br />
其实就是让IE解析一个&#8220;0+0+0+0....&#8221;的表达式。<br />
在我的机器上，IE6跑到32255就自动关闭了（可以作为一个新的无提示关闭浏览器漏洞呵呵，会把同一个进程打开的全部窗口一起杀掉），IE7还要差些，在31515就挂了。opera也好不到哪里去，32180就崩溃了。而FireFox一直跑到2^27（ie和opera还不到2^15）的时候把我的内存全吃光了，在虚拟内存支持下还是可以执行完成：<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;s</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">,n</span><span style="color: #000000">=</span><span style="color: #000000">27</span><span style="color: #000000">&nbsp;;<br />
</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;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">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;s</span><span style="color: #000000">+=</span><span style="color: #000000">s;&nbsp;<br />
alert(s.length</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;<br />
s</span><span style="color: #000000">+=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(confirm(</span><span style="color: #000000">"</span><span style="color: #000000">真的要杀了浏览器吗?</span><span style="color: #000000">"</span><span style="color: #000000">)){&nbsp;<br />
eval(s);&nbsp;<br />
alert(</span><span style="color: #000000">"</span><span style="color: #000000">杀不掉,试试把n调大一点?</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
}</span></div>
一直到2^28的时候，字符串构造失败了才罢休。<br />
<img src ="http://www.blogjava.net/emu/aggbug/178847.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> 2008-02-01 15:43 <a href="http://www.blogjava.net/emu/archive/2008/02/01/178847.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在IE下面指定表单编码方式</title><link>http://www.blogjava.net/emu/archive/2008/01/31/178715.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 31 Jan 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/31/178715.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/178715.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/31/178715.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/178715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/178715.html</trackback:ping><description><![CDATA[在跨业务、跨网站发送数据或者业务升级的时候，我们有的时候需要指定发送数据的编码方式，比如页面是utf-8编码的，而发送出去的数据却是GB2312编码的。在做Ajax开发的时候，我们往往都是用vbscript或者用查字典法来解决这个问题（<a href="http://www.blogjava.net/emu/articles/31756.html">http://www.blogjava.net/emu/articles/31756.html</a>）。但是有些业务，也许并不需要做成Ajax这么复杂，用表单提交显得更加自然。<br />
<br />
其实html里面form标签有个accept-charset属性，可以帮助我们解决这个问题，可惜的是傻乎乎的IE浏览器虽然认得accept-charset，却并不卖它的帐。IE的表单提交的时候使用什么编码是完全看页面的charset决定的。还好，IE在charset这个问题上一傻到底（见<a href="http://www.blogjava.net/emu/archive/2007/08/21/138247.html">http://www.blogjava.net/emu/archive/2007/08/21/138247.html</a>），糊弄它一下，它就乖乖听话了：<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 />
&nbsp;&nbsp;&nbsp;&nbsp;</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&nbsp;</span><span style="color: #ff0000">content</span><span style="color: #0000ff">="text/html;&nbsp;charset=UTF-8"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&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;isIE</span><span style="color: #000000; background-color: #f5f5f5">=!!</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">if</span><span style="color: #000000; background-color: #f5f5f5">(isIE&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">&amp;&amp;</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.charset</span><span style="color: #000000; background-color: #f5f5f5">!=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">utf-8</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">)location.reload(</span><span style="color: #0000ff; background-color: #f5f5f5">false</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">if</span><span style="color: #000000; background-color: #f5f5f5">(location.search)&nbsp;alert(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&#8220;我&#8221;字编码为:</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">location.search.substr(</span><span style="color: #000000; background-color: #f5f5f5">6</span><span style="color: #000000; background-color: #f5f5f5">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">SCRIPT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encode&nbsp;before&nbsp;form&nbsp;post</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">TITLE</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</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 />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;</span><span style="color: #ff0000">action</span><span style="color: #0000ff">="#"</span><span style="color: #ff0000">&nbsp;accept-charset</span><span style="color: #0000ff">="GB2312"</span><span style="color: #ff0000">&nbsp;onsubmit</span><span style="color: #0000ff">="if(isIE)document.charset='GB2312'"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="test"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="我"</span><span style="color: #ff0000">&nbsp;readonly</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=submit</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">BODY</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">HTML</span><span style="color: #0000ff">&gt;</span></div>
<br />
简单的讲，就是在表单发送前告诉IE说当前页面是GB2312编码就行了：<br />
&nbsp;&lt;form accept-charset="GB2312" onsubmit="if(isIE)document.charset='GB2312'"&gt;<br />
accept-charset="GB2312" 是写给其他没那么笨的浏览器看的。<br />
<br />
IE为了表现它确实是一傻到底，不但在设置document.charset的时候不会用新的编码解释页面，还会在前进后退（我特地用＃作为action来实现后退）的时候又尝试用新的编码去解释页面<img src="/CuteSoft_Client/CuteEditor/images/face21.gif" align="absMiddle" border="0"  alt="" />。不过还好，可以用脚本判断出来，还可以用脚本刷新一下页面解决这个问题：<br />
if(isIE &amp;&amp; document.charset!="utf-8")location.reload(false);<br />
    <img src ="http://www.blogjava.net/emu/aggbug/178715.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> 2008-01-31 17:31 <a href="http://www.blogjava.net/emu/archive/2008/01/31/178715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>试试把xml和javascript写到同一个文件里面</title><link>http://www.blogjava.net/emu/archive/2008/01/18/176342.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 18 Jan 2008 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/18/176342.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/176342.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/18/176342.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/176342.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/176342.html</trackback:ping><description><![CDATA[<p>服务器现在同时输出json和xml两种数据，取决于服务程序和页面之间的约定。在程序遇到问题的时候会返回错误信息，也按照相同的约定会返回json或者xml格式的数据。比如当页面请求xml的时候服务会返回：</p>
<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: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="gb2312"</span><span style="color: #0000ff">?&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">出错了</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
<p>&nbsp;</p>
<p>&nbsp;而当页面请求的是json的时候服务器会返回&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"><img alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">alert("出错了")</span></div>
<p>&nbsp;</p>
<p>但是今天遇到的问题是，服务器本身出了问题，比如说遇到内部服务器错误或者资源不存在，又不想返回对解决问题帮助不大的500或者404响应，而想像上面一样返回一个一致性的带错误说明的200响应。由于无从得知现在应该返回xml还是json格式的出错信息。于是服务器就统一返回了一个xml格式的错误。但是页面这个时候是用script标签在请求一个json数据，接收到一个xml文件，直接就产生语法错误了。改成json的话，请求xml的地方也无法提供正确的错误提示。</p>
<p>这个时候我们需要的就是服务器返回一个同时符合javascript和xml语法的错误信息，或者说把xml和javascript的错误信息放到一起。</p>
<p>嗷嗷研究过把css和javascript放在一个文件里面，主要是为了可以较少一个http请求。把xml和javascript放在一起有一些不同。</p>
<p>最容易想到的是&#8220;&lt;!-- &#8221;注释符。由于历史原因，这个xml里面的注释符在javascrip里面是一个单行注释符，也就是说在javascript里面，它以回车符为结束，而在xml里面是以--&gt;结束。因此如果用这样一个符号开始一个文件，我们就可以通过控制它的结束位置来控制它在不同语法下面的意义。</p>
<p>error.xml</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">出错了</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />alert("出错了")//</span><span style="color: #008000">--&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>注意，从xml的角度上来看，这个xml没有带&lt;?xml部分，因此不能制定encoding编码，只能用默认的utf-8编码输出。或者用实体替换和转义符来回避编码问题：</p>
<p>error.xml</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">error</span><span style="color: #0000ff"><span style="color: #0000ff">&gt;</span><span style="color: #000000">&amp;amp;#x51fa;&amp;amp;#x9519;&amp;amp;#x4e86;</span><span style="color: #0000ff">&lt;/</span></span><span style="color: #800000">error</span><span style="color: #0000ff">&gt;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;<br />
alert("\u51fa\u9519\u4e86")//</span><span style="color: #008000">--&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>之所以刻意不带&lt;?xml，是因为按照规范&lt;?xml必需出现在最开始部分，虽然IE可以允许&lt;?xml前面出现&lt;!-- --&gt;注释，但是FF就没有这样的灵活性了。</p>
<p>简单的在IE下面用两种语法处理这个文件的一个例子：</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><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;test&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">xml&nbsp;</span><span style="color: #ff0000">src</span><span style="color: #0000ff">="error.xml"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="err"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">xml</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">="error.xml"</span><span style="color: #ff0000">&nbsp;charset</span><span style="color: #0000ff">="utf-8"</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&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 />
alert(err.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">error</span><span style="color: #000000; background-color: #f5f5f5">"</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">].xml)<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>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/emu/aggbug/176342.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> 2008-01-18 22:07 <a href="http://www.blogjava.net/emu/archive/2008/01/18/176342.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenSocial，想说爱你不容易</title><link>http://www.blogjava.net/emu/archive/2008/01/03/172540.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 03 Jan 2008 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2008/01/03/172540.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/172540.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2008/01/03/172540.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/172540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/172540.html</trackback:ping><description><![CDATA[OpenSocial的推出，让大家怀抱了多大的期望。Many sites, one API ，Server optional，将来我们的web application 就可以一次编写到处运行，英特网变成一个（也许几个）巨大的操作系统...google给我们描绘了一个多么美丽的乌托邦。包括Myspace在内的诸多SNS网站也都早早就宣布支持OpenSocial。可是两个月过去了，还是只看到orkut的一个半成品的sandbox，在emu的手里还从来没有顺顺当当跑起来过。Myspace.cn在千呼万唤之后终于丢出来一个开发者平台MDP，大家高兴了半天以为OpenSocial终于有一个实现平台了，可是打开一看：　　<br />
<em><wbr><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基于Myspace.cn开发者平台（MDP），您可以使所开发产品 访问MySpace的用户及用户数据，这些产品将可以直接植入MySpace.cn页面，从而让更多的人有机会看到和使用您的产品，MDP可以让您： <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用Flash，<font style="line-height: 1.3em" color="#ff0000">或者在不久的将来用JavaScript和HTML来开发您的产品</font><wbr>； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自己在产品上发布广告，或由MySpace提供定向广告，投放在您的产品上； <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用程序可以部署在您自己的服务器上或MySpace.cn的服务器上；<img alt="" src="http://zt.oeeee.com/ndrw/Vote.aspx?PID=13" style="display:none"/ /><br />
<font style="line-height: 1.3em" color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MDP将支持Open Social规范</font><wbr>，OpenSocial是一个令人耳目一新的新的社区产品开发标准，可以使用大家所熟悉的ActionScript，JavaScript, HTML等语言开发跨平台的社区产品。<br />
</em>　　<br />
嗯，将支持js，将支持html，将支持Open Social规范，只要我们耐心等，牛奶会有的，面包会有的，一切都会有的。这帮子家伙就会忽悠，让人不禁要想，大家真的打算支持Open Social 吗？<img id="paperPicArea1" style="display: none; position: relative" alt="" src="http://imgcache.qq.com/qzone_v4/b.gif" /> <img src ="http://www.blogjava.net/emu/aggbug/172540.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> 2008-01-03 18:11 <a href="http://www.blogjava.net/emu/archive/2008/01/03/172540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse下面跑jsunit</title><link>http://www.blogjava.net/emu/archive/2007/11/01/157450.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Thu, 01 Nov 2007 04:13:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/11/01/157450.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/157450.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/11/01/157450.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/157450.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/157450.html</trackback:ping><description><![CDATA[<p>写了几个简单的测试用例，在eclips下面绑定了TT，Firefox和safari跑一下，相当的舒服啊。<br />
</p>
<img height="519" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunit.GIF" width="337" border="0" /><br />
<br />
由于使用了本地文件系统访问，用IE的话会有权限警告，要多一个确认的交互才能允许，于是改用TT。<br />
用FireFox最新的minefield版本和opera在访问本地文件系统的时候都有问题，要改用web访问方式才能通过：<br />
<br />
minefield<br />
<img height="466" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitminefield.GIF" width="585" border="0" /><br />
<br />
opera：<br />
<img height="582" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitopera.GIF" width="590" border="0" /><br />
<br />
<br />
下载jsunit的plugin，放到eclipse的plugins目录下面，然后在window/preferences下面配置jsunit的路径和测试用的浏览器就可以了<br />
<img height="529" alt="" src="http://www.blogjava.net/images/blogjava_net/emu/jsunitsetup.GIF" width="777" border="0" /><br />
<br />
safari我使用的是<span style="color: black"><a href="http://www.deviantart.com/download/65199427/Safari_CHS_for_Win_by_hohodigidea.rar"><span style="color: black">Digidea</span>的汉化版</a>。safari</span>似乎兼容性不好，标准的jsunit测试都有两个通不过，另有两个运行不起来。<br />
 <img src ="http://www.blogjava.net/emu/aggbug/157450.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-11-01 12:13 <a href="http://www.blogjava.net/emu/archive/2007/11/01/157450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定位到了IE报告“存储空间不足，无法完成此操作”的原因。</title><link>http://www.blogjava.net/emu/archive/2007/08/24/139182.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 24 Aug 2007 13:39:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/24/139182.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/139182.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/24/139182.html#Feedback</comments><slash:comments>39</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/139182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/139182.html</trackback:ping><description><![CDATA[<p>&#169;emu<br><br>近期有大量的投诉是关于在脚本运行过程IE报告&#8220;存储空间不足，无法完成此操作&#8221;的。出现此问题的用户全部都无法访问IE的&#8220;帮助——关于&#8221;页面，报告相同的错误，因此可以定位为IE本身出了问题。<br><br>怀疑是某些软件修改了系统造成，但是也一直没有定位到是什么软件或者插件。由于问题无法在开发机上重现，定位了非常久，最后猜测是由于在模式对话框中访问navigator.userAgent造成。编写了如下页面：<br><br></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">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br>showModalDialog(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">javascript:'&lt;script&gt;alert(navigator.userAgent);&lt;\/script&gt;'</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<p><br>&nbsp;</p>
<p>保存后发送到出问题的用户那里运行，果然重现了问题：<br><br><img src="http://www.blogjava.net/images/blogjava_net/emu/4494/o_存储空间不足.jpg" border=0><br><br>&#169;emu</p>
<img src ="http://www.blogjava.net/emu/aggbug/139182.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-24 21:39 <a href="http://www.blogjava.net/emu/archive/2007/08/24/139182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE傻呼呼的</title><link>http://www.blogjava.net/emu/archive/2007/08/21/138247.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 20 Aug 2007 16:26:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/21/138247.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/138247.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/21/138247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/138247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/138247.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">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;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">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>试一试<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>setTimeout('document.charset</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">utf-8</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</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">);<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>
这个gb2312页面，在IE下面显示出来，在&#8220;查看--编码&#8221;或者右键菜单的&#8220;编码&#8221;中，都会告诉你这个页面是UTF-8编码的，傻的够可爱的，可以蒙倒不少人了。FF和OP在这点上是要聪明一点，不上当。 <br>如果手工选到utf-8上会原形毕露，不过刷新一下又可以变回去。 
<img src ="http://www.blogjava.net/emu/aggbug/138247.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 00:26 <a href="http://www.blogjava.net/emu/archive/2007/08/21/138247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hello ruby</title><link>http://www.blogjava.net/emu/archive/2007/08/12/136246.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 12 Aug 2007 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/12/136246.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/136246.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/12/136246.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/136246.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/136246.html</trackback:ping><description><![CDATA[<p>心血来潮下了个ruby运行环境，还是写个经典的99乘法表吧。不知道怎么查语法手册，基本都是猜的语法。<br></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: #000000">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #800000">10</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">i<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;String(i)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">*</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">String(j)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">=</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">String(i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">+</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\t</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;end<br>&nbsp;&nbsp;i</span><span style="COLOR: #000000">+=</span><span style="COLOR: #800000">1</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="FONT-WEIGHT: bold; COLOR: #000000">\n</span><span style="FONT-WEIGHT: bold; COLOR: #000000">"</span><span style="COLOR: #000000"><br>end</span></div>
<br>for的语法没有猜到，用经典的while代替了。好像不支持++操作，用+＝1代替了，好像也不支持整数的toString方法，试了下强制类型转换String(i)居然可以呵呵。print语句也是猜出来的。
<img src ="http://www.blogjava.net/emu/aggbug/136246.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-12 22:30 <a href="http://www.blogjava.net/emu/archive/2007/08/12/136246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE的经典javascript异常</title><link>http://www.blogjava.net/emu/archive/2007/08/11/135964.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 10 Aug 2007 19:53:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/08/11/135964.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/135964.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/08/11/135964.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/135964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/135964.html</trackback:ping><description><![CDATA[这是两个经典异常，不知道原理的话很难定位。从下面的代码中可用看到发生的条件<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">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'&lt;script&gt;top.ff1={abc:function(){}}&lt;\/script&gt;'"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="f1"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="f1.location='about:blank';setTimeout('alert(ff1.abc())',0)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">不能执行已经释放的代码</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'&lt;script&gt;top.ff2={abc:function(){}}&lt;\/script&gt;'"</span><span style="COLOR: #ff0000">&nbsp;width</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">height</span><span style="COLOR: #0000ff">=0&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="f2"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">button&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="f2.location='about:blank';setTimeout('alert(ff2.toString())',0)"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">意外地调用了方法或属性访问</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
<p><br>p标签的innerHTML不能插入center标记：<br></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">p&nbsp;</span><span style="COLOR: #ff0000">onclick</span><span style="COLOR: #0000ff">="innerHTML='&lt;CENTER&gt;&lt;/CENTER&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">未知的运行时错误</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">button</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">p</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span></div>
<br>下面这个是经典的&#8220;无法打开Internet站点&#8221;异常：<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">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="tt"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">document.getElementById(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">tt</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).innerHTML</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</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;&lt;/</span><span style="COLOR: #800000">div</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></div>
<br>从这些例子可以看到IE的健壮性还是有挺大的提升余地的。 
<img src ="http://www.blogjava.net/emu/aggbug/135964.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-11 03:53 <a href="http://www.blogjava.net/emu/archive/2007/08/11/135964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看各个浏览器对异常对象的支持</title><link>http://www.blogjava.net/emu/archive/2007/07/25/132304.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 25 Jul 2007 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/25/132304.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/132304.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/25/132304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/132304.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/132304.html</trackback:ping><description><![CDATA[测试代码：<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">try</span><span style="COLOR: #000000">{abc();}</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e){<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;p&gt;&lt;b&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/b&gt;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">e[i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;/p&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</span></div>
<br>在IE下：
<p><strong>name</strong>:TypeError</p>
<p><strong>message</strong>:缺少对象</p>
<p><strong>number</strong>:-2146823281</p>
<p><strong>description</strong>:缺少对象<br></p>
<br>在FireFox下<br>
<p><strong>message</strong>:abc is not defined</p>
<p><strong>fileName</strong>:file:///C:/test.html</p>
<p><strong>lineNumber</strong>:14</p>
<p><strong>stack</strong>:@file:///C:/test.html:14 </p>
<p><strong>name</strong>:ReferenceError</p>
<br>在safari下：<br><span class=Apple-style-span style="WORD-SPACING: 0px; FONT: 16px 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0">
<p><strong>message</strong>:Can't find variable: abc</p>
<p><strong>line</strong>:14</p>
<p><strong>sourceId</strong>:4</p>
<p><strong>sourceURL</strong>:file:///C:/test.html</p>
<p><strong>name</strong>:ReferenceError</p>
<p><br>最烂的是opera：<br>message:Statement on line 4: Reference to undefined variable: abc Backtrace: Line 4 of inline#1 script in <a href="file://localhost/C:/test.html">file://localhost/C:/test.html</a> abc(); </p>
<p>opera#sourceloc:4<br><br>虽然message是所有浏览器都支持，但是所有浏览器的message都不同，而且不同语言版本的操作系统和浏览器也有不同。<br><br>因此要做跨浏览器的异常区分处理，emu认为最好是用name来区分异常类型，这样就只有浏览器的不同而没有语言版本的不同了。opera做的这么烂，以至于只能从message入手，还是最后再考虑做对它的支持吧。</p>
</span>
<img src ="http://www.blogjava.net/emu/aggbug/132304.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-25 14:31 <a href="http://www.blogjava.net/emu/archive/2007/07/25/132304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>纯html的折线新画法</title><link>http://www.blogjava.net/emu/archive/2007/07/20/131544.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 20 Jul 2007 11:42:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/20/131544.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/131544.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/20/131544.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/131544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/131544.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">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:10px"</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><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:99px&nbsp;solid;border-left-color:transparent&nbsp;!important;border-left-color:yellow;;border-top:396px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:12px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</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><br>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:110px"</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><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:98px&nbsp;solid;border-right-color:transparent&nbsp;!important;border-right-color:yellow;border-top:392px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:110px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
<br>这个实现实在是有点匪夷所思了。IE/FF/OPERA下面可用。在safari下面计算border的时候有多一个像素的误差，因此这个坐标要做一些调整：<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">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:10px"</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><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-left:99px&nbsp;solid;border-left-color:transparent&nbsp;!important;border-left-color:yellow;;border-top:396px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:12px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</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><br>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:100px&nbsp;solid&nbsp;white;border-top:400px&nbsp;solid&nbsp;red;width:0px;position:absolute;top:10px;left:110px"</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><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">span&nbsp;</span><span style="COLOR: #ff0000">style</span><span style="COLOR: #0000ff">="border-right:98px&nbsp;solid;border-right-color:transparent&nbsp;!important;border-right-color:yellow;border-top:392px&nbsp;solid&nbsp;white;width:0px;position:absolute;top:10px;left:110px;filter:progid:DXImageTransform.Microsoft.Chroma(color='yellow')"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br></span></div>
&nbsp; 
<img src ="http://www.blogjava.net/emu/aggbug/131544.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-20 19:42 <a href="http://www.blogjava.net/emu/archive/2007/07/20/131544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决IE关闭页面时连续弹出新窗口的bug</title><link>http://www.blogjava.net/emu/archive/2007/07/06/128666.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 06 Jul 2007 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/07/06/128666.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/128666.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/07/06/128666.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/128666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/128666.html</trackback:ping><description><![CDATA[这个问题长期以来一直一个随机出现，又十分难以重现和定位。几经努力之后定位到了，在一个带有复杂的内嵌iframe的页面，当内嵌的iframe正在渲染的过程中关闭IE 浏览器的时候，会比较容易发生这个问题。<br><br>比较容易猜想的是IE在关闭iframe的时候出现了某些问题。猜测是几个iframe相互有通过top的脚本调用有关系，或者几个iframe和top都在各自不同的域名下有关系，但是页面太复杂进一步定位具体是什么问题十分困难（当试图简化页面的时候，问题往往就不能重现了）。而且问题出现在浏览器内部，就算具体定位到了不一定就能够解决。所以更容易和更有意义的，可能是回避&#8220;连续弹出新窗口&#8221;这个问题。<br><br>最开始的想法是，IE既然在出问题的时候是正在渲染iframe，那么此时可能cpu特别繁忙导致了问题，如果可以回避cpu的最高峰期，把渲染iframe的动作做一定的延迟，也许就可以解决问题。试验后发现，只是减缓了页面的展现速度，对问题的解决基本没用帮助。<br><br>换个想法，想想如果我们自己做浏览器，我们在处理这个问题的时候会怎么做呢，容易出什么问题呢？我们可以做这样的猜测：IE关闭窗口的时候，是先关闭和回收了最外层的window对象，然后收集它引用的各种资源，一一进行关闭和回收。也就是说，相当于一个队列式（先打开的window对象先销毁回收，后打开（被引用）的window对象后销毁和回收）或者递归式（父window对象先销毁，子window对象后销毁）的操作：。<br><br>看看下面这个测试页面的关闭顺序，其实很耐人寻味（把代码保存为一个html文件后刷新页面）：<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">iframe&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="emu1"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="javascript:'&lt;iframe&nbsp;name=emu2&gt;&lt;/iframe&gt;&lt;iframe&nbsp;name=emu3&gt;&lt;/iframe&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="emu4"</span><span style="COLOR: #ff0000">&nbsp;src</span><span style="COLOR: #0000ff">="javascript:'&lt;iframe&nbsp;name=emu5&gt;&lt;/iframe&gt;&lt;iframe&nbsp;name=emu6&gt;&lt;/iframe&gt;'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</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>setTimeout(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){<br>&nbsp;&nbsp;&nbsp;&nbsp;window.attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('parent')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe1')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].frames['emu2'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe2')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu1'].frames['emu3'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe3')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe4')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].frames['emu5'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe5')})<br>&nbsp;&nbsp;&nbsp;&nbsp;frames['emu4'].frames['emu6'].attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){alert('iframe6')})<br>},</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><br>
<p>这样子很容易带来的一个问题是，对象的销毁和资源的回收工作，一般来说是作为低优先级的操作，要为高优先级的操作让路的，那么在top窗口被销毁回收的时候，各个iframe的渲染工作，作为优先级比较高的计算，仍在继续进行。等到各个iframe渲染完成了以后，才发现他本来以为一直在哪里的parent（或者top）句柄，<strong>现在指向了一个随机的位置</strong>，于是就发生了不可预测的后果。<br><br>假如问题真的是这样，那么解决方案可能是<br>1 对关闭操作触发的销毁和回收操作，提高优先级别，或者<br>2 一但触发关闭操作，立刻主动停止所有的渲染操作，全部资源等待回收，或者<br>3 对window的关闭操作采用栈式的顺序，晚创建的先销毁，或者或者冒泡式的时序，子窗口先销毁再销毁父窗口。<br>现在我们的问题是浏览器自己是不会去调整自己的运算优先级和销毁顺序的，那么我们能否用脚本来帮助它调整一下window对象的销毁次序呢：</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">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="emu"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">iframe&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="javascript:'this&nbsp;is&nbsp;an&nbsp;iframe'"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">iframe</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">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>window.attachEvent('onbeforeunload',</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">(){document.getElementById(</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">).innerHTML</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">iframe&nbsp;closed</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;alert('parent')})<br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">SCRIPT</span><span style="COLOR: #0000ff">&gt;</span></div>
<p><br>经过这样的处理后，在可以稳定重现连续打开IE窗口的计算机上，此问题消失，应该说得到了初步解决。<br><br>这个问题其实历史非常悠久了，flashget论坛有人认为是flashget的问题：<br><a href="http://bbs.flashget.com/post.php?action=reply&amp;fid=14&amp;tid=2461&amp;repquote=16576&amp;extra">http://bbs.flashget.com/post.php?action=reply&amp;fid=14&amp;tid=2461&amp;repquote=16576&amp;extra</a>=<br><br>阿里巴巴也蒙受了不白之冤：<br><a href="http://club.china.alibaba.com/forum/thread/view/_22629427_.html">http://club.china.alibaba.com/forum/thread/view/_22629427_.html</a><br><br>同样不幸的还有土豆网，土豆的官方声明把箭头指向了BHO，不知是否有根据，实际试验至少有部分机器确实选中了&#8220;启用第三方浏览器扩展&#8221;，并且禁止此选项后问题解决了，但是这个操作也很难作为一个解决方案。<br><a href="http://bbs.tudou.com/topic/20061231/5686">http://bbs.tudou.com/topic/20061231/5686</a><br><br>但是网上搜不到其他相关的解决方案，不少人都以为是中了木马、病毒或者打开的网页带有恶意脚本，msdn上一时也搜不到相关的资料。特此贴出来共享&nbsp;。</p>
<img src ="http://www.blogjava.net/emu/aggbug/128666.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-06 20:41 <a href="http://www.blogjava.net/emu/archive/2007/07/06/128666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows常用命令集[转] </title><link>http://www.blogjava.net/emu/archive/2007/06/08/122912.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Fri, 08 Jun 2007 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/08/122912.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/122912.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/08/122912.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/122912.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/122912.html</trackback:ping><description><![CDATA[gpedit.msc-----组策略 sndrec32-------录音机 <br>Nslookup-------IP地址侦测器 explorer-------打开资源管理器 <br>logoff---------注销命令 tsshutdn-------60秒倒计时关机命令 <br>lusrmgr.msc----本机用户和组 services.msc---本地服务设置 <br>oobe/msoobe /a----检查XP是否激活 notepad--------打开记事本 <br>cleanmgr-------垃圾整理 net start messenger----开始信使服务 <br>compmgmt.msc---计算机管理 net stop messenger-----停止信使服务 <br>conf-----------启动netmeeting dvdplay--------DVD播放器 <br>charmap--------启动字符映射表 diskmgmt.msc---磁盘管理实用程序 <br>calc-----------启动计算器 dfrg.msc-------磁盘碎片整理程序 <br>chkdsk.exe-----Chkdsk磁盘检查 devmgmt.msc--- 设备管理器 <br>regsvr32 /u *.dll----停止dll文件运行 drwtsn32------ 系统医生 <br>rononce -p ----15秒关机 dxdiag---------检查DirectX信息 <br>regedt32-------注册表编辑器 Msconfig.exe---系统配置实用程序 <br>rsop.msc-------组策略结果集 mem.exe--------显示内存使用情况 <br>regedit.exe----注册表 winchat--------XP自带局域网聊天 <br>progman--------程序管理器 winmsd---------系统信息 <br>perfmon.msc----计算机性能监测程序 winver---------检查Windows版本 <br>sfc /scannow-----扫描错误并复原 winipcfg-------IP配置 <br>taskmgr-----任务管理器（2000／xp／2003） command--------cmd <br>fsmgmt.msc 共享文件夹 netstat -an----查看端口 <br>osk 屏幕键盘 install.asp----修改注册网页 <br>eventvwr.msc 时间查看器 <br>secpol.msc 本地安全设置 <br>services.msc 服务 <br>2K <br><br>accwiz.exe &gt; 辅助工具向导 <br>acsetups.exe &gt; acs setup dcom server executable <br>actmovie.exe &gt; 直接显示安装工具 <br>append.exe &gt; 允许程序打开制定目录中的数据 <br>arp.exe &gt; 显示和更改计算机的ip与硬件物理地址的对应列表 <br>at.exe &gt; 计划运行任务 <br>atmadm.exe &gt; 调用管理器统计 <br>attrib.exe &gt; 显示和更改文件和文件夹属性 <br>autochk.exe &gt; 检测修复文件系统 <br>autoconv.exe &gt; 在启动过程中自动转化系统 <br>autofmt.exe &gt; 在启动过程中格式化进程 <br>autolfn.exe &gt; 使用长文件名格式 <br>bootok.exe &gt; boot acceptance application for registry <br>bootvrfy.exe &gt; 通报启动成功 <br>cacls.exe &gt; 显示和编辑acl <br>calc.exe &gt; 计算器 <br>cdplayer.exe &gt; cd播放器 <br>change.exe &gt; 与终端服务器相关的查询 <br>charmap.exe &gt; 字符映射表 <br>chglogon.exe &gt; 启动或停用会话记录 <br>chgport.exe &gt; 改变端口（终端服务） <br>chgusr.exe &gt; 改变用户（终端服务） <br>chkdsk.exe &gt; 磁盘检测程序 <br>chkntfs.exe &gt; 磁盘检测程序 <br>cidaemon.exe &gt; 组成ci文档服务 <br>cipher.exe &gt; 在ntfs上显示或改变加密的文件或目录 <br>cisvc.exe &gt; 索引内容 <br>ckcnv.exe &gt; 变换cookie <br>cleanmgr.exe &gt; 磁盘清理 <br>cliconfg.exe &gt; sql客户网络工具 <br>clipbrd.exe &gt; 剪贴簿查看器 <br>clipsrv.exe &gt; 运行clipboard服务 <br>clspack.exe &gt; 建立系统文件列表清单 <br>cluster.exe &gt; 显示域的集群 <br>_cmd_.exe &gt; 没什么好说的！ <br>cmdl32.exe &gt; 自动下载连接管理 <br>cmmgr32.exe &gt; 连接管理器 <br>cmmon32.exe &gt; 连接管理器监视 <br>cmstp.exe &gt; 连接管理器配置文件安装程序 <br>comclust.exe &gt; 集群 <br>comp.exe &gt; 比较两个文件和文件集的内容＊ <br>compact.exe &gt; 显示或改变ntfs分区上文件的压缩状态 <br>conime.exe &gt; ime控制台 <br>control.exe &gt; 控制面板 <br>convert.exe &gt; 转换文件系统到ntfs <br>convlog.exe &gt; 转换iis日志文件格式到ncsa格式 <br>cprofile.exe &gt; 转换显示模式 <br>cscript.exe &gt; 较本宿主版本 <br>csrss.exe &gt; 客户服务器runtime进程 <br>csvde.exe &gt; 日至格式转换程序 <br>dbgtrace.exe &gt; 和terminal server相关 <br>dcomcnfg.exe &gt; dcom配置属性 <br>dcphelp.exe &gt; ? <br>dcpromo.exe &gt; ad安装向导 <br>ddeshare.exe &gt; dde共享 <br>ddmprxy.exe &gt; <br>debug.exe &gt; 就是debug啦！ <br>dfrgfat.exe &gt; fat分区磁盘碎片整理程序 <br>dfrgntfs.exe &gt; ntfs分区磁盘碎片整理程序 <br>dfs_cmd_.exe &gt; 配置一个dfs树 <br>dfsinit.exe &gt; 分布式文件系统初始化 <br>dfssvc.exe &gt; 分布式文件系统服务器 <br>diantz.exe &gt; 制作cab文件 <br>diskperf.exe &gt; 磁盘性能计数器 <br>dllhost.exe &gt; 所有com+应用软件的主进程 <br>dllhst3g.exe &gt; <br>dmadmin.exe &gt; 磁盘管理服务 <br>dmremote.exe &gt; 磁盘管理服务的一部分 <br>dns.exe &gt; dns applications dns <br>doskey.exe &gt; 命令行创建宏 <br>dosx.exe &gt; dos扩展 <br>dplaysvr.exe &gt; 直接运行帮助 <br>drwatson.exe &gt; 华生医生错误检测 <br>drwtsn32.exe &gt; 华生医生显示和配置管理 <br>dtcsetup.exe &gt; installs mdtc <br>dvdplay.exe &gt; dvd播放 <br>dxdiag.exe &gt; direct-x诊断工具 <br>edlin.exe &gt; 命令行的文本编辑器（历史悠久啊！） <br>edlin.exe &gt; 命令行的文本编辑器（历史悠久啊！） <br>esentutl.exe &gt; ms数据库工具 <br>eudcedit.exe &gt; type造字程序 <br>eventvwr.exe &gt; 事件查看器 <br>evnt_cmd_.exe &gt; event to trap translator; configuration tool <br>evntwin.exe &gt; event to trap translator setup <br>exe2bin.exe &gt; 转换exe文件到二进制 <br>expand.exe &gt; 解压缩 <br>extrac32.exe &gt; 解cab工具 <br>fastopen.exe &gt; 快速访问在内存中的硬盘文件 <br>faxcover.exe &gt; 传真封面编辑 <br>faxqueue.exe &gt; 显示传真队列 <br>faxsend.exe &gt; 发送传真向导 <br>faxsvc.exe &gt; 启动传真服务 <br>fc.exe &gt; 比较两个文件的不同 <br>find.exe &gt; 查找文件中的文本行 <br>findstr.exe &gt; 查找文件中的行 <br>finger.exe &gt; 一个用户并显示出统计结果 <br>fixmapi.exe &gt; 修复mapi文件 <br>flattemp.exe &gt; 允许或者禁用临时文件目录 <br>fontview.exe &gt; 显示字体文件中的字体 <br>forcedos.exe &gt; forces a file to start in dos mode. 强制文件在dos模式下运行 <br>freecell.exe &gt; popular windows game 空当接龙 <br>ftp.exe &gt; file transfer protocol used to transfer files over a network conne <br>ction 就是ftp了 <br>gdi.exe &gt; graphic device interface 图形界面驱动 <br>grovel.exe &gt; <br>grpconv.exe &gt; program manager group convertor 转换程序管理员组 <br>help.exe &gt; displays help for windows 2000 commands 显示帮助 <br>hostname.exe &gt; display hostname for machine. 显示机器的hostname <br>ie4uinit.exe &gt; ie5 user install tool ie5用户安装工具 <br>ieshwiz.exe &gt; customize folder wizard 自定义文件夹向导 <br>iexpress.exe &gt; create and setup packages for install 穿件安装包 <br>iisreset.exe &gt; restart iis admin service 重启iis服务 <br>internat.exe &gt; keyboard language indicator applet 键盘语言指示器 <br>ipconfig.exe &gt; windows 2000 ip configuration. 察看ip配置 <br>ipsecmon.exe &gt; ip security monitor ip安全监视器 <br>ipxroute.exe &gt; ipx routing and source routing control program ipx路由和源路由 <br>控制程序 <br>irftp.exe &gt; setup ftp for wireless communication 无线连接 <br>ismserv.exe &gt; intersite messaging service 安装或者删除service control manage <br>r中的服务 <br>jdbgmgr.exe &gt; microsoft debugger for java 4 java4的调试器 <br>jetconv.exe &gt; convert a jet engine database 转换jet engine数据库 <br>jetpack.exe &gt; compact jet database. 压缩jet数据库 <br>jview.exe &gt; command-line loader for java java的命令行装载者 <br>krnl386.exe &gt; core component for windows 2000 2000的核心组件 <br>label.exe &gt; change label for drives 改变驱动器的卷标 <br>lcwiz.exe &gt; license compliance wizard for local or remote systems. 许可证符合 <br>向导 <br>ldifde.exe &gt; ldif cmd line manager ldif目录交换命令行管理 <br>licmgr.exe &gt; terminal server license manager 终端服务许可协议管理 <br>lights.exe &gt; display connection status lights 显示连接状况 <br>llsmgr.exe &gt; windows 2000 license manager 2000许可协议管理 <br>llssrv.exe &gt; start the license server 启动许可协议服务器 <br>lnkstub.exe &gt; <br>locator.exe &gt; rpc locator 远程定位 <br>lodctr.exe &gt; load perfmon counters 调用性能计数 <br>logoff.exe &gt; log current user off. 注销用户 <br>lpq.exe &gt; displays status of a remote lpd queue 显示远端的lpd打印队列的状态， <br>显示被送到基于unix的服务器的打印任务 <br>lpr.exe &gt; send a print job to a network printer. 重定向打印任务到网络中的打印 <br>机。通常用于unix客户打印机将打印任务发送给连接了打印设备的nt的打印机服务器。 <br><br>lsass.exe &gt; lsa executable and server dll 运行lsa和server的dll <br>lserver.exe &gt; specifies the new dns domain for the default server 指定默认se <br>rver新的dns域 <br>os2.exe &gt; an os/2 warp server (os2 /o) os/2 <br>os2srv.exe &gt; an os/2 warp server os/2 <br>os2ss.exe &gt; an os/2 warp server os/2 <br>osk.exe &gt; on screen keyboard 屏幕键盘 <br>packager.exe &gt; windows 2000 packager manager 对象包装程序 <br>pathping.exe &gt; combination of ping and tracert 包含ping和tracert的程序 <br>pax.exe &gt; is a posix program and path names used as arguments must be specif <br>ied in posix format. use "//c/users/default" instead of "c:usersdefault." <br>启动便携式存档互换 (pax) 实用程序 <br>pentnt.exe &gt; used to check the pentium for the floating point division error <br>. 检查pentium的浮点错误 <br>perfmon.exe &gt; starts windows performance monitor 性能监视器 <br>ping.exe &gt; packet internet groper 验证与远程计算机的连接 <br>posix.exe &gt; used for backward compatibility with unix 用于兼容unix <br>print.exe &gt; cmd line used to print files 打印文本文件或显示打印队列的内容。 <br>progman.exe &gt; program manager 程序管理器 <br>proquota.exe &gt; profile quota program <br>psxss.exe &gt; posix subsystem application posix子系统应用程序 <br>qappsrv.exe &gt; displays the available application terminal servers on the net <br>work <br>在网络上显示终端服务器可用的程序 <br>qprocess.exe &gt; display information about processes local or remote 在本地或远 <br>程显示进程的信息（需终端服务） <br>query.exe &gt; query termserver user process and sessions 查询进程和对话 <br>quser.exe &gt; display information about a user logged on 显示用户登陆的信息（需 <br>终端服务） <br>qwinsta.exe &gt; display information about terminal sessions. 显示终端服务的信息 <br><br>rasadmin.exe &gt; start the remote access admin service 启动远程访问服务 <br>rasautou.exe &gt; creates a ras connection 建立一个ras连接 <br>rasdial.exe &gt; dial a connection 拨号连接 <br>ras.exe &gt; starts a ras connection 运行ras连接 <br>rcp.exe &gt; copies a file from and to a rcp service. 在 windows 2000 计算机和运 <br>行远程外壳端口监控程序 rshd 的系统之间复制文件 <br>rdpclip.exe &gt; rdpclip allows you to copy and paste files between a terminal <br>session and client console session. 再终端和本地复制和粘贴文件 <br>recover.exe &gt; recovers readable information from a bad or defective disk 从坏 <br>的或有缺陷的磁盘中恢复可读取的信息。 <br>redir.exe &gt; starts the redirector service 运行重定向服务 <br>regedt32.exe &gt; 32-bit register service 32位注册服务 <br>regini.exe &gt; modify registry permissions from within a script 用脚本修改注册 <br>许可 <br>register.exe &gt; register a program so it can have special execution character <br>istics. 注册包含特殊运行字符的程序 <br>regsvc.exe &gt; <br>regsvr32.exe &gt; registers and unregister's dll's. as to how and where it regi <br>ster's them i dont know. 注册和反注册dll <br>regtrace.exe &gt; options to tune debug options for applications failing to dum <br>p trace statements <br>trace 设置 <br>regwiz.exe &gt; registration wizard 注册向导 <br>remrras.exe &gt; <br>replace.exe &gt; replace files 用源目录中的同名文件替换目标目录中的文件。 <br>reset.exe &gt; reset an active section 重置活动部分 <br>rexec.exe &gt; runs commands on remote hosts running the rexec service. 在运行 <br>rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前，验证远程计算机 <br>上的用户名，只有安装了 tcp/ip 协议后才可以使用该命令。 <br>risetup.exe &gt; starts the remote installation service wizard. 运行远程安装向导 <br>服务 <br>route.exe &gt; display or edit the current routing tables. 控制网络路由表 <br>routemon.exe &gt; no longer supported 不再支持了！ <br>router.exe &gt; router software that runs either on a dedicated dos or on an os <br>. 检查pentium的浮点错误 <br>perfmon.exe &gt; starts windows performance monitor 性能监视器 <br>ping.exe &gt; packet internet groper 验证与远程计算机的连接 <br>posix.exe &gt; used for backward compatibility with unix 用于兼容unix <br>print.exe &gt; cmd line used to print files 打印文本文件或显示打印队列的内容。 <br>progman.exe &gt; program manager 程序管理器 <br>proquota.exe &gt; profile quota program <br>psxss.exe &gt; posix subsystem application posix子系统应用程序 <br>qappsrv.exe &gt; displays the available application terminal servers on the net <br>work <br>在网络上显示终端服务器可用的程序 <br>qprocess.exe &gt; display information about processes local or remote 在本地或远 <br>程显示进程的信息（需终端服务） <br>query.exe &gt; query termserver user process and sessions 查询进程和对话 <br>quser.exe &gt; display information about a user logged on 显示用户登陆的信息（需 <br>终端服务） <br>qwinsta.exe &gt; display information about terminal sessions. 显示终端服务的信息 <br><br>rasadmin.exe &gt; start the remote access admin service 启动远程访问服务 <br>rasautou.exe &gt; creates a ras connection 建立一个ras连接 <br>rasdial.exe &gt; dial a connection 拨号连接 <br>ras.exe &gt; starts a ras connection 运行ras连接 <br>rcp.exe &gt; copies a file from and to a rcp service. 在 windows 2000 计算机和运 <br>行远程外壳端口监控程序 rshd 的系统之间复制文件 <br>rdpclip.exe &gt; rdpclip allows you to copy and paste files between a terminal <br>session and client console session. 再终端和本地复制和粘贴文件 <br>recover.exe &gt; recovers readable information from a bad or defective disk 从坏 <br>的或有缺陷的磁盘中恢复可读取的信息。 <br>redir.exe &gt; starts the redirector service 运行重定向服务 <br>regedt32.exe &gt; 32-bit register service 32位注册服务 <br>regini.exe &gt; modify registry permissions from within a script 用脚本修改注册 <br>许可 <br>register.exe &gt; register a program so it can have special execution character <br>istics. 注册包含特殊运行字符的程序 <br>regsvc.exe &gt; <br>regsvr32.exe &gt; registers and unregister's dll's. as to how and where it regi <br>ster's them i dont know. 注册和反注册dll <br>regtrace.exe &gt; options to tune debug options for applications failing to dum <br>p trace statements <br>trace 设置 <br>regwiz.exe &gt; registration wizard 注册向导 <br>remrras.exe &gt; <br>replace.exe &gt; replace files 用源目录中的同名文件替换目标目录中的文件。 <br>reset.exe &gt; reset an active section 重置活动部分 <br>rexec.exe &gt; runs commands on remote hosts running the rexec service. 在运行 <br>rexec 服务的远程计算机上运行命令。rexec 命令在执行指定命令前，验证远程计算机 <br>上的用户名，只有安装了 tcp/ip 协议后才可以使用该命令。 <br>risetup.exe &gt; starts the remote installation service wizard. 运行远程安装向导 <br>服务 <br>route.exe &gt; display or edit the current routing tables. 控制网络路由表 <br>routemon.exe &gt; no longer supported 不再支持了！ <br>router.exe &gt; router software that runs either on a dedicated dos or on an os<!-- Added by RelatedTopic, plugin for Bo-Blog 2.0.0 --> 
<img src ="http://www.blogjava.net/emu/aggbug/122912.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-06-08 18:11 <a href="http://www.blogjava.net/emu/archive/2007/06/08/122912.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用前景图实现hover切换图片</title><link>http://www.blogjava.net/emu/archive/2007/06/06/122449.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 06 Jun 2007 12:45:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/06/122449.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/122449.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/06/122449.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/122449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/122449.html</trackback:ping><description><![CDATA[现在很多网站都用背景图片来实现hover（鼠标经过）切换图片。但是IE有个该死的bug会造成超链接的背景图片有时无法cache，因此在鼠标经过超链接图片的时候就看到哗哗一大片的http下载请求<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emcrook.gif" align=absMiddle border=0>。<br><br>这不像很多网站上描述的，是由于IE的缓存策略被设置在&#8220;每次访问此页时更新&#8221;了造成的，不管IE缓存策略如何设置，都无法彻底避免这个问题。<br><br>emu试验了一下，发现用前景图也可以实现老甘（他的域名貌似已经过期，居然没续费&#8230;&#8230;）用背景图实现的类似效果，不过要多用上一些小技巧：&nbsp;
<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">style</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">overflow</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">hidden</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">width</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">position</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">relative</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-130px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-350px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file:hover</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">emu</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">expression(0)</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file:hover&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-10px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-350px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">text-decoration</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">none</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">color</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">gray</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;span</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">overflow</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">hidden</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">width</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2&nbsp;span&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">position</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">relative</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-130px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-348px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2:hover</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">color</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">red</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">height</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">20</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br>&nbsp;&nbsp;&nbsp;&nbsp;A.file2:hover&nbsp;span&nbsp;IMG</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">left</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-10px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">-348px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">style</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HEAD</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BODY</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>&nbsp;one&nbsp;single&nbsp;icon&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">A&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="file"</span><span style="COLOR: #ff0000">&nbsp;href</span><span style="COLOR: #0000ff">="#"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="http://www.blogjava.net/images/blogjava_net/emu/1359/o_button.gif"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">A</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">.</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br>an&nbsp;icon&nbsp;with&nbsp;text:</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">A&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="file2"</span><span style="COLOR: #ff0000">&nbsp;href</span><span style="COLOR: #0000ff">="#"</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">img&nbsp;</span><span style="COLOR: #ff0000">src</span><span style="COLOR: #0000ff">="http://www.blogjava.net/images/blogjava_net/emu/1359/o_button.gif"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">span</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">test<img src="http://www.blogjava.net/Images/dot.gif"></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">A</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>&nbsp;不用背景图的一个代价就是，再也不能css裸奔了。twinsen一定要讲这是个人品问题了。有的时候，要对付IE这样人品不好的平台，牺牲一点人品来换取一点性能上的优化，并不是不值得考虑的吧？</p>
在Firefox下面比较郁闷，必须要display:block才能实现overflow的效果，试了下display:table等table族的样式，都没有办法真正的overflow。
<img src ="http://www.blogjava.net/emu/aggbug/122449.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-06-06 20:45 <a href="http://www.blogjava.net/emu/archive/2007/06/06/122449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于明白m$为什么要对xmlhttp和xmldom做那么多个版本的升级了</title><link>http://www.blogjava.net/emu/archive/2007/06/04/121979.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 04 Jun 2007 12:23:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/06/04/121979.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/121979.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/06/04/121979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/121979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/121979.html</trackback:ping><description><![CDATA[<p>为了支持304response，测试了 MSXML2.XMLHTTP.5.0，MSXML2.XMLHTTP.4.0,MSXML2.XMLHTTP.3.0，MSXML2.XMLHTT，Microsoft.XMLHTTP，MSXML2.DOMDocument.5.0，MSXML2.DOMDocument.3.0，MSXML2.DOMDocument，Microsoft.XMLDOM 用get方式分别去拉取一个允许304response的xml资源。结果发现：<br />
<br />
MSXML2.XMLHTTP.5.0 可以直接读取到本机cache，不发出请求。但是没有办法根据本机的cache版本的last-modified时间去要求服务器验证并返回304，只能依靠脚本来控制是否允许cache。<br />
<br />
MSXML2.XMLHTTP.4.0,MSXML2.XMLHTTP.3.0，MSXML2.XMLHTT，Microsoft.XMLHTTP，MSXML2.DOMDocument.4.0，MSXML2.DOMDocument.3.0，MSXML2.DOMDocument，Microsoft.XMLDOM&nbsp; 这几个家伙全部根据操作系统不同，要么不支持cache，要么不发送请求，直接返回cache的版本，无法要求服务器验证并返回304。<br />
<br />
惟一可以正确发送if-modified-since头部的控件是：<strong>MSXML2.DOMDocument.5.0</strong><br />
<br />
MSXML2.XMLHTTP.6.0，，MSXML2.DOMDocument.6.0，MSXML3.DOMDocument等本机都不支持，无法测试。<br />
<br />
每个版本的xmlhttp和xmldom都各有各的问题，唉，M$又让偶失望了。</p>
<img src ="http://www.blogjava.net/emu/aggbug/121979.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-06-04 20:23 <a href="http://www.blogjava.net/emu/archive/2007/06/04/121979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典java面试</title><link>http://www.blogjava.net/emu/archive/2007/05/29/120676.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 29 May 2007 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/29/120676.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/120676.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/29/120676.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/120676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/120676.html</trackback:ping><description><![CDATA[面试官：熟悉哪种语言<br>应聘者：Java。<br><br>面试官：知道什么叫类么<br>应聘者：我这人实在，工作努力，不知道什么叫累<br><br>面试官：知道什么是包?<br>应聘者：平常不带包 也不用公司准备了<br><br>面试官：知道什么是接口吗?<br>应聘者：我这个人工作认真。从来不找借口偷懒<br><br>面试官：知道什么是继承么<br>应聘者：我是孤儿没什么可以继承的<br><br>面试官:知道什么叫对象么？<br>应聘者:知道，不过我工作努力，上进心强，暂时还没有打算找对象。<br><br>面试官：知道多态么？<br>应聘者：知道，我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为！请问这和Java有什么关系？？&nbsp; 
<img src ="http://www.blogjava.net/emu/aggbug/120676.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-05-29 13:51 <a href="http://www.blogjava.net/emu/archive/2007/05/29/120676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VeriSign:专门做信息安全的公司有这么外行的错误</title><link>http://www.blogjava.net/emu/archive/2007/05/23/119403.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 23 May 2007 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/23/119403.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/119403.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/23/119403.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/119403.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/119403.html</trackback:ping><description><![CDATA[<p><br />
啥都甭说了，点下下面这个verisign的验证图标，链接到verisign的验证页面上，看看偶的blog也可以以某网站的身份通过verisign的验证，只要再把页面做的比较像某网站，出门诈骗的时候就可以扛上verisign的大旗了。<br />
<br />
<a href="https://seal.verisign.com/splash?form_file=fdf/splash.fdf&amp;dn=WWW.ALIBABA.COM&amp;lang=zh_cn" target='_blank""'><img alt="" src="https://www.tenpay.com/zft/images/verlogo.jpg" /></a>&nbsp;<br />
<br />
究起原因是VeriSign没有从http链接中获取Referer信息来判断被校验的网站，而是根据超链接里面传过来的&#8220;dn&#8221;参数来校验，正所谓的防君子不防小人。作为一个专门做信息安全的公司出这样外行的错误已经让人很无语了，被指出的时候表现出的推脱态度，更让客户寒心。<br />
<br />
根据<a href="http://blog.csdn.net/VeriSign/archive/2005/11/27/537714.aspx">http://blog.csdn.net/VeriSign/archive/2005/11/27/537714.aspx</a>&nbsp;，微软.Net战略、瑞星、盛大网络、中国万网、阿里巴巴、新浪、搜狐、腾讯、上海电信、华为、清华同方、北大方正、厦新电子、TCL、中国工商银行、招商银行、昆仑证券、中国民航等都使用了verisign的服务。<br />
</p>
<p>此外根据 <a href="http://tag.csdn.net/Article/c0a75980-452e-4eaa-ac8e-467c5fc9966b.html">http://tag.csdn.net/Article/c0a75980-452e-4eaa-ac8e-467c5fc9966b.html</a>&nbsp;VeriSign在中国的服务造成的安全隐甚至可能比它解决的多：</p>
<p><span style="background-color: #ffcc99">Verisign公司在中国设立的J根镜像服务器，中方没有丝毫的管理权限，对于服务器中的日志文件、程序文件，中方根本无法接触，全部由美国公司直接管理。然而，真相却与此大相径庭：这个由美国商业公司Verisign所带来的根域名镜像服务器，对中国访问境外域名提速有限，对中国互联网安全的加强作用微乎其微，反倒为美国公司监控中国互联网的访问数据提供了便利。互联网安全专家指出："一旦发生国际冲突，境外机构掐断中国的根服务器镜像和COM域名镜像，所有使用COM域名的网站都将无法访问，中国的互联网将陷入瘫痪，后果不堪设想。<br />
</span><br />
寒一个。 </p>
<img src ="http://www.blogjava.net/emu/aggbug/119403.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-05-23 15:06 <a href="http://www.blogjava.net/emu/archive/2007/05/23/119403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>office2007带的脚本调试器升级了，不过掉东西了</title><link>http://www.blogjava.net/emu/archive/2007/05/22/119064.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Tue, 22 May 2007 02:37:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/22/119064.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/119064.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/22/119064.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/119064.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/119064.html</trackback:ping><description><![CDATA[装office2007的时候顺带装了其中带的脚本调试器，发现这个版本的脚本调试器还是有个好处的，如果脚本中有多句代码被挤到一行运行的时候，以前版本的office带的调试器都只能一并运行完，这个版本终于可以像vs的调试器一样逐句跟踪了。虽然不能在一行中间打断点，不过可以在一行上打断点后再用&#8220;运行到光标处&#8221;来代替。<br>&nbsp;<br>可惜在调试网页的时候发现M$搞掉东西了。<br><br>看看2003板的调试菜单：<br><img height=453 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/2003debugger.GIF" width=566 border=0><br><br>再看看2007版的：<br><img height=360 src="http://www.blogjava.net/images/blogjava_net/emu/2007debugger.GIF" width=544 border=0><br><br>少了很不少东西，包括最重要的&#8220;监视窗口&#8221;。简直不能想像没有监视窗口怎么工作。还好入口没了功能还在，可以从另一个地方找到入口，操作是：在调试过程中选择添加&#8220;快速监视&#8221;，然后在&#8220;快速监视&#8221;里面找到&#8220;添加监视&#8221;。 <br>
<img src ="http://www.blogjava.net/emu/aggbug/119064.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-05-22 10:37 <a href="http://www.blogjava.net/emu/archive/2007/05/22/119064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>json的例子</title><link>http://www.blogjava.net/emu/archive/2007/05/14/117416.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 14 May 2007 11:37:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/14/117416.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/117416.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/14/117416.html#Feedback</comments><slash:comments>21</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/117416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/117416.html</trackback:ping><description><![CDATA[<p><br />
本来一直觉得这么基础的功能是没有什么好拿出来讲的，今天和网友聊天发现，由于缺乏对json的理解，很多人都还在继续带着自己的项目往ajax的方向进军，而完全不知道有一个好得多的替代品。所以写下这么个demo给大家参考：<br />
</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">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">异步json例子</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&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;test(){<br />
&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;s.id</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">cgi_emotion_list</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">HEAD</span><span style="color: #000000; background-color: #f5f5f5">"</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">].appendChild(s);<br />
&nbsp;&nbsp;&nbsp;&nbsp;s.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">http://g2.qzone.qq.com/fcg-bin/cgi_emotion_list.fcg?uin=123456</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;test</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">(){};&nbsp;<br />
}<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;visitCountCallBack(data){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.getElementsByTagName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">HEAD</span><span style="color: #000000; background-color: #f5f5f5">"</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">].removeChild(document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">cgi_emotion_list</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&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">in</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;data){<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;e&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">document.getElementById(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">(e)&nbsp;e.innerHTML</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">data[i];<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</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">button&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="test()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">test</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">button</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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="visitcount"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#6600CC"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="dayvisit"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#CC6633"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="sun"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:red"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="love"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:violet"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="rain"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:blue"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="nutri"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:green"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="gardener"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="color:#996633"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">点击test按钮获取数据</span><span style="color: #0000ff">&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">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 />
返回的是类似这样的一个js语句 ：
<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">visitCountCallBack({</span><span style="color: #000000">"</span><span style="color: #000000">visitcount</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">1941</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">dayvisit</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">spacemark</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><span style="color: #000000">markchange</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><span style="color: #000000">sun</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">love</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">14</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">rain</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">nutri</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">200</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">level</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">gardener</span><span style="color: #000000">"</span><span style="color: #000000">:</span><span style="color: #000000">11</span><span style="color: #000000">});</span></div>
<br />
<br />
科普一下：<br />
相比xml，json的好处是：天生的跨浏览器（比如我的这个demo应该可以跨所有支持dhtml的浏览器而不需要任何修改），客户端解析代价（CPU和内存）非常小，非单根结构（xml是单根结构），标记名只出现一次（xml的标记名在大多数情况下都需要出现两次：&lt;tag&gt;...&lt;/tag&gt;，因此浪费了很多流量）<br />
<br />
这种方式获取数据的主要缺点是只支持get方式请求，另外跨编码的时候要注意一下。xml文件的第一行就可以声明文件的编码：encoding="..."，因此同一个xml源即使编码经常换来换去（一般不会有人这么做啦）也没有什么关系，而json的数据包装中没有类似的标记来声明自己，因此必须要实现约定好编码，不能随意变换，在跨编码（json资源的编码和引用页面的编码不同）调用的时候要指定script的charset为约定的charset。非要经常变换编码的话就要参数化charset，每次变换的时候用某种形式通知到脚本去更改charset。一般的应用不会有这么变态的需求啦，一般是在做网站国际化的时候，在做数据切割的过程中，才会出现一个数据源有两种编码需要处理的情况。<br />
<br />
此外很多人并不知道json可以异步获取，这个例子很重要的一点是展示了如何异步获取json。 
<img src ="http://www.blogjava.net/emu/aggbug/117416.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-05-14 19:37 <a href="http://www.blogjava.net/emu/archive/2007/05/14/117416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Csdn英雄大会流水账</title><link>http://www.blogjava.net/emu/archive/2007/05/07/115751.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 07 May 2007 12:56:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/05/07/115751.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/115751.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/05/07/115751.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/115751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/115751.html</trackback:ping><description><![CDATA[<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2862.JPG" width=1024 border=0>&nbsp;
<p>javascript版的老朋友：秋水无痕、emu和梅花雪<span><span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>我也不知道自己会拖了一个月这么久。但是工作再忙，欠的作业始终还是要做的。时间一长，记忆越来越模糊了，还是趁没忘光之前，写点流水账吧。事情要从很久很久前说起&#8230;&#8230;</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2001</span><span>年自己开公司的时候，虽然已经参与过一个基于</span><span>web</span><span>的电子政务系统，但是其实对</span><span>web</span><span>开发还是一知半解，真正要自己独立解决技术问题的时候就不行了。身边是没什么人能问的，甘霖兄推荐了</span><span>Csdn</span><span>给我，从那时就经常上</span><span>Csdn</span><span>泡着了，从刚开始问问题，到后来回答问题，在论坛里面争论，抢分&#8230;&#8230;一直到</span><span>2003</span><span>年出国，告别了论坛。</span><span>2004</span><span>年回国后，再回到论坛，已经见不到当年那些熟悉的面孔，更难得见到当年那种热烈讨论的气氛，那些追根刨底的问题，对比测试，还有秋水无痕那些有如神来之笔的解答。那时看论坛已经觉得以自己的水平已经没有太多值得讨论的东西了，恰好</span><span>Csdn</span><span>开了博客，于是开始写博客。一直写到有一段时间</span><span>Csdn</span><span>的博客服务器频频出问题，不得不把博客搬走，从此回</span><span>Csdn</span><span>的机会越来越少了。</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>去年过年前</span><span>Csdn</span><span>筹备英雄大会的时候晓丹加了我</span><span>QQ</span><span>问我去不去，立刻就答应了。虽然在社区混过几年，也担任了个小版主，但是社区级别并不算高，居然能被</span><span>Csdn</span><span>惦记到，还是非常荣幸的。同时打听到一些论坛的老战友都要去，包括多年未见的秋水无痕、景仰已久的孟子</span><span>E</span><span>章，当年一起在论坛混出来的梅花雪（当年还是梅花雨）。公司也比较支持，批了出差。</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>4</span><span>月</span><span>6</span><span>号的英雄大会，</span><span>5</span><span>号的飞机到北京。下飞机的时候才发现原来同机过来的还有金碟的飞刀，</span><span>java</span><span>和</span><span>.net</span><span>双栖的高手。前面一趟飞机的人更多，是来自成都的一些网友，他们在笑我们从深圳过来的两个都煞有其事的拉了个大行李箱，而他们都是拎了个小塑料袋就出门了。更牛的是有个从成都过来的网友干脆是空着手过来的，旁边的人笑他来领奖品回去就够了，不必带东西过来的，这个瘦瘦的貌不惊人的戴的眼镜像啤酒瓶底的牛人笑道，奖品寄回去就行了，何必带着呢。</span><span>到了晚上我才知道，这个牛人果然是过来领奖的，他就是</span><span>Csdn</span><span>社区的第一牛人：邹健。</span><span>第二天我才知道他们成都过来的人几乎都是一个公司的，倒不是这个公司和</span><span>csdn</span><span>有什么特别关系，原来新蛋这个公司这几年都是盯着</span><span>MVP</span><span>名单挖人的，所以他们一来就是一大群</span><span>MVP</span><span>。<br><br><img height=768 alt=emu和邹健 src="http://www.blogjava.net/images/blogjava_net/emu/102_2617.JPG" width=1024 border=0 longDesc=emu和邹健><br>emu和邹健</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>欢迎大会主要是</span><span>Csdn</span><span>的广告时间，各位老大们从各个角度介绍了一些</span><span>Csdn</span><span>未来的发展战略，留下的主要印象是，</span><span>Csdn</span><span>还是有很多想法的，社区未来还是会有很多新的发展。开会的同时大家开始私下交流，第一个认出来的就是</span><span>4</span><span>年未见的梅花雪，这哥们的照片经常看见，好认得很。然后是秋水无痕，也有四年没见了，我已经认不出来他了。然后又见到孟子</span><span>E</span><span>章，孟大侠胖了，也没认出来。<br><br><img height=768 src="http://www.blogjava.net/images/blogjava_net/emu/102_2603.JPG" width=1024 border=0><br>emu和秋水无痕</span></p>
<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>晚上在将台酒店吃饭，有一个很有特色的莲藕酿糯米，甜脆清香，一个月过去了还是记忆犹新，然后就是大家挨个上去自我介绍。很多传说中的大侠，记忆特别深刻的有从博客园跑来</span><span>Csdn</span><span>卧底的鸟食轩，还有偶庄老大经常提起的青润（白慧东）。一番&#8220;应酬&#8221;后回到招待所，大家开始疯狂串门，偶和</span><span>Meizz</span><span>、秋水等人串到了孟子的房间里，大家都是</span><span>web</span><span>版出来的，特别好聊，从</span><span>web</span><span>架构到技术细节，一直聊到论坛里面的各种往事，兔子记忆力超强，大家讲到哪里他都能立刻补充起来当时有什么细节，谁又是谁的同学的同学，让人怀疑他是不是</span><span>FBI</span><span>出来的。中间邹健也带了几个人过来了，一时间小小的房间被偶像们挤得站都站不下了，可是谁都舍不得走。</span></p>
<p>&nbsp;<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2807.JPG" width=1024 border=0></p>
<p>emu和青润（白慧冬）<br><span><span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>第二天一早就起来，吃早饭的时候早孟子打听他为什么叫&#8220;孟子</span><span>E</span><span>章&#8221;，孟子说，读中学语文的时候，课本上不是有《孟子一章》、《孟子二章》嘛，晕！</span> </p>
<p>&nbsp;<img src="http://www.blogjava.net/images/blogjava_net/emu/102_2615.JPG" border=0></p>
<p>emu和孟子<span><br><br>到主会场，终于和公司的同事们会合了。<br></span></p>
<p><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2548.JPG" width=1024 border=0>&nbsp;</p>
<p><br><span><span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>一天密集的大会，各种演讲、每个公司都着痕迹或不着痕迹的做一番广告，其实很多人都已经跑出去聊天了，偶也不例外。在会场外，又见到了江南白衣、熊节等传说中的大侠们。<br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2619.JPG" width=1024 border=0></span></p>
<p>&nbsp;emu和江南白衣<br></p>
<p><span><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2621.JPG" width=1024 border=0><br>emu和熊节在thoughtworks的展台前面。<br><br><br>会后参观了微软研究院。感觉微软很鼓励员工去做很多不一定有市场前景的研究，我们国内的企业有几家能给员工这样大的自由度呢？</span></p>
<p>&nbsp;<img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2664.JPG" width=1024 border=0></p>
<p>微软一个小组在研究把两个手机放到一起来放电影。这个技术我看来纯粹是好玩，由于画面拼不完整，很难有使用价值。可以看出微软工作的自由度。<br><span><br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2794.JPG" width=1024 border=0><br><br>微软的内部party。<br><br></span><span><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2804.JPG" width=1024 border=0><br>晚上去红色年代<span>FB</span><span>了一番，精彩的现场表演之后，meizz也现场演奏了两曲笛子独奏。</span><br><br><br><img height=768 alt="" src="http://www.blogjava.net/images/blogjava_net/emu/102_2854.JPG" width=1024 border=0><br>第二天爬长城，中间这位mm是这次英雄大会惟一一位巾帼英雄</span></p>
<img src ="http://www.blogjava.net/emu/aggbug/115751.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-05-07 20:56 <a href="http://www.blogjava.net/emu/archive/2007/05/07/115751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>千猪散尽还复来</title><link>http://www.blogjava.net/emu/archive/2007/04/02/108034.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Mon, 02 Apr 2007 10:35:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/04/02/108034.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/108034.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/04/02/108034.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/108034.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/108034.html</trackback:ping><description><![CDATA[金头发的狮子座麦兜也给金头发Sherry领养了，年前买的一套十二星座麦兜现在只剩下最傻的金牛座，最无辜的天枰座，最臭屁的射手座了。今天看到steve的小版本十二星座麦兜，一个个粉粉嫩嫩的，蛮讨人喜欢，下次是买大版本还是小版本呢，犹豫中&#8230;&#8230;
<img src ="http://www.blogjava.net/emu/aggbug/108034.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-04-02 18:35 <a href="http://www.blogjava.net/emu/archive/2007/04/02/108034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>头疼带宽问题</title><link>http://www.blogjava.net/emu/archive/2007/03/29/107101.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Wed, 28 Mar 2007 16:41:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/03/29/107101.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/107101.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/03/29/107101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/107101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/107101.html</trackback:ping><description><![CDATA[只有cdn服务商提供的访问量top100是不够分析真正的问题的。<br /><br />访问量最高并不意味着不正常。访问量＝抽样访问量/抽样率。应该比较同一时间段内的 访问量vs首页PV 来看预装载的图片的访问量是否超常。同样的应该把12套样式的对应图片的访问量累计起来和访问量的比例。或许应该分析top1000？<br /><br />拿到200：304之后，应该比较，那些的200比例异常，也就是浏览器难以cache。 <br /><br />随机访问，看来看去都是背景皮肤吃了最大的流量。但是分散到诸多的背景上之后都上不了top100，无法获得它吃掉了多少流量的数据。<br /><br />不去掉etag，光延长expires不见得有用。 <br /><br />设置样式能否延迟等待样式需要的图片预装载后再执行呢？如果预装载没成功的时候设置了样式，除了增加流量之外有什么作用？或许设置样式的时候不预装载还好一点呢？ <br /><br />很多jpg背景也未免做的太精细了，压小一半下去是要损失一些细节，可是有人几个人会注意到呢，更不要说用户其实根本没有原图可以比较。有时候仔细一看，压缩后比原图片还多出来一些细节呢，本来平滑过渡的地方都呈现了漂亮的边缘效应，原图看不见的气泡都凸显出来了。<br /><br />问题是要cp去压缩的话，对他自己有什么好处吗？他不去压缩的话有什么坏处吗？<br /><br />鼓励小背景？还是打击大背景？鼓励jpg背景，还是限制gif背景（gif还有个一直大量消耗cpu的问题）？<br /><br />设定上限的结果会不会是大家都按照上限来制作背景？延伸背景是否应该设定高度限制？gif是否设定了帧数限制？jpg能否有个细节丰富程度的限制？  <br /><br />或者上传的时候应该自动柔化和再压缩？ <br /><br />剧增了那么多的流量，到底让谁给吃掉了呢？会不会别的项目吃掉了很多流量呢？cdn服务商能否提供分目录的访问次数，哪怕降低抽样率呢？<img src ="http://www.blogjava.net/emu/aggbug/107101.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-03-29 00:41 <a href="http://www.blogjava.net/emu/archive/2007/03/29/107101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又见手机引雷假新闻 </title><link>http://www.blogjava.net/emu/archive/2007/01/22/95194.html</link><dc:creator>emu</dc:creator><author>emu</author><pubDate>Sun, 21 Jan 2007 17:13:00 GMT</pubDate><guid>http://www.blogjava.net/emu/archive/2007/01/22/95194.html</guid><wfw:comment>http://www.blogjava.net/emu/comments/95194.html</wfw:comment><comments>http://www.blogjava.net/emu/archive/2007/01/22/95194.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/emu/comments/commentRss/95194.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/emu/services/trackbacks/95194.html</trackback:ping><description><![CDATA[
		<p>雷雨天不能接手机？手机＝引雷器？虽然已经有许多专家论证过这是无稽之谈：</p>
		<p>
				<a href="http://www.pufz.cn/bbs/dispbbs.asp?boardID=35&amp;ID=1754&amp;page=1">http://www.pufz.cn/bbs/dispbbs.asp?boardID=35&amp;ID=1754&amp;page=1</a> （昆雷电力科学研究所 梅忠恕）</p>
		<p>
				<a href="http://www.ccbn.com.cn/catvbbs/Announce/Announce.asp?BoardID=100&amp;ID=15099">http://www.ccbn.com.cn/catvbbs/Announce/Announce.asp?BoardID=100&amp;ID=15099</a> （刘继、马宏达等）</p>
		<p>
				<a href="http://blog.sina.com.cn/u/4b9e4c1f0100079j">http://blog.sina.com.cn/u/4b9e4c1f0100079j</a> （空军航空气象研究所防雷中心  江明札）</p>
		<p>......</p>
		<p>可是现在传媒还是总是倾向于宣传危言耸听的的言论，而不是科学的言论。某天打的听交通台的主持人也在提醒车友们雨天不要打手机，昨天各大小网站又纷纷开始报道这样的消息：华裔女大学生雨中接手机被闪电击中身亡</p>
		<p>
				<a href="http://www.google.cn/search?hl=zh-CN&amp;q=%E5%8D%8E%E8%A3%94%E5%A5%B3%E5%A4%A7%E5%AD%A6%E7%94%9F%E9%9B%A8%E4%B8%AD%E6%8E%A5%E6%89%8B%E6%9C%BA%E8%A2%AB%E9%97%AA%E7%94%B5%E5%87%BB%E4%B8%AD%E8%BA%AB%E4%BA%A1&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;meta">http://www.google.cn/search?hl=zh-CN&amp;q=%E5%8D%8E%E8%A3%94%E5%A5%B3%E5%A4%A7%E5%AD%A6%E7%94%9F%E9%9B%A8%E4%B8%AD%E6%8E%A5%E6%89%8B%E6%9C%BA%E8%A2%AB%E9%97%AA%E7%94%B5%E5%87%BB%E4%B8%AD%E8%BA%AB%E4%BA%A1&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;meta</a>=</p>
		<p>大家转载的时候还都保留了原出处《现代快报》和作者“天朗”。但是现代快报的天朗大记者从哪里搞来的这个新闻呢？研究一下报道中登出来的照片：</p>
		<p>
				<img src="http://img1.qq.com/news/pics/2897/2897096.jpg" />
		</p>
		<p>注意下面这句话：“Chai Ming Hui was the eldest in her family”</p>
		<p>google一下： <a href="http://www.google.cn/search?hl=zh-CN&amp;q=Chai+Ming+Hui+was+the+eldest+in+her+family&amp;meta">http://www.google.cn/search?hl=zh-CN&amp;q=Chai+Ming+Hui+was+the+eldest+in+her+family&amp;meta</a>=</p>
		<p>这段报道从来没有在网上出现过，也不知道天朗大记者是从哪年的旧报纸上扫描下来的？反正不管有没有可信度，只要人家敢说，大伙就敢转。</p>
		<p>
				<a href="http://hsb.huash.com/2007-01/03/content_6017274.htm">http://hsb.huash.com/2007-01/03/content_6017274.htm</a> 这个假新闻，也是天朗大记者炮制的，明明说汤勺在食管里面，居然在伪造X光片的时候吧它捅到心脏附近去了，一笑。</p>
		<p>
				<a href="http://hsb.huash.com/gb/newsdzb/2007-01/09/content_6027777.htm">http://hsb.huash.com/gb/newsdzb/2007-01/09/content_6027777.htm</a> 这也是天朗大记者的杰作。居然说霍金想做轮椅上天做无重力飞行，没有重力了不知道轮椅怎么运动，原地疯狂旋转？</p>
		<p>
				<a href="http://news.qq.com/a/20070107/000103.htm">http://news.qq.com/a/20070107/000103.htm</a> 在这个假新闻上面也是天朗记者炮制的，google一下“248.2416”这个金额就会发现，这则英国的新闻没有任何相关的英文报道，根本不是翻译过来的，是原创的。<br /> </p>
<img src ="http://www.blogjava.net/emu/aggbug/95194.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 01:13 <a href="http://www.blogjava.net/emu/archive/2007/01/22/95194.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>