﻿<?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-当人们总想把自己变成狼时，人性莫非只好让狗替我们珍惜？</title><link>http://www.blogjava.net/HippyChen/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 11:19:37 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 11:19:37 GMT</pubDate><ttl>60</ttl><item><title>转换到xhtml的规则（摘自《网站重构》） </title><link>http://www.blogjava.net/HippyChen/archive/2006/05/26/48307.html</link><dc:creator>晨钟暮鼓</dc:creator><author>晨钟暮鼓</author><pubDate>Fri, 26 May 2006 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/HippyChen/archive/2006/05/26/48307.html</guid><wfw:comment>http://www.blogjava.net/HippyChen/comments/48307.html</wfw:comment><comments>http://www.blogjava.net/HippyChen/archive/2006/05/26/48307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/HippyChen/comments/commentRss/48307.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/HippyChen/services/trackbacks/48307.html</trackback:ping><description><![CDATA[
		<p>
				<strong>一 用正确的DOCTYPE和Namespace</strong>
		</p>
		<p>xhtml1提供了DTD的三种选择和三种可能的声明</p>
		<p>过渡的(Transitional)最宽松的DTD。</p>
		<p>严格的(Strict) 不能使用表现层的标记和属性</p>
		<p>框架的(Frameset) 用在那些使用<frameset>元素的文档上的。</frameset></p>
		<p>DOCTYPE声明在所有代码之前，紧随DOCTYPE声明之后是一个xhtml namespace声明，放在元素中</p>
		<p>使用DOCTYPE和名字空间后，你的xhtml Transitional 1.0页面的开头看起来就像这样：</p>
		<p>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&gt;<br />http://www.w3.org/1999/xhtml xml:lang="en" lang="en"&gt;</p>
		<p>
				<strong>二 声明你的内容类型</strong>
		</p>
		<p>在标签中插入一个Content-Type元素来置顶编码语言。</p>
		<p>例如使用ISO-8859-1编码，可以这样：</p>
		<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;&lt;/meta&gt;</p>
		<p>/P&gt;
</p>
		<p>
				<strong>三 用小写字母书写所有的标签</strong>
		</p>
		<p>元素的属性名必须小写，属性值和内容则不是必须的。另外需要注意的是：Class和ID值对大小写敏感。</p>
		<p>
				<strong>四 给所有属性值加引号</strong>
		</p>
		<p>如果需要在属性值里使用双引号，可以用&amp;quot;</p>
		<p>如果需要在属性值里使用单引号，可以用&amp;apos;</p>
		<p>
				<strong>五 所有属性都需要值</strong>
		</p>
		<p>例如:</p>
		<p>&lt;input type="checkbox" name="shirt" value="medium" checked&gt;</p>
		<p>要改写成下面的代码</p>
		<p>&lt;input type="checkbox" name="shirt" value="medium" checked="checked"&gt;</p>
		<p>
				<strong>六 关闭所有的标签</strong>
		</p>
		<p>例如</p>
		<p>
		</p>
		<p>&lt;p&gt;Hello</p>
		<p>&lt;p&gt;world</p>
		<p>要修改成下面的样子：</p>
		<p>
		</p>
		<p>&lt;p&gt;Hello&lt;/p&gt;</p>
		<p>&lt;p&gt;world&lt;/p&gt;</p>
		<p>
		</p>
		<p>
		</p>
		<p>
				<strong>七 空标签也要关闭</strong>
		</p>
		<p>例如&lt;br&gt; 要修改成&lt;br /&gt;</p>
		<p>
				<strong>八 不要在注视内容中使用"--"</strong>
		</p>
		<p>“--”只能发生在xhtml注视的开头和结束。</p>
		<p>
		</p>
		<p>这个注释形式在xhtml下是无效的。可以用等号或者其它你喜欢的符号替换注释内部的虚线</p>
		<p>
				<strong>九 把所有&lt;和&amp;符号编码</strong>
		</p>
		<p>任何&lt;，如果不是标签的一部分，都必须被编码成&amp;lt;</p>
		<p>任何&amp;,如果不是实体的一部分，都必须被编码为&amp;amp;</p>
		<p>同时推荐用&amp;gt来编码&gt;</p>
		<p>最后,免费工具<a href="http://www.w3.org/People/Raggett/tidy/"><font color="#5a7594">HTML Tidy</font></a>能够帮助你迅速的将HTML转换到有效的xhtml。</p>
