﻿<?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>C++博客-&lt;p style="margin:0px;font-size:3em;color:#000;font-family:楷体_GB2312"&gt;张沈鹏,在路上...(C++版)&lt;/p&gt;-随笔分类-网页技术</title><link>http://www.cppblog.com/zuroc/category/340.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 14:48:29 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 14:48:29 GMT</pubDate><ttl>60</ttl><item><title>javascript封装键盘事件</title><link>http://www.cppblog.com/zuroc/archive/2006/12/30/17016.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Fri, 29 Dec 2006 16:34:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/12/30/17016.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/17016.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/12/30/17016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/17016.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/17016.html</trackback:ping><description><![CDATA[封装键盘事件 <a name="封装键盘事件"></a><a href="http://ajaxcn.org/space/start/2006-12-30/2#%E5%B0%81%E8%A3%85%E9%94%AE%E7%9B%98%E4%BA%8B%E4%BB%B6" title="链接到封装键盘事件"><img src="http://ajaxcn.org/theme/images/Icon-Permalink.png" alt="" border="0"></a></h3><p class="paragraph">//封装键盘事件</p><p class="paragraph">//作者:张沈鹏 <img src="http://ajaxcn.org/theme/images/Icon-Extlink.png" alt="&gt;&gt;" border="0"><span class="nobr"><a href="http://www.cppblog.com/zuroc/">http://www.cppblog.com/zuroc/</a></span></p><p class="paragraph">//版本:1.0_06-12-30</p><p class="paragraph">/*</p><p class="paragraph">用法演示:</p><p class="paragraph">var key= new KeyCode(event);</p><p class="paragraph">if(key.enter||key.esc)...</p><p class="paragraph">*/</p><p class="paragraph">//代码</p><p class="paragraph">function KeyCode(event){</p><p class="paragraph">    if(!event)event=window.event;</p><p class="paragraph">    keyCode = event.keyCode;</p><p class="paragraph">    this.del=this.enter=this.esc=this.stepY=this.char=false;</p><p class="paragraph">switch(keyCode) {</p><p class="paragraph">//for space</p><p class="paragraph">//for backspace (8) and delete (46)</p><p class="paragraph">case 8:case 46:this.del=true;return;</p><p class="paragraph">case 13:this.enter=true;return;</p><p class="paragraph">case 27:this.esc=true;return;</p><p class="paragraph">case 32:this.char=true;return;</p><p class="paragraph">case 38:this.stepY=-1;return;</p><p class="paragraph">case 40:this.stepY=1;return;
}</p><p class="paragraph">if (!( (keyCode &lt; 46) || (keyCode &gt;= 112 &amp;&amp; keyCode &lt;= 123) 
))</p><p class="paragraph">{this.char=true;}</p><p class="paragraph">}<img src ="http://www.cppblog.com/zuroc/aggbug/17016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-12-30 00:34 <a href="http://www.cppblog.com/zuroc/archive/2006/12/30/17016.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>压缩javascript</title><link>http://www.cppblog.com/zuroc/archive/2006/12/29/16992.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Fri, 29 Dec 2006 11:25:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/12/29/16992.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/16992.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/12/29/16992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/16992.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/16992.html</trackback:ping><description><![CDATA[压缩<br/><br/>
1.合并去注释<br/>
JsMinGUI.exe<br/><br/>

2.变量替换<br/>
ESC(好像有问题),<br>
如果用jasob要注意先用ANSI编码保存,处理后再转换为UTF8,需要手工设置要替换的东西 
<br/><br/>
3.真正压缩<br/>
http://javascriptcompressor.com/<br/><br/>

反压缩<br/><br/>
1.http://javascriptcompressor.com/<br/><br/>

