﻿<?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-六月天-随笔分类-web开发</title><link>http://www.blogjava.net/hiswing/category/13541.html</link><description>关注java相关技术
</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 22:52:08 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 22:52:08 GMT</pubDate><ttl>60</ttl><item><title>JS的IE和Firefox兼容性汇编</title><link>http://www.blogjava.net/hiswing/archive/2006/08/27/65970.html</link><dc:creator>hiswing</dc:creator><author>hiswing</author><pubDate>Sun, 27 Aug 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/hiswing/archive/2006/08/27/65970.html</guid><wfw:comment>http://www.blogjava.net/hiswing/comments/65970.html</wfw:comment><comments>http://www.blogjava.net/hiswing/archive/2006/08/27/65970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hiswing/comments/commentRss/65970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hiswing/services/trackbacks/65970.html</trackback:ping><description><![CDATA[JS的IE和Firefox兼容性汇编(原作:hotman_x)                                     <br /><br />以下以 IE 代替 Internet Explorer，以 MF 代替 Mozzila Firefox<br /><br />1. document.form.item 问题<br />    (1)现有问题：<br />        现有代码中存在许多 document.formName.item("itemName") 这样的语句，不能在 MF 下运行<br />    (2)解决方法：<br />        改用 document.formName.elements["elementName"]<br />    (3)其它<br />        参见 2<br /><br />2. 集合类对象问题<br />    (1)现有问题：<br />        现有代码中许多集合类对象取用时使用 ()，IE 能接受，MF 不能。<br />    (2)解决方法：<br />        改用 [] 作为下标运算。如：document.forms("formName") 改为 document.forms["formName"]。<br />        又如：document.getElementsByName("inputName")(1) 改为 document.getElementsByName("inputName")[1]<br />    (3)其它<br /><br />3. window.event<br />    (1)现有问题：<br />        使用 window.event 无法在 MF 上运行<br />    (2)解决方法：<br />        MF 的 event 只能在事件发生的现场使用，此问题暂无法解决。可以这样变通：<br />        原代码(可在IE中运行)：<br />            &lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit()"/&gt;<br />            ...<br />            &lt;script language="javascript"&gt;<br />                function gotoSubmit() {<br />                    ...<br />                    alert(window.event);    // use window.event<br />                    ...<br />                }<br />            &lt;/script&gt;<br /><br />        新代码(可在IE和MF中运行)：<br />            &lt;input type="button" name="someButton" value="提交" onclick="javascript:gotoSubmit(event)"/&gt;<br />            ...<br />            &lt;script language="javascript"&gt;<br />                function gotoSubmit(evt) {<br />                    evt = evt ? evt : (window.event ? window.event : null);<br />                    ...<br />                    alert(evt);             // use evt<br />                    ...<br />                }<br />            &lt;/script&gt;<br />        此外，如果新代码中第一行不改，与老代码一样的话(即 gotoSubmit 调用没有给参数)，则仍然只能在IE中运行，但不会出错。所以，这种方案 tpl 部分仍与老代码兼容。<br /><br />4. HTML 对象的 id 作为对象名的问题<br />    (1)现有问题<br />        在 IE 中，HTML 对象的 ID 可以作为 document 的下属对象变量名直接使用。在 MF 中不能。<br />    (2)解决方法<br />        用 getElementById("idName") 代替 idName 作为对象变量使用。<br /><br />5. 用idName字符串取得对象的问题<br />    (1)现有问题<br />        在IE中，利用 eval(idName) 可以取得 id 为 idName 的 HTML 对象，在MF 中不能。<br />    (2)解决方法<br />        用 getElementById(idName) 代替 eval(idName)。<br /><br />6. 变量名与某 HTML 对象 id 相同的问题<br />    (1)现有问题<br />        在 MF 中，因为对象 id 不作为 HTML 对象的名称，所以可以使用与 HTML 对象 id 相同的变量名，IE 中不能。<br />    (2)解决方法<br />        在声明变量时，一律加上 var ，以避免歧义，这样在 IE 中亦可正常运行。<br />        此外，最好不要取与 HTML 对象 id 相同的变量名，以减少错误。<br />    (3)其它<br />        参见 问题4<br /><br />7. event.x 与 event.y 问题<br />    (1)现有问题<br />        在IE 中，event 对象有 x, y 属性，MF中没有。<br />    (2)解决方法<br />        在MF中，与event.x 等效的是 event.pageX。但event.pageX IE中没有。<br />        故采用 event.clientX 代替 event.x。在IE 中也有这个变量。<br />        event.clientX 与 event.pageX 有微妙的差别（当整个页面有滚动条的时候），不过大多数时候是等效的。<br /><br />        如果要完全一样，可以稍麻烦些：<br />        mX = event.x ? event.x : event.pageX;<br />        然后用 mX 代替 event.x<br />    (3)其它<br />        event.layerX 在 IE 与 MF 中都有，具体意义有无差别尚未试验。<br /><br /><br />8. 关于frame<br />   (1)现有问题<br />         在 IE中 可以用window.testFrame取得该frame，mf中不行<br />   (2)解决方法<br />         在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对象<br /><br />另外，在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修改<br /><br />9. 在mf中，自己定义的属性必须getAttribute()取得<br />10.在mf中没有  parentElement parement.children  而用<br />               parentNode parentNode.childNodes<br />   childNodes的下标的含义在IE和MF中不同，MF使用DOM规范，childNodes中会插入空白文本节点。<br />  一般可以通过node.getElementsByTagName()来回避这个问题。<br />   当html中节点缺失时，IE和MF对parentNode的解释不同，例如<br />   &lt;form&gt;<br />   &lt;table&gt;<br />        &lt;input/&gt;<br />   &lt;/table&gt;<br />   &lt;/form&gt;<br />   MF中input.parentNode的值为form, 而IE中input.parentNode的值为空节点<br /><br />  MF中节点没有removeNode方法，必须使用如下方法 node.parentNode.removeChild(node)<br /><br />11.const 问题<br />  (1)现有问题:<br />     在 IE 中不能使用 const 关键字。如 const constVar = 32; 在IE中这是语法错误。<br />  (2)解决方法:<br />     不使用 const ，以 var 代替。<br /><br />12. body 对象<br />   MF的body在body标签没有被浏览器完全读入之前就存在，而IE则必须在body完全被读入之后才存在<br /><br />13. url encoding<br />在js中如果书写url就直接写&amp;不要写&amp;例如var url = 'xx.jsp?objectName=xx&amp;objectEvent=xxx';<br />frm.action = url那么很有可能url不会被正常显示以至于参数没有正确的传到服务器<br />一般会服务器报错参数没有找到<br />当然如果是在tpl中例外，因为tpl中符合xml规范，要求&amp;书写为&amp;<br />一般MF无法识别js中的&amp;<br /><br /><br />14. nodeName 和 tagName 问题<br />  (1)现有问题：<br />     在MF中，所有节点均有 nodeName 值，但 textNode 没有 tagName 值。在 IE 中，nodeName 的使用好象<br />     有问题（具体情况没有测试，但我的IE已经死了好几次）。<br />  (2)解决方法：<br />     使用 tagName，但应检测其是否为空。<br /><br />15. 元素属性<br />   IE下 input.type属性为只读，但是MF下可以修改<br /><br /><br />16. document.getElementsByName() 和 document.all[name] 的问题<br />  (1)现有问题：<br />     在 IE 中，getElementsByName()、document.all[name] 均不能用来取得 div 元素（是否还有其它不能取的元素还不知道）。<br /><img src ="http://www.blogjava.net/hiswing/aggbug/65970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hiswing/" target="_blank">hiswing</a> 2006-08-27 09:33 <a href="http://www.blogjava.net/hiswing/archive/2006/08/27/65970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Js文件中调用其它Js函数的方法</title><link>http://www.blogjava.net/hiswing/archive/2006/07/30/60898.html</link><dc:creator>hiswing</dc:creator><author>hiswing</author><pubDate>Sun, 30 Jul 2006 14:29:00 GMT</pubDate><guid>http://www.blogjava.net/hiswing/archive/2006/07/30/60898.html</guid><wfw:comment>http://www.blogjava.net/hiswing/comments/60898.html</wfw:comment><comments>http://www.blogjava.net/hiswing/archive/2006/07/30/60898.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hiswing/comments/commentRss/60898.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hiswing/services/trackbacks/60898.html</trackback:ping><description><![CDATA[　　在项目开发过程中，也许你会遇这样的情况。在某一Js文件中需要完成某一功能，但这一功能的大部分代码在另外一个Js文件中已经完成了，自己只需要调用这个方法再加上几句代码就可以实现所需的功能。我们知道，在html中，利用&lt;script language="javascript" type="text/javascript" src="./script.js"&gt;&lt;/script&gt;引入的两个js是不可以相互调用的。那么该如何解决呢？当然，你可以将代码通通copy过来，也许你并不喜欢这样。<br /><br />　　例如有这样一个html，里面有一个按钮，当按下时调用b.js文件中的方法b()。而b()中又要调用a.js文件中的方法a()。若要实现这个功能，必须注意，将要引入的Js文件代码放在&lt;/body&gt;下面。<br /><br />　　首先，我们在html中引入b.js，并在&lt;/body&gt;之后加入引用语句。如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="button"</span><span style="COLOR: #ff0000"> value</span><span style="COLOR: #0000ff">="ok"</span><span style="COLOR: #ff0000"> onclick</span><span style="COLOR: #0000ff">="javascript:b()"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">这里引用要放在body下面</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script </span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="JAVASCRIPT"</span><span style="COLOR: #ff0000"> src</span><span style="COLOR: #0000ff">='b.js'</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">html</span><span style="COLOR: #0000ff">&gt;</span></div><br />　　b.js文件如下：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">new_element</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">document.createElement(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />new_element.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />new_element.setAttribute(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">src</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 在这里引入了a.js</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">document.body.appendChild(new_element);<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #000000"><img id="Codehighlighter1_205_216_Open_Image" onclick="this.style.display='none'; Codehighlighter1_205_216_Open_Text.style.display='none'; Codehighlighter1_205_216_Closed_Image.style.display='inline'; Codehighlighter1_205_216_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_205_216_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_205_216_Closed_Text.style.display='none'; Codehighlighter1_205_216_Open_Image.style.display='inline'; Codehighlighter1_205_216_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> b() </span><span id="Codehighlighter1_205_216_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.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_205_216_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a();<br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />　　在b.js文件中前4行代码中我们引入了a.js文件，并在第7行代码中调用了a.js代码中的a()方法。<br /><br />　　让我们来分析一下关键的几句代码：首先，我们利用document.createElement("script")生成了一个script的标签，设置其type属性为text/javascript，src为a.js(这里的a.js同b.js放在同一个目录，也可放在不同的目录)。最后将这个标签动态地加入body中。如此一来，我们就可以调用到不同js文件中的方法了。<img src ="http://www.blogjava.net/hiswing/aggbug/60898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hiswing/" target="_blank">hiswing</a> 2006-07-30 22:29 <a href="http://www.blogjava.net/hiswing/archive/2006/07/30/60898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>