1.网页背景色的设置
犯错机率:很大
普遍性:较广
犯错可能性:懒/不知道
约2年前我曾发现21cn上出现过一次没有设置背景色的情况,当时我用Email通知了他们,自此之后这个问题我从没犯过。
绝大部分人的窗口背景颜色都是白色,但如果象我这样个性的人,就会把Windows窗口的背景颜色改成灰色或其他色,这样一来,如果你没有设置网页的背景颜色的话,你以为正常的网页在我的电脑上看起来会是一团糟。
2.Align center(自动居中)的滥用
犯错机率:非常大
普遍性:非常广
犯错可能性:以为方便/以为好用
工作中,修改、维护别人的网页是家常便饭,发现不少人有一个陋习:
在表格中的文字或图片,你是这样来令它居中、靠左或靠右过?
<div align="center">大家好啊!!</div>
<div align="center"><img src="xx.gif"></div>
当有些表格很多、文字很多、内容分得很细的时候,爱用这种方法(它在DW里的快捷键是Ctrl+Alt+C,FP不知道是什么)的人往往会狂用,惨了,我一碰到这样的网页就头痛,为什么要用那么多<div>来居中呢?tell me why?难道表格没有居中属性吗?为什么要加入这些垃圾代码?特别修改的时候也不能把文字或图片删除了就能自动清除
建议使用<td align="center">来居中,当需要多重定位的时候,才考虑<div align="center">,因为这个代码并不好处理,所以能用表格代替就用表格替代。
3.重复使用实现相同功能的代码、或杂七杂八的乱套代码
犯错机率:非常普遍
普遍性:非常普遍
犯错可能性:复杂多样
大家先来看一看下面的代码:
<center><p><font class="CSS_id"><font class="font11"><font color="#CCCCCC"><font color="#FFA76C" style="font-size:14px;font-family:隶书">标 题</font></font></font>
</center>你觉得这样的代码看起来感觉怎么样呢?</font></p>
我不知道读者有什么感觉,压根我一看到这样的代码就会先自我麻木十来秒,这十来秒目的是为了找一个能表达我的思想感情的词(我?你想反问我吗?sorry~~,我一般不犯,因为我做网页至少有一半以上的时间在浏览代码,代码中多了不该多的东西我一眼就能看出来。)。
看看上面的代码,使用了2个class,4个font来定义2个文本,其实这样的问题很多时候是在大家不断的修改中产生的,对代码不熟、或懒查看代码、又或不喜欢查看代码的人犯这些问题特别严重,当然,事实上别人浏览这个网页的时候,是没有任何问题的,但维护的人就…………。
这些多余的垃圾代码完全是可以省略掉的,其实上面的例子不够严重,更恐怖的我都见过。
另外还有一个问题也要提提的,就是<p>...</p>和<center>...</center>,为什么要用它们呢?tell me why~~,有甚者是这样的:
<td><div align="center" class="css_id">
<center>
<p align="center"></p>
<p align="center"><font class="css_id"><font class="font11"><font color="#CCCCCC"><font color="#FFA76C" style="font-size:14px;font-family:隶书">标 题</font></font></font>
</center></td>你觉得这样的代码看起来感觉怎么样呢?</font></p></center></div></td>
看到这样的代码我是会很无奈的(更无奈的是我经常看到,而且必须看),我来简化一下:
<td align="center" class="css_id">
<font color="#FFA76C" style="font-size:14px;font-family:隶书">标题</font>
你觉得这样的代码看起来感觉怎么样呢?</td>
是不是看起来觉得这个世界安静了很多?"标题"后面的文字完成可以定义在<td>的class里,就算不用css,再用多一个<.font>也没问题,一样很清爽。
4.表格不正确嵌套
犯错机率:一般
普遍性:普遍
犯错可能性:对这个不了解
其实这是一个街知巷闻的问题了,但还是不断有人犯,不正确的嵌套表格,可能会令到你被老总叫到办公室里臭骂一顿,会令到你以为正常的网页用ADSL开2、3分钟都开不了。
先讲第一个问题,就是在一个大表格里不断地嵌套表格,这样会令到打开网页的速度变慢(虽然说现在的IE改善了这一问题,但还是不建议这样做),另一方面维护、修改也极不方便,一般来说简单的套用是没有问题的,甚至3、4层,但是不要把所有内容都放到一个表格里去。
第二个问题就是在一个大表格里放入所有内容,而其中包括一个免费的计数器代码,嘻嘻,你猜有可能出现什么情况呢?其实也没什么大不了的,最严重的就是你的IE象死机了一样,什么都没显示。解决方法就是把计数器单独放在一个表格里,别和其他内容一起放在同一表格。
5.写代码缩进的时候,不是使用Tab而是使用空格
犯错机率:一般
普遍性:较少
犯错可能性:不知道Tab更好用
这一个问题针对js、vbs、asp、php之类,HTML不能使用Tab会写一点程序的都知道什么叫缩进,怎么样缩进?有人使用空格,有人使用Tab,如果你是使用空格的,那么从现在起,改用Tab吧。
使用空格有二大坏处:1、缩进速度慢、修改速度慢。2、增大网页体积,会影响速度。
1、表单文本输入的移动选择:在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息。其实只要加入onMouseOver="this.focus()" onFocus="this.select()" 代码到 <textarea> 中,一切就会变得简单多了,如:
<textarea name=textarea wrap=virtual rows=2 cols=22 onMouseOver="this.focus()" onFocus="this.select()">Input English..</textarea>
类似的,可以加入代码到<input>。
2、表单输入单元点击删除:本列同上则作用类似,只是使用鼠标上略有变化,需要点击而不像上则的只要鼠标覆盖。如:
<input type=text name="address" size=19 value="Enter,e-mail..."onFocus="this.value=’’">
点击输入单元后,提示信息会删除,是不是很方便。
3、表单输入单元的边框设置:更改传统的表单单元边框,会让你的主页生色不少。如:
<input type=radio name=action value=subscribe checked style="BORDER-BOTTOM: dashed 1px; BORDER-LEFT: dashed 1px; BORDER-RIGHT: dashed 1px; BORDER-TOP: dashed 1px;background-color: #FEF5C8">
其中"style=***"为左右上下和背景色设置,适用于其它单元,请读者亲自试试。
4、表单输入单元的文字设置:表单中单元的字体是可以修改的,如:
<input type=text name="address" size=19 value="Enter,e-mail..." style=font-family:"verdana";font-size:10px >
其中"style=***"为字体和字大小设置。
5、修改表单属性为弹出窗口:大多数表单激活后,会在当前页面中打开,影响正常浏览。不如修改一下,如:
<form method=POST action=url target=_blank>
其中"target=_blank"为控制在弹出窗口打开。
在HTML编辑器中,一般默认按回车总是出现<p> </p>,当然按shift+enter可以是直接加<br>,而很多人希望按回车就是<br>换行而不是分段。
一直有人问我这个问题,而我没有写代码测试就认为在onkeydown里面判断event.keyCode==13就可以判断并解决,而后来发现似乎并没有人能用这种方法解决成功。对此表示歉意!为此,仔细研究了一下,发现可以有两种解决方法,但是都不是很完美,不过已经基本可以满足需要了:
1.在初始化编辑器内容的时候,加上"<div></div>"
这样回车的时候编辑器会直接生成"<div></div>"而不会生成<p></p>,就可以只是换行而不换段了,如下所示:
<SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var L_DEFAULTHTML_TEXT="<DIV></DIV>"; var sz="" sz+="<BODY ONCONTEXTMENU="return false">"+L_DEFAULTHTML_TEXT+"</BODY>" idEditbox.document.designMode="on"//编辑模式打开 idEditbox.document.write(sz) //以下代码只是辅助方便看编辑器源代码的 idEditbox.document.attachEvent( "onkeyup" , readsource ); idEditbox.document.attachEvent( "onkeydown" , readsource );}//看源代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY onload="initeditor()"><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="查看源代码" onclick="readsource()"><BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY>
不足:
这种方法有个bug就是在编辑器中添加一些内容后,全选(ctr+A)然后删除所有内容(这样就把<div></div>也删除了),重新输入内容后回车就还是会产生<p></p>
2.直接在onkeypress里面处理
我们可以在onkeypress里面直接出来,但判断event.keyCode==13也就是是回车的时候我们直接插入<br>标签,这样无论怎么样都不会出现问题的了。以下是代码示例:
<SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var sz="" sz+="<BODY ONCONTEXTMENU="return false"></BODY>" idEditbox.document.designMode="on" idEditbox.document.write(sz) idEditbox.document.onkeypress=fnKeypress}function fnKeypress(){ //注意:如果焦点不在编辑器内该函数就不起作用了; var ev = idEditbox.event; if(ev.keyCode==13){ insertHTML("<br><!-- -->"); //不知道是我浏览器问题还是其他问题,只插入<br>标签光标不换行,必须附加点其他标签,可以最后一起删除之 return false;//这样回车就是等于失效了,不会加上讨厌的<p>标签 }}//在光标位置插入htmlfunction insertHTML(html){var sel = idEditbox.document.selection;if (sel!=null) { var rng = sel.createRange(); if (rng!=null) rng.pasteHTML(html);}}//查看代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY onload="initeditor()"><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="查看源代码" onclick="readsource()" onfocus="idEditbox.focus()"><BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY>
不足:
1).insertHTML("<br><!-- -->"); 会产生垃圾代码“<!-- -->”;
2).要保证焦点必须在编辑器中才能响应编辑器的onkeypress事件
因时间关系,本示例程序并未给出焦点不在编辑器中的处理方法



