1 select标签,就有诸多不兼容:

  A、 cloneNode方法,对于非IE浏览器没有问题,对于IE浏览器, 遇到的问题包括:

      1)option selected的会clone不过去,然后会将第一个option作为selected值

      2)事件clone也会有问题

  B、Readonly:对于IE6,可以通过以下方法将select设为readonly:

obj.onbeforeactive=function(){return false}
obj.onfocus=function(){obj.blur();}
obj.onmouseover=function(){obj.setCapture();}
obj.onmouseout=function(){obj.releaseCapture();}

  对于其他浏览器, 采用的是元素替代法,动态创建一个input标签,把值赋给它,然后将select隐藏.

  C、select的z-index对于IE6无效,网上有很多关于这个讨论,jQuery采用一个iframe搞定

  D、动态添加option的方法不同,这个网上一搜一大堆

  E、对于onclick和onchange的响应不同,在FF下可以在onclick select时动态读取option值然后构建option,然后选中一个值后执行onchange事件,但是IE下不能这样做.

  2 css对offsetWidth之类的理解不同

  http://newleague.iteye.com/blog/765535

  3 对于vertical-align baseline的理解不同:

  http://w3help.org/zh-cn/causes/RD1016

  4 设置背景色

  element.style.backgroundColor

  在firefox下想改变颜色,必须先设为null,再设为其他颜色才行,即先取消原来的颜色.

  在IE下,想取消颜色,必须设为''才行,而换其他颜色,无需先去掉之前的颜色,而如果你设成了null,反倒不行了.

  5 不同浏览器去padding的理解不同

  6 不同浏览器对强制换行和强制不换行的理解不同:

  http://www.cftea.com/c/2009/01/QPDZU40MNW8FYYG3.asp

  最恶心的是对于IE6,如果是<td><span>我是蚊子</span></td>,那么在td上写了word-break:keep-all依然无效,必须在span上也写.

  7 获得head节点的方式不同

  在Firefox下可以用window.head,而所有浏览器都兼容的方式是document.getElementsByTagName('head')[0]

  8 往head上添加css code的方法不同,也就是动态添加<style>标签.

  IE下可以用var style=document.createStyleSheet();style.cssText=cssCode;

  而有文章说,在Windows上的IE,用createStyleSheet返回的是styleElement的styleSheet,而在Mac上返回的是styleElement自己.

  在其他浏览器下需要document.createElement('style');

  然后还有区分是否具有styleSheet属性.

  这个很容易搜到.

  9 对于onchange事件,firefox浏览器可以注册在table,div等组件上,然后通过冒泡,拦截input,select等发出的事件,而IE不行,必须绑定到相应的组件上

  10 将input设为readonly=true,其依然会响应keypress,keyup,keydown,onblur事件

  11 IE和非IE对于停止冒泡和取消默认行为的方法不同

  12 大家都知道IE和非IE在动态添加事件时使用的方法不同,IE是attachEvent,其他是addListener,然后参数也不同.更重要的是如果 一个控件绑定了多个function,他们绑定和执行的顺序是不同的,IE是跟绑定顺序相反,其他是跟绑定顺序相同

  13 获得当前事件不同,一个是window.event一个是直接接受event

  14 FF下执行offset系列非常慢,但是IE下比较快,而IE的改变CSS的执行非常慢.

  Firefox6比Firefox3.6速度快的多,相差好几百倍(针对一个400行*50列的表格的JS处理)

  15 如果大量动态改变css,那么使用document.createDocumentFragment,然后将需要修改样式的Dom获取出来appendChild到这个临时的fragment上,修改完css后再append回去即可,这样性能能差好几百倍.

  16 浏览器加载网页时,顺序读取html,遇到外部js链接会读进来,然后按顺序执行,边解释边执行,而对于外部css,图片等则是启动另外的线程连接服务器去获取.

  IE对于CSS引入有限制,我没试过,但有篇文章讨论:http://blog.csdn.net/ydshang/article/details/4158211

  17 表格定位某一行,可以通过改变scrollTop来实现,当然如果出现了滚动条的话

  18 IE的Dom用完要记得释放,可以在unload方法中,否则会出现内存泄露

  19 unload方法在各个浏览器里各不相同,  有介绍.http://sslaowan.iteye.com/blog/1128209

  20  知道了为什么FE最喜欢的浏览器是FF,最讨厌的是IE6,恨不得IE6去死,其他IE也不怎么样.但是Chrome,Opera也各有各的bug

  21 Ajax当使用同步模式时,如果访问的链接是错误的,那么FF会在控制台报错,而IE会直接弹出个对话框,然后就崩溃了.

  22 FF支持document.getElementsByClass等方法,IE不支持,可以自己写一个.

  23 trim方法在IE和FF下不同,需要自己写一个,可以用正则表达式

  24 动态设置元素的css class在IE和非IE浏览器下也不同

  25 有时本地字体库会影响你的字体,大小等显示,但是有时甚至会影响你的布局

  26 字符串也可以使用><等符号比较大小,但是是字符串比较,不要被骗了.

  27 JS中this问题非常让人困惑

  28 判断浏览器可以有很多方法,主流是两大类,agent判断法和特性法,后者好像更推荐

  29 JS是面向对象语言,对象.属性=值 只影响当前对象,而对象.prototype.属性则影响整个类.非IE浏览器可以覆盖DOM对象的类方法,但是IE不行.

  30 getComputedStyle,获得外部添加的css,FF支持,IE不支持,具体看这篇文章http://www.jb51.net/article/16128.htm

  31 IE和Chrome支持outerHTML方法,其他浏览器没有.相关讨论:http://walsh.iteye.com/blog /261966,http://stackoverflow.com/questions/1700870/how-do-i-do-outerhtml-in-firefox

  32 还有一个特悲剧的,IE下会把document.[formname.]控件Id当成那个控件,如果把一个控件比如input的id设为了submit,那么form.submit()就会报错.

  33 如果利用全角空格进行布局时,Firefox支持,而IE会去除只剩一个,但是是在某些情况下的,具体看这篇文章:http://w3help.org/zh-cn/causes/BT1025

  34 透明度:

  filter:alpha(opacity=0); /* IE */

  -moz-opacity:0.3; /* Moz + FF */

  opacity: 0.3;

  至于用不用var的区别,undefined和null的区别,Ajax构建的不同方式,这些一般的Java程序员都了解了.

  很多Java程序员也会使用JS框架,比如JQuery,Extjs和Dojo,她们都帮我们屏蔽了很多兼容性问题.Dojo提供了Java一样的面向对象机制.

