qbq 发表于 2011-12-22 08:54

Cross Browser

写了一个多月JS,感觉如今可不比几年前只有IE6的年代,而且过去只是用JS写个Ajax或者是简单的表单验证,可如今写一个稍微复杂点的小应用,要兼容所有浏览器,才发现真是太难了,难怪FE是一个独立的工种,有别于我们这些Java工程师了。<br>&nbsp; 如果你也不是专业FE,那么估计也会跟我一样在这些地方翻船,或许你所遇到的情况比我这些还多,那么欢迎补充。<br>1 首先是最简单的select标签,就有诸多不兼容:<br>&nbsp; A、 cloneNode方法,对于非IE浏览器没有问题,对于IE浏览器,我遇到的问题包括:<br>&nbsp; 1)option selected的会clone不过去,然后会将第一个option作为selected值<br>&nbsp; 2)事件clone也会有问题<br>&nbsp; B、Readonly:对于IE6,可以通过以下方法将select设为readonly:<br>&nbsp; obj.onbeforeactive=function(){return false}<br>&nbsp; obj.onfocus=function(){obj.blur();}<br>&nbsp; obj.onmouseover=function(){obj.setCapture();}<br>&nbsp; obj.onmouseout=function(){obj.releaseCapture();}<br>&nbsp; 对于其他浏览器,我采用的是元素替代法,动态创建一个input标签,把值赋给它,然后将select隐藏。<br>&nbsp; C、select的z-index对于IE6无效,网上有很多关于这个讨论,JQuery采用一个iframe搞定<br>&nbsp; D、动态添加option的方法不同,这个网上一搜一大堆<br>&nbsp; E、对于onclick和onchange的响应不同,在FF下可以在onclick select时动态读取option值然后构建option,然后选中一个值后执行onchange事件,但是IE下不能这样做。<br>2 css对offsetWidth之类的理解不同<br>&nbsp; http://newleague.iteye.com/blog/765535<br>3 对于vertical-align baseline的理解不同:<br>&nbsp; http://w3help.org/zh-cn/causes/RD1016<br>4 设置背景色<br>&nbsp; element.style.backgroundColor<br>&nbsp; 在firefox下想改变颜色,必须先设为null,再设为其他颜色才行,即先取消原来的颜色。<br>&nbsp; 在IE下,想取消颜色,必须设为''才行,而换其他颜色,无需先去掉之前的颜色,而如果你设成了null,反倒不行了。<br>5 不同浏览器去padding的理解不同<br>6 不同浏览器对强制换行和强制不换行的理解不同:<br>&nbsp; http://www.cftea.com/c/2009/01/QPDZU40MNW8FYYG3.asp<br>&nbsp; 最恶心的是对于IE6,如果是&lt;td&gt;<span>我是蚊子</span>&lt;/td&gt;,那么在td上写了word-break:keep-all依然无效,必须在span上也写。<br>7 获得head节点的方式不同<br>&nbsp; 在Firefox下可以用window.head,而所有浏览器都兼容的方式是document.getElementsByTagName('head')<br>8 往head上添加css code的方法不同,也就是动态添加&lt;style&gt;标签。<br>&nbsp; IE下可以用var style=document.createStyleSheet();style.cssText=cssCode;<br>&nbsp; 而有文章说,在Windows上的IE,用createStyleSheet返回的是styleElement的styleSheet,而在Mac上返回的是styleElement自己。<br>&nbsp;&nbsp; 在其他浏览器下需要document.createElement('style');<br>&nbsp;&nbsp; 然后还有区分是否具有styleSheet属性。<br>&nbsp;&nbsp; 这个很容易搜到。<br>9 对于onchange事件,firefox浏览器可以注册在table,div等组件上,然后通过冒泡,拦截input,select等发出的事件,而IE不行,必须绑定到相应的组件上<br>10 将input设为readonly=true,其依然会响应keypress,keyup,keydown,onblur事件<br>11 IE和非IE对于停止冒泡和取消默认行为的方法不同<br>12