<img src ="http://www.blogjava.net/HippyChen/aggbug/48307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/HippyChen/" target="_blank">晨钟暮鼓</a> 2006-05-26 13:26 <a href="http://www.blogjava.net/HippyChen/archive/2006/05/26/48307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript压缩</title><link>http://www.blogjava.net/HippyChen/archive/2006/05/26/48305.html</link><dc:creator>晨钟暮鼓</dc:creator><author>晨钟暮鼓</author><pubDate>Fri, 26 May 2006 05:12:00 GMT</pubDate><guid>http://www.blogjava.net/HippyChen/archive/2006/05/26/48305.html</guid><wfw:comment>http://www.blogjava.net/HippyChen/comments/48305.html</wfw:comment><comments>http://www.blogjava.net/HippyChen/archive/2006/05/26/48305.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/HippyChen/comments/commentRss/48305.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/HippyChen/services/trackbacks/48305.html</trackback:ping><description><![CDATA[
		<p>Ajax除了自己要写js代码外，也免不了要使用其它第三方库。当你在为提高了用户体验，做出了很喧的效果而欣喜的时候，是否想过优化一下JS的效率。</p>
		<p>js的速度分为两种，下载速度和执行速度。今天就先来说说下载速度。要想js的下载速度快，就需要尽量减小js文件的大小。这里我们可以使用一个工具ESC(ECMAScript cruncher)来帮我们完成这个工作，不过这个工具只能在Windows下使用。</p>
		<p>到<a href="http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js">http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js</a>下载ESC.zip,解压后看看它的帮助文档。很简单。</p>
		<p>压缩级别分为5种，从0到4</p>
		<p>Level 0 :: No compression</p>
		<p>Level 1 :: Comment removal</p>
		<p>Level 2 :: Whitespace removal</p>
		<p>Level 3 :: Newline removal</p>
		<p>Level 4 :: Variable substitution</p>
		<p>在WINDOWS命令行下执行</p>
		<p>
				<strong>cscript ESC.wsf -ow menu2.js menu.js</strong>将会把menu.js按照级别2来压缩（默认级别为2）为menu2.js</p>
		<p>
				<strong>cscript ESC.wsf -l 3 -ow menu3.js menu.js</strong>将会把menu.js按照级别3来压缩为menu3.js</p>
		<p>需要注意的是，级别4会把变量名修改，如果你的js中用到了全局变量或者类的话，就不能使用该级别了，否则其它使用你的js的文件可能会无法正常运行。</p>
		<p>试了一下，把yui的menu.js压缩了一下，对应的级别和压缩率分别如下：</p>
		<p>级别1:压缩率44.41%</p>
		<p>级别2:压缩率62.82%</p>
		<p>级别1:压缩率64.93%</p>
		<p>原来130多K的文件压缩后也就40多K，看来还是挺有用处的。</p>
		<p>
		</p>
		<p>另外还有一个小工具<a href="http://www.crockford.com/javascript/jsmin.html">jsmin</a>也可以压缩，不过没有ESC的level选项，看了一下好像压缩效果类似于ESC的level3.济南大学的一些老师写了个jsmin的图形界面程序<a href="http://www.coolcode.cn/?p=162">JsMinGUI</a>,使用起来更加方便。：－）</p>
		<p>Dojo项目组也提供了一个工具,shrinksafe可以通过<a href="http://alex.dojotoolkit.org/shrinksafe/">http://alex.dojotoolkit.org/shrinksafe/</a>在线的上传要压缩的文件，处理完毕后可以保存到本地，另外shrinksafe还提供了一个本地运行的版本，需要jre1.4的支持。</p>
		<p>ps:对于一些压缩的代码，在阅读时可以用<a href="http://www.jcay.com/javascript-code-improver.html">JavaScript Code Improver</a>来进行格式化。看看它主页上的一个例子：</p>
		<p>原来的代码：</p>
		<p>
				<font face="Courier" color="#2270bb">&lt;script language="JavaScript"&gt;var i=0,s="",k=0;function foo(){for(j=0;j&lt;10;j++){for(i=0;i&lt;10;i++){s="string1";k=Math.floor(Math.random()*10);}for(i=20;i&gt;9;i--){s="string2";k=i;}}}&lt;/script&gt;</font>
		</p>
		<p>格式化后：</p>
		<p>
				<font face="Courier" color="#2270bb">&lt;script language="JavaScript"&gt;<br />var i = 0, s = "", k = 0;<br />function foo()<br />{<br />for(j = 0; j &lt; 10; j++) <br />{<br />for(i = 0; i &lt; 10; i++) <br />{<br />s = "string1";<br />k = Math.floor( Math.random()*10 );<br />}<br />for(i = 20; i &gt; 9; i--) <br />{<br />s = "string2";<br />k = i;<br />}<br />}<br />}<br />&lt;/script&gt;</font>
		</p>