2.JavaScript Code Improver<br/><br/><img src ="http://www.cppblog.com/zuroc/aggbug/16992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-12-29 19:25 <a href="http://www.cppblog.com/zuroc/archive/2006/12/29/16992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSON-RPC详述</title><link>http://www.cppblog.com/zuroc/archive/2006/11/26/15682.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sun, 26 Nov 2006 14:58:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/11/26/15682.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/15682.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/11/26/15682.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/15682.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/15682.html</trackback:ping><description><![CDATA[<br/>JSON-RPC详述
<br/>
<br/>翻译者:张沈鹏&nbsp;zsp007@gmail.com
<br/>
<br/>本文将告诉开发者们如何实现JSON协议.
<br/>
<br/>(现在正在审批JSON-RPC&nbsp;1.1草案.&nbsp;)
<br/>
<br/>=&nbsp;概览&nbsp;=
<br/>
<br/>JSON-RPC是一个轻量级的远程调用协议.它的设计理念是:简单!
<br/>
<br/>数据通讯由两部分组成.在一次连接的生命期内,一端将发出一个请求来调用另一端的函数.另一端将回应该请求,除非这个请求是一个公告.
<br/>
<br/>==&nbsp;请求(函数调用)&nbsp;==
<br/>
<br/>通过向一个远程服务器发送一个请求来调用一个远程函数.该请求是一个用JSON进行了编码(序列化)的对象.
<br/>
<br/>它有3个部分:
<br/>&nbsp;*&nbsp;函数名
<br/>&nbsp;*&nbsp;参数数组
<br/>&nbsp;*&nbsp;标识码&nbsp;-&nbsp;请求的标识码是用来匹配它所对应的回复.
<br/>
<br/>==&nbsp;回复&nbsp;==
<br/>
<br/>当调用请求结束时,服务器将回复该请求.回复同样是用JSON进行了编码的对象.
<br/>
<br/>它有3个部分:
<br/>
<br/>&nbsp;*&nbsp;返回值&nbsp;-&nbsp;如果发生调用错误它的值可能为空&nbsp;
<br/>&nbsp;*&nbsp;错误信息&nbsp;-&nbsp;如果没错误,它为空
<br/>&nbsp;*&nbsp;标识码&nbsp;-&nbsp;和请求的标识码一致
<br/>&nbsp;
<br/>==&nbsp;公告&nbsp;==
<br/>
<br/>公告是一种没有回复的请求.同样为用JSON编码对象.
<br/>
<br/>它的标识码为空,其他和普通请求一致.&nbsp;
<br/>
<br/>=&nbsp;JSON-RPC&nbsp;与传输方式无关的协议&nbsp;=
<br/>本协议不限制你的使用的传输协议,不过推荐使用TCP/IP端口流(socket&nbsp;streams).被编码了的请求和回复通过这种字节流传输.
<br/>
<br/>请求和回复随时可以发送给另一端.公告无需回复,仅当有请求时才发送回复.
<br/>
<br/>结束连接回导致未答复的端的异常.无效的请求和回复讲关闭连接.
<br/>
<br/>==&nbsp;HTTP中的JSON-RPC&nbsp;==
<br/>进行一些限制,便可以通过HTTP请求来进行通讯.
<br/>
<br/>Http客户端和Http服务器端间可能有多个Http请求.一个客户端可以通过一次包含多个JSON对象的HTTP&nbsp;POST进行多个请求,公告,回复.
<br/>
<br/>服务器端必须回复所有的请求,同时可能发出新的请求或通知.客户端也要再一次通过HTTP&nbsp;POST响应.&nbsp;
<br/>
<br/>为了和服务器端再一次建立连接,客户端可能需要主动发送一次空的HTTP&nbsp;POST.
<br/>
<br/>无效的请求会导致连接的关闭.无效的回复所有没回复的客户端的异常.关闭连接会导致所有没回复的客户端的异常.
<br/>
<br/>=&nbsp;JSON&nbsp;Class演示&nbsp;=
<br/>
<br/>JSON中只定义了简单的数据类型.为了弥补这些不足,JSON引进了对象的属性的定义.
<br/>
<br/>{&quot;__jsonclass__&quot;:[&quot;constructor&quot;,&nbsp;[param1,...]],&nbsp;&quot;prop1&quot;:&nbsp;
<br/>...}
<br/>
<br/>这个对象通过constructor的参数数组初始化,当初始化完成后,会应用它的属性(prop1,&nbsp;...).&nbsp;
<br/>
<br/>=&nbsp;通讯演示&nbsp;=
<br/>
<br/>-->&nbsp;表示发送给服务器端的信息
<br/>&lt;--&nbsp;服务器端的回应
<br/>
<br/>service.echo(&quot;Hello&nbsp;JSON-RPC&quot;)&nbsp;
<br/>-->&nbsp;{&nbsp;&quot;method&quot;:&nbsp;&quot;echo&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;Hello&nbsp;JSON-RPC&quot;],&nbsp;&quot;id&quot;:&nbsp;1}
<br/>&lt;--&nbsp;{&nbsp;&quot;result&quot;:&nbsp;&quot;Hello&nbsp;JSON-RPC&quot;,&nbsp;&quot;error&quot;:&nbsp;null,&nbsp;&quot;id&quot;:&nbsp;1}
<br/>
<br/>多重请求/回应
<br/>
<br/>本例展示了一次通讯的部分内容,聊天的服务器发送给每个客户端一个公告.客户端通过请求向服务器端发送消息,通过服务器回复表示消息是否送到.
<br/>...
<br/>
<br/>-->&nbsp;{&quot;method&quot;:&nbsp;&quot;postMessage&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;Hello&nbsp;all!&quot;],&nbsp;&quot;id&quot;:&nbsp;99}
<br/>
<br/>&lt;--&nbsp;{&quot;result&quot;:&nbsp;1,&nbsp;&quot;error&quot;:&nbsp;null,&nbsp;&quot;id&quot;:&nbsp;99}
<br/>
<br/>&lt;--&nbsp;{&quot;method&quot;:&nbsp;&quot;handleMessage&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;user1&quot;,&nbsp;&quot;we&nbsp;were&nbsp;just&nbsp;talking&quot;],&nbsp;&quot;id&quot;:&nbsp;null}
<br/>
<br/>&lt;--&nbsp;{&quot;method&quot;:&nbsp;&quot;handleMessage&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;user3&quot;,&nbsp;&quot;sorry,&nbsp;gotta&nbsp;go&nbsp;now,&nbsp;ttyl&quot;],&nbsp;&quot;id&quot;:&nbsp;null}
<br/>
<br/>-->&nbsp;{&quot;method&quot;:&nbsp;&quot;postMessage&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;I&nbsp;have&nbsp;a&nbsp;question:&quot;],&nbsp;&quot;id&quot;:&nbsp;101}
<br/>
<br/>&lt;--&nbsp;{&quot;method&quot;:&nbsp;&quot;userLeft&quot;,&nbsp;&quot;params&quot;:&nbsp;[&quot;user3&quot;],&nbsp;&quot;id&quot;:&nbsp;null}
<br/>
<br/>&lt;--&nbsp;{&quot;result&quot;:&nbsp;1,&nbsp;&quot;error&quot;:&nbsp;null,&nbsp;&quot;id&quot;:&nbsp;101}
<br/>
<br/>...
<img src ="http://www.cppblog.com/zuroc/aggbug/15682.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-11-26 22:58 <a href="http://www.cppblog.com/zuroc/archive/2006/11/26/15682.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不用上网,单机也可以用wiki写文档</title><link>http://www.cppblog.com/zuroc/archive/2006/11/10/14951.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Fri, 10 Nov 2006 03:21:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/11/10/14951.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/14951.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/11/10/14951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/14951.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/14951.html</trackback:ping><description><![CDATA[不用上网,单机也可以用wiki写文档
<br><br>
从
<br><br>
http://prdownloads.sourceforge.net/moin/
<br><br>
下载moin-desktop-1.5.5a-1
<br><br>
然后,用python运行它就可以在本机运行了,提供一个文章模板
<br><br>
#language:zh<br>
#pragma section-numbers on<br>
[[TableOfContents]]<br>