转载自: http://java.chinaitlab.com/base/862298_1.html

Front End中Javascript兼容问题收集(转)的更多相关文章

  1. 原生JavaScript技巧大收集100个

    原生JavaScript技巧大收集 1.原生JavaScript实现字符串长度截取function cutstr(str, len) { var temp; var icount = 0; var p ...

  2. Javascript常用方法函数收集(二)

    Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...

  3. 45本免费的JavaScript书籍资源收集

    JavaScript目前变得越来越流行,已经变成了Web开发必备的语言,加之其跨平台的特性,使得在一切皆为JavaScript的移动互联网时代大有作为. 同时,我们看到,在过去的这一年的软件开发中,J ...

  4. JavaScript 正则表达收集整理

    JavaScript 正则表达收集整理 //可为空 /^\s*$/ //密码验证,必须且只含有数字和字母,可以拥有英文符号,6-17位 /(?=.{,})(?=.*\d)(?=.*[a-z])[\x2 ...

  5. 浏览器中Javascript单线程分析

    线程这个特性对于一门语言环境来说是尤其重要的,在Java/C++环境下都提供了多线程API操作. 但在Javascript中据说代码执行时单线程的,大量计算的逻辑会阻塞浏览器HTML渲染,但setTi ...

  6. JavaScript强化教程——Cocos2d-JS中JavaScript继承

    javaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来 ...

  7. 15SpringMvc_在业务控制方法中写入模型变量收集参数,且使用@InitBind来解决字符串转日期类型

    之前第12篇文章中提到过在业务控制方法中写入普通变量收集参数的方式,也提到了这种凡方式的弊端(参数很多怎么办),所以这篇文章讲的是在业务控制方法中写入模型变量来收集参数.本文的案例实现的功能是,在注册 ...

  8. 在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样?

    原文:在标记的HREF属性中javascript:alert(this.innerHTML)会怎么样? <a href="javascript:alert(this.innerHTML ...

  9. 数据类型 text 和 varchar 在 add 运算符中不兼容

    原文:数据类型 text 和 varchar 在 add 运算符中不兼容 在SQL Server2005中,使用类似下面的Update语句: 1 UPDATE tb_SmsBlacklist SET ...

随机推荐

  1. 简单几步配置gitlab

    简单几步配置gitlab 之前配置gitlab需要很多步骤,要装apache2.ruby.tomcat.mysql等一片东西.有没有更简单的方式呢?现在可以借助bitnami,简化了很多. 可以参考v ...

  2. Perl5中19个最重要的文件系统工具

    在写脚本处理文件系统时,经常需要加载很多模块.其中好多有用函数分散在各种不同的模块中.它们有些是Perl的内置函数,有些是在同Perl一起发行的标准模块中,另外一些是通过CPAN安装的. 下面来看15 ...

  3. 转 C编译: 使用gdb调试

    C编译: 使用gdb调试   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! gdb是the GNU Debugger的简称.它是 ...

  4. NOJ 1063 生活的烦恼

    描述 生活的暑假刚集训开始,他要决心学好字典树,二叉树,线段树和各种树,但生活在OJ上刷题的时候就遇到了一个特别烦恼的问题.那当然就是他最喜欢的二二叉树咯!题目是这样的:给你一颗非空的二叉树,然后再给 ...

  5. iOS - UIToolbar

    前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UIToolbar : UIView <UIBarPositioning& ...

  6. linux设备驱动编写_tasklet机制(转)

    在编写设备驱动时, tasklet 机制是一种比较常见的机制,通常用于减少中断处理的时间,将本应该是在中断服务程序中完成的任务转化成软中断完成. 为了最大程度的避免中断处理时间过长而导致中断丢失,有时 ...

  7. maven入门

    1.1.项目构建 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 项目构建过程包括 ...

  8. Linux之free命令

    from http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html free命令可以显示Linux系统中空闲的.已用的物理内存及swap ...

  9. z-index总结【转载http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html】

    元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...

  10. SqlServer扩展存储过程

    1. 扩展存储过程xp_cmdshell用法: --1.启用 SP_CONFIGURE RECONFIGURE GO SP_CONFIGURE RECONFIGURE GO --2.用法 master ...