<img src ="http://www.blogjava.net/HippyChen/aggbug/48305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/HippyChen/" target="_blank">晨钟暮鼓</a> 2006-05-26 13:12 <a href="http://www.blogjava.net/HippyChen/archive/2006/05/26/48305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript的调试工具（fvlogger）</title><link>http://www.blogjava.net/HippyChen/archive/2005/11/30/21955.html</link><dc:creator>晨钟暮鼓</dc:creator><author>晨钟暮鼓</author><pubDate>Wed, 30 Nov 2005 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/HippyChen/archive/2005/11/30/21955.html</guid><wfw:comment>http://www.blogjava.net/HippyChen/comments/21955.html</wfw:comment><comments>http://www.blogjava.net/HippyChen/archive/2005/11/30/21955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/HippyChen/comments/commentRss/21955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/HippyChen/services/trackbacks/21955.html</trackback:ping><description><![CDATA[<P>Javascript的调试一般都采用alert函数来打印出感兴趣的信息，不过这种方法档调试的信息比较多的时候，就显得非常麻烦。也可以采用一些专门的Javascript调试器，IE和Firefox都有，也没有具体用过，不太做太多评价，感觉这样的调试有点杀鸡用牛刀的味道。而且通用性不强，要是换了浏览器又得重新学习一种调试工具。 </P>
<P>fvlogger(<A href="http://alistapart.textdrive.com/articles/jslogging#fvlogger"><FONT color=#5a7594>http://alistapart.textdrive.com/articles/jslogging#fvlogger)</FONT></A>是一个模仿log4j的Javascript调试库，采用将所有的调试信息写入到DIV中，再根据不同的分类（debug,info,warn,error,fatal）来查看。</P>
<P>使用起来非常简单，它的网站上就有例子。下面是我学习的时候写的一个例子：</P>
<P>
<DIV id=fvlogger>&lt;pre&gt;</DIV>
<DIV>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"<BR>"<A href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><FONT color=#5a7594>http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</FONT></A>"&gt;<BR>&lt;html xmlns="<A href="http://www.w3.org/1999/xhtml"><FONT color=#5a7594>http://www.w3.org/1999/xhtml</FONT></A>" lang="en"&gt;<BR>&lt;head&gt;</DIV>
<DIV>&lt;title&gt;JSLog测试&lt;/title&gt;</DIV>
<DIV>&lt;script type="text/javascript" src="fvlogger/logger.js"&gt;&lt;/script&gt;<BR>&lt;link rel="stylesheet" type="text/css" href="fvlogger/logger.css" /&gt;</DIV>
<DIV>&lt;/head&gt;</DIV>
<DIV>&lt;body&gt;</DIV>
<DIV>&lt;input type="button" name="toggleBtn" value="显示调试信息" onclick="toggleDebugConsole();return false;"&gt;<BR>&lt;div id="fvlogger" style="display:none"&gt;<BR>&lt;dl&gt;<BR>&lt;dt&gt;fvlogger&lt;/dt&gt;<BR>&lt;dd class="all"&gt;&lt;a href="#fvlogger" onclick="showAll();" title="show all" id="all"&gt;all&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd class="debug"&gt;&lt;a href="#fvlogger" onclick="showDebug();" title="show debug" id="showDebug"&gt;debug&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd class="info"&gt;&lt;a href="#fvlogger" onclick="showInfo();" title="show info" id="showInfo"&gt;info&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd class="warn"&gt;&lt;a href="#fvlogger" onclick="showWarn();" title="show warnings" id="showWarn"&gt;warn&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd class="error"&gt;&lt;a href="#fvlogger" onclick="showError();" title="show errors" id="showError"&gt;error&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd class="fatal"&gt;&lt;a href="#fvlogger" onclick="showFatal();" title="show fatals" id="showFatal"&gt;fatal&lt;/a&gt;&lt;/dd&gt;<BR>&lt;dd&gt;&lt;a href="#fvlogger" onclick="eraseLog(true);" title="erase"&gt;erase&lt;/a&gt;&lt;/dd&gt;<BR>&lt;/dl&gt;<BR>&lt;/div&gt;</DIV>
<DIV>&lt;script language="javascript"&gt;<BR>var showdebug=false;<BR>function toggleDebugConsole(){<BR>if (showdebug==false){<BR>showdebug=true; <BR>toggleBtn.value="隐藏调试信息";<BR>document.getElementById("fvlogger").style.display="block";<BR>}else {<BR>showdebug=false;<BR>toggleBtn.value="显示调试信息";<BR>document.getElementById("fvlogger").style.display="none";<BR>}<BR>}<BR>&lt;/script&gt;</DIV>
<DIV>&lt;script language="javascript"&gt;<BR>debug("调试信息");<BR>info("一般信息");<BR>warn("警告信息");<BR>error("错误信息");<BR>//fatal("严重错误信息");<BR>&lt;/script&gt;<BR>&lt;/body&gt;<BR>&lt;/html&gt;</DIV>
<DIV>&lt;/pre&gt;</DIV>
<P>
<DIV id=fvlogger></DIV>
<P>
<P>
<SCRIPT language=javascript></SCRIPT>
</P>
<P>
<SCRIPT language=javascript></SCRIPT>
</P>
<P>
<P>下载fvlogger,将用到的js,css,图片（logger.css,logger.js,*.png）都放到fvlogger子目录下就可以了。</P><img src ="http://www.blogjava.net/HippyChen/aggbug/21955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/HippyChen/" target="_blank">晨钟暮鼓</a> 2005-11-30 14:07 <a href="http://www.blogjava.net/HippyChen/archive/2005/11/30/21955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>