大家都知道IE和非IE在动态添加事件时使用的方法不同,IE是attachEvent,其他是addListener,然后参数也不同。更重要的是如果
一个控件绑定了多个function,他们绑定和执行的顺序是不同的,IE是跟绑定顺序相反,其他是跟绑定顺序相同<br>13 获得当前事件不同,一个是window.event一个是直接接受event<br>14 FF下执行offset系列非常慢,但是IE下比较快,而IE的改变CSS的执行非常慢。<br>&nbsp;&nbsp; Firefox6比Firefox3.6速度快的多,相差好几百倍(针对一个400行*50列的表格的JS处理)<br>15 如果大量动态改变css,那么使用document.createDocumentFragment,然后将需要修改样式的Dom获取出来appendChild到这个临时的fragment上,修改完css后再append回去即可,这样性能能差好几百倍。<br>16 浏览器加载网页时,顺序读取html,遇到外部js链接会读进来,然后按顺序执行,边解释边执行,而对于外部css,图片等则是启动另外的线程连接服务器去获取。<br>&nbsp;&nbsp; IE对于CSS引入有限制,我没试过,但有篇文章讨论:http://blog.csdn.net/ydshang/article/details/4158211<br>17 表格定位某一行,可以通过改变scrollTop来实现,当然如果出现了滚动条的话<br>18 IE的Dom用完要记得释放,可以在unload方法中,否则会出现内存泄露<br>19 unload方法在各个浏览器里各不相同,我之前的文章里有介绍。http://sslaowan.iteye.com/blog/1128209<br>20 我知道了为什么FE最喜欢的浏览器是FF,最讨厌的是IE6,恨不得IE6去死,其他IE也不怎么样。但是Chrome,Opera也各有各的bug<br>21 Ajax当使用同步模式时,如果访问的链接是错误的,那么FF会在控制台报错,而IE会直接弹出个对话框,然后就崩溃了。<br>22 FF支持document.getElementsByClass等方法,IE不支持,可以自己写一个。<br>23 trim方法在IE和FF下不同,需要自己写一个,可以用正则表达式<br>24 动态设置元素的css class在IE和非IE浏览器下也不同<br>25 有时本地字体库会影响你的字体,大小等显示,但是有时甚至会影响你的布局<br>26 字符串也可以使用&gt;&lt;等符号比较大小,但是是字符串比较,不要被骗了。<br>27 JS中this问题非常让人困惑<br>28 判断浏览器可以有很多方法,主流是两大类,agent判断法和特性法,后者好像更推荐<br>29 JS是面向对象语言,对象.属性=值 只影响当前对象,而对象.prototype.属性则影响整个类。非IE浏览器可以覆盖DOM对象的类方法,但是IE不行。<br>30 getComputedStyle,获得外部添加的css,FF支持,IE不支持,具体看这篇文章http://www.jb51.net/article/16128.htm<br>31 IE和Chrome支持outerHTML方法,其他浏览器没有。相关讨论:<a href="http://walsh.iteye.com/blog/261966" target="_blank" target="_blank">http://walsh.iteye.com/blog/261966</a>,<a href="http://stackoverflow.com/questions/1700870/how-do-i-do-outerhtml-in-firefox" target="_blank" target="_blank">http://stackoverflow.com/questions/1700870/how-do-i-do-outerhtml-in-firefox</a>
<p>&nbsp;32 还有一个特悲剧的,IE下会把document.控件Id当成那个控件,如果把一个控件比如input的id设为了submit,那么form.submit()就会报错。<br>&nbsp;<span style="color: rgb(255, 0, 0);"><strong>2011-8-25Add</strong></span></p>
<p>33 如果利用全角空格进行布局时,Firefox支持,而IE会去除只剩一个,但是是在某些情况下的,具体看这篇文章:<a href="http://w3help.org/zh-cn/causes/BT1025" target="_blank" target="_blank">http://w3help.org/zh-cn/causes/BT1025</a>&nbsp;</p>
<p>34 透明度:</p>
<p><span style="">filter:alpha(opacity=0); /* IE */</span></p>
<p><span style="">-moz-opacity:0.3; /* Moz + FF */<br style="line-height: normal;">&nbsp;opacity: 0.3;</span></p>
<p>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 至于用不用var的区别,undefined和null的区别,Ajax构建的不同方式,这些一般的Java程序员都了解了。<br><br>&nbsp;&nbsp;&nbsp; 很多Java程序员也会使用JS框架,比如JQuery,Extjs和Dojo,她们都帮我们屏蔽了很多兼容性问题。<br>&nbsp;&nbsp;&nbsp; Dojo提供了Java一样的面向对象机制。<br><br>&nbsp;&nbsp;&nbsp; 抛砖引玉,你还遇到过什么陷阱,那些FE都知道,而我们Java工程师不知道?</p>
<p>&nbsp;</p>
<p>&nbsp; &nbsp; 有同学要求例子,有些只是小知识,有了链接,那么给一个我做的过程中写的实验程序吧,主要是验证select,还有readonly之后的input对于keypress等事件的响应:</p>
<p>&nbsp;&nbsp; <br></p><div id="codeText" class="codeText"><ol style="margin: 0pt 1px 0pt 0pt; padding: 5px 0pt;" start="1" class="dp-css"><li><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">html</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></span></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">head</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">script</span><span style="color: rgb(0, 0, 204);">&gt;</span> <br></li><li>
function addListener<span style="color: rgb(0, 0, 204);">(</span>element<span style="color: rgb(0, 0, 204);">,</span> e<span style="color: rgb(0, 0, 204);">,</span> fn<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;if <span style="color: rgb(0, 0, 204);">(</span>element<span style="color: rgb(0, 0, 204);">.</span>addEventListener<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element<span style="color: rgb(0, 0, 204);">.</span>addEventListener<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">,</span> fn<span style="color: rgb(0, 0, 204);">,</span> false<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span> else <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element<span style="color: rgb(0, 0, 204);">.</span>attachEvent<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">"on"</span> <span style="color: rgb(0, 0, 204);">+</span> e<span style="color: rgb(0, 0, 204);">,</span> fn<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
function getEventSource<span style="color: rgb(0, 0, 204);">(</span>event<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;event <span style="color: rgb(0, 0, 204);">=</span> window<span style="color: rgb(0, 0, 204);">.</span>event ? window<span style="color: rgb(0, 0, 204);">.</span>event : event<span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> source <span style="color: rgb(0, 0, 204);">=</span> event<span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">target</span> <span style="color: rgb(0, 0, 204);">|</span><span style="color: rgb(0, 0, 204);">|</span> event<span style="color: rgb(0, 0, 204);">.</span>srcElement<span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;return source<span style="color: rgb(0, 0, 204);">;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
function init<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> provChoice <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'prov'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;fillPro<span style="color: rgb(0, 0, 204);">(</span>provChoice<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;addListener<span style="color: rgb(0, 0, 204);">(</span>provChoice<span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'change'</span><span style="color: rgb(0, 0, 204);">,</span> fillCity<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> coChoice <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'country'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;addListener<span style="color: rgb(0, 0, 204);">(</span>coChoice<span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'change'</span><span style="color: rgb(0, 0, 204);">,</span> function<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'a'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> selects <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>getElementsByTagName<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'select'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(255, 0, 0);">for</span> <span style="color: rgb(0, 0, 204);">(</span> <span style="color: rgb(0, 0, 255);">var</span> <span style="color: rgb(0, 0, 255);">i</span> <span style="color: rgb(0, 0, 204);">=</span> 0<span style="color: rgb(0, 0, 204);">;</span> <span style="color: rgb(0, 0, 255);">i</span> <span style="color: rgb(0, 0, 204);">&lt;</span> selects<span style="color: rgb(0, 0, 204);">.</span>length<span style="color: rgb(0, 0, 204);">;</span> <span style="color: rgb(0, 0, 255);">i</span><span style="color: rgb(0, 0, 204);">+</span><span style="color: rgb(0, 0, 204);">+</span><span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selects<span style="color: rgb(0, 0, 204);">[</span><span style="color: rgb(0, 0, 255);">i</span><span style="color: rgb(0, 0, 204);">]</span><span style="color: rgb(0, 0, 204);">.</span>cloneNode <span style="color: rgb(0, 0, 204);">=</span> function<span style="color: rgb(0, 0, 204);">(</span>deep<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> temp <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>createElement<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'div'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp<span style="color: rgb(0, 0, 204);">.</span>innerHTML <span style="color: rgb(0, 0, 204);">=</span> this<span style="color: rgb(0, 0, 204);">.</span>outerHTML<span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return temp<span style="color: rgb(0, 0, 204);">.</span>childNodes<span style="color: rgb(0, 0, 204);">[</span>0<span style="color: rgb(0, 0, 204);">]</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'cloneCo'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span>appendChild<span style="color: rgb(0, 0, 204);">(</span>coChoice<span style="color: rgb(0, 0, 204);">.</span>cloneNode<span style="color: rgb(0, 0, 204);">(</span>true<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> coTD <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'co'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'r1'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span>appendChild<span style="color: rgb(0, 0, 204);">(</span>coTD<span style="color: rgb(0, 0, 204);">.</span>cloneNode<span style="color: rgb(0, 0, 204);">(</span>true<span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">readOnly</span> <span style="color: rgb(0, 0, 204);">=</span> true<span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">onkeydown</span> <span style="color: rgb(0, 0, 204);">=</span> function<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e<span style="color: rgb(0, 0, 204);">.</span>preventDefault<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e<span style="color: rgb(0, 0, 204);">.</span>stopPropagation<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">onkeypress</span> <span style="color: rgb(0, 0, 204);">=</span> function<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'b'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">onchange</span> <span style="color: rgb(0, 0, 204);">=</span> function<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'c'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">onblur</span> <span style="color: rgb(0, 0, 204);">=</span> function<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'d'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'abc'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">value</span> <span style="color: rgb(0, 0, 204);">=</span> <span style="color: rgb(255, 0, 255);">'add'</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
function fillPro<span style="color: rgb(0, 0, 204);">(</span>pro<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;pro<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>0<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'BJ'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'北京'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;pro<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>1<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'TJ'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'天津'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;pro<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>2<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'HLJ'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'黑龙江'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;pro<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>3<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'SH'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'上海'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
function fillCity<span style="color: rgb(0, 0, 204);">(</span>e<span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 255);">var</span> c <span style="color: rgb(0, 0, 204);">=</span> document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'city'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;if <span style="color: rgb(0, 0, 204);">(</span>document<span style="color: rgb(0, 0, 204);">.</span>getElementById<span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'prov'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">.</span><span style="color: rgb(255, 0, 0);">value</span> <span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(0, 0, 204);">=</span> <span style="color: rgb(255, 0, 255);">'黑龙江'</span><span style="color: rgb(0, 0, 204);">)</span> <span style="color: rgb(0, 0, 204);">{</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>0<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'HRB'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'哈尔滨'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>1<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'MDJ'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'牡丹江'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>2<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'QQHR'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'齐齐哈尔'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c<span style="color: rgb(0, 0, 204);">.</span>options<span style="color: rgb(0, 0, 204);">[</span>3<span style="color: rgb(0, 0, 204);">]</span> <span style="color: rgb(0, 0, 204);">=</span> new <span style="color: rgb(0, 0, 255);">Option</span><span style="color: rgb(0, 0, 204);">(</span><span style="color: rgb(255, 0, 255);">'JMS'</span><span style="color: rgb(0, 0, 204);">,</span> <span style="color: rgb(255, 0, 255);">'佳木斯'</span><span style="color: rgb(0, 0, 204);">)</span><span style="color: rgb(0, 0, 204);">;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
<span style="color: rgb(0, 0, 204);">}</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">script</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">head</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">body</span> <span style="color: rgb(255, 0, 0);">onload</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'init(event)'</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">table</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">tr</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'r1'</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">td</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'co'</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">select</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'country'</span> <span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'country'</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">option</span> <span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'UK'</span><span style="color: rgb(0, 0, 204);">&gt;</span>UK<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">option</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">option</span> <span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'USA'</span><span style="color: rgb(0, 0, 204);">&gt;</span>USA<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">option</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">option</span> <span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'CHINA'</span> <span style="color: rgb(255, 0, 0);">selected</span><span style="color: rgb(0, 0, 204);">&gt;</span>China<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">option</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">select</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'prov'</span> <span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'prov'</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">select</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'city'</span> <span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'city'</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">select</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">td</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'cloneCo'</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">input</span> <span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'abc'</span> <span style="color: rgb(255, 0, 0);">value</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'0'</span> <span style="color: rgb(255, 0, 0);">onkeypress</span><span style="color: rgb(0, 0, 204);">=</span><span style="color: rgb(255, 0, 255);">'return alert("a1"); '</span> <span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 204);">&gt;</span><span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">td</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">tr</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 255);">table</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">body</span><span style="color: rgb(0, 0, 204);">&gt;</span><br></li><li>
<span style="color: rgb(0, 0, 204);">&lt;</span><span style="color: rgb(0, 0, 204);">/</span><span style="color: rgb(0, 0, 255);">html</span><span style="color: rgb(0, 0, 204);">&gt;</span></li></ol></div><p>&nbsp;</p>
<p>&nbsp; &nbsp;其他有用的帖子:</p>
<p>&nbsp; &nbsp;1&nbsp;<span><a style="color: rgb(0, 102, 153); text-decoration: none;" href="http://www.iteye.com/topic/920575">Javascript在IE和FireFox中的不同表现</a>(即将被隐藏,说是DW上的文章,但是没找到原文,而且此文下有补充回复)</span></p>
<p>&nbsp; &nbsp;2&nbsp;<span><a style="color: rgb(0, 102, 153); text-decoration: none;" href="http://www.iteye.com/topic/204040">Javascript与CSS在IE和Firefox中的误区及区别</a>(此贴即将成为精华帖)</span></p>
<p>&nbsp; &nbsp;3&nbsp;<span><a style="color: rgb(0, 102, 153); text-decoration: none;" href="http://www.iteye.com/topic/602784">JavaScript在IE和Firefox下的兼容性问题</a>(此贴即将成为新手帖)</span></p>
<p>&nbsp;</p>
<p><span style="color: rgb(255, 0, 0); font-size: medium;"><strong>强烈推荐此网站:</strong></span></p>
<p><a href="http://w3help.org/zh-cn/causes/index.html" target="_blank" target="_blank">http://w3help.org/zh-cn/causes/index.html</a></p>
页: [1]
查看完整版本: Cross Browser