= 一级标题 =<br>
== 二级标题 ==<br>
<br><br>
它还可以把文档转换为Docbook格式,配合以前我我提供的Docbook Css可以生成很漂亮的文档
<br><br><img src ="http://www.cppblog.com/zuroc/aggbug/14951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-11-10 11:21 <a href="http://www.cppblog.com/zuroc/archive/2006/11/10/14951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Docbook美化Css完美版</title><link>http://www.cppblog.com/zuroc/archive/2006/10/24/14086.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Tue, 24 Oct 2006 05:51:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/10/24/14086.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/14086.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/10/24/14086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/14086.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/14086.html</trackback:ping><description><![CDATA[Docbook美化Css完美版,Css就在Css文件夹中<br /><br /><a href="http://wiki.woodpecker.org.cn/moin/AllAboutText?action=AttachFile&amp;do=get&amp;target=Javascript.rar" target="blank">点击下载</a><a><br /><br />Docbook用来生成文档不错,不过写起来太烦.<br /><br />幸好http://wiki.woodpecker.org.cn/的wiki可以把wiki文档转换为Docbook的代码,而写Wiki格式的文档就舒服多了.<br /><br />我做了这个Css是为了让Docbook生成的文档读起来舒服一点<br />大家可以配合CDBE(</a>Chinese DocBook Environment（CDBE）<a>)使用,写文档也很享受:)<br />http://manual.vingel.com/docs/data/20051013100319/index.html<br /></a><img src ="http://www.cppblog.com/zuroc/aggbug/14086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-10-24 13:51 <a href="http://www.cppblog.com/zuroc/archive/2006/10/24/14086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现Gmail中的星标</title><link>http://www.cppblog.com/zuroc/archive/2006/01/11/2566.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Wed, 11 Jan 2006 06:05:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/01/11/2566.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/2566.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/01/11/2566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/2566.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/2566.html</trackback:ping><description><![CDATA[网页中可以用，将来也可以用的XUL的程序中去<BR>见<A href="http://free5.ys168.com/?ak747"><BR>http://free5.ys168.com/?ak747</A><BR>下的XUL的文件夹<BR>将来可以在XUL程序中使用，下一步的改进计划是成为类似Windows Media Player五个星标。<img src ="http://www.cppblog.com/zuroc/aggbug/2566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-01-11 14:05 <a href="http://www.cppblog.com/zuroc/archive/2006/01/11/2566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转载]Javascript的IE和Firefox兼容性汇编[zt] </title><link>http://www.cppblog.com/zuroc/archive/2005/12/31/2332.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sat, 31 Dec 2005 11:48:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2005/12/31/2332.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/2332.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2005/12/31/2332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/2332.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/2332.html</trackback:ping><description><![CDATA[<DIV class=postTitle>原文:<A href="http://blog.csdn.net/arcow/archive/2005/12/29/565591.aspx"><BR>http://blog.csdn.net/arcow/archive/2005/12/29/565591.aspx</A><BR>以下以 IE 代替 Internet Explorer，以 MF 代替 Mozzila Firefox</DIV>
<DIV class=postText>
<P>1. document.form.item 问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现有代码中存在许多 document.formName.item("itemName") 这样的语句，不能在 MF 下运行<BR>&nbsp;&nbsp;&nbsp; (2)解决方法：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 改用 document.formName.elements["elementName"]<BR>&nbsp;&nbsp;&nbsp; (3)其它<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参见 2</P>
<P>2. 集合类对象问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<BR>&nbsp;&nbsp;&nbsp; (2)解决方法：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 改用 [] 作为下标运算。如：document.forms("formName") 改为 document.forms["formName"]。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 又如：document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]<BR>&nbsp;&nbsp;&nbsp; (3)其它</P>
<P>3. window.event<BR>&nbsp;&nbsp;&nbsp; (1)现有问题：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用 window.event 无法在 MF 上运行<BR>&nbsp;&nbsp;&nbsp; (2)解决方法：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原代码(可在IE中运行)：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script language="javascript"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function gotoSubmit() {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(window.event);&nbsp;&nbsp;&nbsp; // use window.event<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/script&gt;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新代码(可在IE和MF中运行)：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;script language="javascript"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function gotoSubmit(evt) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; evt = evt ? evt : (window.event ? window.event : null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(evt);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // use evt<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/script&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老代码兼容。</P>
<P>4. HTML 对象的 id 作为对象名的问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<BR>&nbsp;&nbsp;&nbsp; (2)解决方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用 getElementById("idName") 代替 idName 作为对象变量使用。</P>
<P>5. 用idName字符串取得对象的问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不能。<BR>&nbsp;&nbsp;&nbsp; (2)解决方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用 getElementById(idName) 代替 eval(idName)。</P>
<P>6. 变量名与某 HTML 对象 id 相同的问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象 id 相同的变量名，IE 中不能。<BR>&nbsp;&nbsp;&nbsp; (2)解决方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<BR>&nbsp;&nbsp;&nbsp; (3)其它<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参见 问题4</P>
<P>7. event.x 与 event.y 问题<BR>&nbsp;&nbsp;&nbsp; (1)现有问题<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在IE 中，event 对象有 x, y 属性，MF中没有。<BR>&nbsp;&nbsp;&nbsp; (2)解决方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在MF中，与event.x 等效的是 event.pageX。但event.pageX IE中没有。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 故采用 event.clientX 代替 event.x。在IE 中也有这个变量。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果要完全一样，可以稍麻烦些：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mX = event.x ? event.x : event.pageX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后用 mX 代替 event.x<BR>&nbsp;&nbsp;&nbsp; (3)其它<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。</P>
<P><BR>8. 关于frame<BR>&nbsp;&nbsp; (1)现有问题<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 IE中 可以用window.testFrame取得该frame，mf中不行<BR>&nbsp;&nbsp; (2)解决方法<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在frame的使用方面mf和ie的最主要的区别是：<BR>如果在frame标签中书写了以下属性：<BR>&lt;frame src="xx.htm" id="frameId" name="frameName" /&gt;<BR>那么ie可以通过id或者name访问这个frame对应的window对象<BR>而mf只可以通过name来访问这个frame对应的window对象<BR>例如如果上述frame标签写在最上层的window里面的htm里面，那么可以这样访问<BR>ie： window.top.frameId或者window.top.frameName来访问这个window对象<BR>mf： 只能这样window.top.frameName来访问这个window对象</P>
<P>另外，在mf和ie中都可以使用window.top.document.getElementById("frameId")来访问frame标签<BR>并且可以通过window.top.document.getElementById("testFrame").src = 'xx.htm'来切换frame的内容<BR>也都可以通过window.top.frameName.location = 'xx.htm'来切换frame的内容<BR>关于frame和window的描述可以参见bbs的‘window与frame’文章<BR>以及/test/js/test_frame/目录下面的测试<BR>----adun 2004.12.09修改</P>
<P>9. 在mf中，自己定义的属性必须getAttribute()取得<BR>10.在mf中没有&nbsp; parentElement parement.children&nbsp; 而用<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; parentNode parentNode.childNodes<BR>&nbsp;&nbsp; childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白文本节点。<BR>&nbsp; 一般可以通过node.getElementsByTagName()来回避这个问题。<BR>&nbsp;&nbsp; 当html中节点缺失时，IE和MF对parentNode的解释不同，例如<BR>&nbsp;&nbsp; &lt;form&gt;<BR>&nbsp;&nbsp; &lt;table&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input/&gt;<BR>&nbsp;&nbsp; &lt;/table&gt;<BR>&nbsp;&nbsp; &lt;/form&gt;<BR>&nbsp;&nbsp; MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点</P>
<P>&nbsp; MF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)</P>
<P>11.const 问题<BR>&nbsp; (1)现有问题:<BR>&nbsp;&nbsp;&nbsp;&nbsp; 在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<BR>&nbsp; (2)解决方法:<BR>&nbsp;&nbsp;&nbsp;&nbsp; 不使用 const ，以 var 代替。</P>
<P>12. body 对象<BR>&nbsp;&nbsp; MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入之后才存在</P>
<P>13. url encoding<BR>在js中如果书写url就直接写&amp;不要写&amp;amp;例如var url = 'xx.jsp?objectName=xx&amp;amp;objectEvent=xxx';<BR>frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<BR>一般会服务器报错参数没有找到<BR>当然如果是在tpl中例外，因为tpl中符合xml规范，要求&amp;书写为&amp;amp;<BR>一般MF无法识别js中的&amp;amp;</P>
<P><BR>14. nodeName 和 tagName 问题<BR>&nbsp; (1)现有问题：<BR>&nbsp;&nbsp;&nbsp;&nbsp; 在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，nodeName 的使用好象<BR>&nbsp;&nbsp;&nbsp;&nbsp; 有问题（具体情况没有测试，但我的IE已经死了好几次）。<BR>&nbsp; (2)解决方法：<BR>&nbsp;&nbsp;&nbsp;&nbsp; 使用 tagName，但应检测其是否为空。</P>
<P>15. 元素属性<BR>&nbsp;&nbsp; IE下 input.type属性为只读，但是MF下可以修改</P>
<P><BR>16. document.getElementsByName() 和 document.all[name] 的问题<BR>&nbsp; (1)现有问题：<BR>&nbsp;&nbsp;&nbsp;&nbsp; 在 IE 中，getElementsByName()、document.all[name] 均不能用来取得 div 元素（是否还有其它不能取的元素还不知道）。<BR>&nbsp;<BR></P><BR><BR>
<P id=TBPingURL>Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=565591</P></DIV><img src ="http://www.cppblog.com/zuroc/aggbug/2332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2005-12-31 19:48 <a href="http://www.cppblog.com/zuroc/archive/2005/12/31/2332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>