- 浏览: 175812 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (140)
- java (138)
- 佳能500d (1)
- 佳能 (1)
- Oracle数据库文档构造器--Oraschemadoc (1)
- EJB调用的原理分析 (1)
- 使用css3画"静音"icon (1)
- 张小庆,在路上(16)-给弟弟找工作 (1)
- Android短信编解码方式 (1)
- lua web 开发 (1)
- zk安装 (1)
- 菜单多国语言化遇到的问题 (1)
- 【转】纯文本配置还是注册表 (1)
- C++ delete删除动态分配的内存 (1)
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 (1)
- Lucene实现各种常见文档的全文检索 (1)
- 项目风险之人员流动风险 (1)
- 时空数据模型简介 (1)
- XSLT学习笔记 (1)
- 依然是计划 如果没有计划似乎就没有了动力 (1)
- How to Succeed in A Professional Career (1)
- 编程环境应该和讨论社区完美的进行结合 (1)
- C#坦克大战实现 (1)
- 电脑用户密码忘记了怎么办? (1)
- java.lang.NoClassDefFoundError: org/dom4j/DocumentException (1)
- 关于成立北京Android爱好者俱乐部的声明 (1)
- Android开发之初探音频的播放 (1)
- Struts标签循环List (1)
- CAP原理 (1)
- javabean的自动生成 (1)
- 打开CMD一闪就关的解决方案 (1)
- 我是项目经理,我的项目管理日记【20111202】 (1)
- Html5游戏开发入门笔记--<躲砖块> (1)
- mysql中查看和设置系统字符编码 (1)
- PhoneGap-Accelerometer (1)
- [Jetty]Jetty工作原理 (1)
- Ibatis+Spring整合实例Demo+源码 (1)
最新评论
-
u012985907:
dsdsdsdsd
FLASH上传与拍照 -头像-avatart -
a379933101:
?????????????????????????????
android listview 连续调用 getview问题分析及解决 -
151tmac:
拜托下次粘贴的时候,粘贴为纯文本
android listview 连续调用 getview问题分析及解决 -
liudezhong135:
...
Spring3MVC 在JSP中使用@ModelAttribute -
香飘飘2011:
要是不知道层次级别,如何退回到根目录呢
FTP退回到根目录
写了一个多月js,感觉如今可不比几年前只有ie6的年代,而且过去只是用js写个ajax或者是简单的表单验证,可如今写一个稍微复杂点的小应用,要兼容所有浏览器,才发现真是太难了,难怪fe是一个独立的工种,有别于我们这些java工程师了。
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下,想取消颜色,必须设为''才行,而换其他颜色,无需先去掉之前的颜色。
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不行。
至于用不用var的区别,undefined和null的区别,ajax构建的不同方式,这些一般的java程序员都了解了。
很多java程序员也会使用js框架,比如jquery,extjs和dojo,她们都帮我们屏蔽了很多兼容性问题。
dojo提供了java一样的面向对象机制。
抛砖引玉,你还遇到过什么陷阱,那些fe都知道,而我们java工程师不知道?
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下,想取消颜色,必须设为''才行,而换其他颜色,无需先去掉之前的颜色。
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不行。
至于用不用var的区别,undefined和null的区别,ajax构建的不同方式,这些一般的java程序员都了解了。
很多java程序员也会使用js框架,比如jquery,extjs和dojo,她们都帮我们屏蔽了很多兼容性问题。
dojo提供了java一样的面向对象机制。
抛砖引玉,你还遇到过什么陷阱,那些fe都知道,而我们java工程师不知道?
发表评论
-
Ibatis+Spring整合实例Demo+源码
2012-02-08 12:58 1402<span style="color: ... -
[Jetty]Jetty工作原理
2012-02-07 17:29 993http://www.ibm.com/develo ... -
PhoneGap-Accelerometer
2012-02-07 14:23 1207采集设备在x、y、z方向上的动作。 acce ... -
mysql中查看和设置系统字符编码
2012-02-04 14:28 1707--查看数据库的字符集 show variables ... -
Html5游戏开发入门笔记--<躲砖块>
2012-02-03 12:04 1168学习了html5中的canvas画布元素,自己写了一个 ... -
我是项目经理,我的项目管理日记【20111202】
2012-02-03 10:19 994其实前段时间项目 ... -
打开CMD一闪就关的解决方案
2012-02-02 12:14 1386转:http://blog.163.com/cumt_ ... -
javabean的自动生成
2012-02-02 11:59 1399在jcreator pro中自动生成 在j ... -
CAP原理
2012-02-01 09:00 1151作者:NinGoo 原文链接:ht ... -
Struts标签循环List
2012-01-31 14:18 966<pre name="code&quo ... -
Android开发之初探音频的播放
2012-01-11 16:29 1086<h1>Android开发之初探音频的播放 ... -
关于成立北京Android爱好者俱乐部的声明
2012-01-11 14:33 860<blockquote dir="lt ... -
java.lang.NoClassDefFoundError: org/dom4j/DocumentException
2011-12-28 13:03 15095<span style="font-f ... -
电脑用户密码忘记了怎么办?
2011-12-28 12:14 981<span style="fon ... -
C#坦克大战实现
2011-12-20 13:29 1121记得在大学学java ... -
编程环境应该和讨论社区完美的进行结合
2011-12-19 11:54 761在学习.NET过程中,经常会遇到很多问题,有的时候会找 ... -
How to Succeed in A Professional Career
2011-12-19 10:29 731(From Microsoft)<br>& ... -
依然是计划 如果没有计划似乎就没有了动力
2011-12-15 10:39 878</span></span>& ... -
XSLT学习笔记
2011-12-14 14:04 668<p class="MsoNorma ... -
时空数据模型简介
2011-12-14 13:59 1482<p class="MsoNo ...
相关推荐
Free Spire.Presentation for Java 是一个专业的PowerPoint API,它允许开发人员在Java应用程序中创建、读取、写入、转换和保存PowerPoint文档。作为一款独立的Java组件,Free Spire.Presentation for Java的运行...
Free Spire.Barcode for Java 是一款基于 Java 语言开发的,免费的专门对条形码进行操作的类库。适用于商业或个人用途。这款产品的主要功能在于帮助开发人员轻松快捷高效地生成、读取和扫描一维条码和二维条码。 ...
本设计分享的是DIY制作FE2.1模块USB 2.0 HUB集线器设计,附原理图/PCB/BOM。该USB 2.0 HUB集线器采用FE2.1模块为主控芯片,支持7个USB Port,具备高性能、低功耗、低成本的特点。
Fe1.1s 是高性能,低功耗和高性价比等特点的USB2.04 port HUB chip,支援热插拔功能。FE1.1S是用于USB2.0 HUB的主控IC, 提供4个USB Port,具备高性能、低功耗、低成本的特点。采用STT数据传输架构,有良好的...
win98fe.iso Win98 FE文件,FE可以解决Win98的一个重要问题,没有问题的不需要用
本资源包含两个部份: 1. FE1.1s USB2.0 4 Ports Hub使用手册及参考电路; 2. FE2.1 USB2.0 7Ports Hub使用手册及参考电路。 收集了网上下载量最大,而且经过验证的资源,芯片手册都包括中文和英文,方便大家使用。
请大家注意一下:“Tiler.aex (瓦盖、瓦片效果)插件”没有汉化,因为非常不稳定,经常出现调用错误,不知道是什么原因。所以大家可以将它的扩展名改名,或移动到其他地方或者直接删除掉也可以。
FE2.1原理图,亲测可用,可以根据原理图进行相应的PCB设计,DATA线为90欧姆阻抗的差分线。
工欲善其事必先利其器,这两个可以很大程度上对开发者有所帮助。
METTLER TOLEDO FE38 电导率仪标准操作规程 METTLER TOLEDO FE38 电导率仪标准操作规程是一份详细的操作指南,旨在规范 METTLER TOLEDO FE38 电导率仪的使用和维护保养。本规程适用于 XX 公司 METTLER TOLEDO FE38 ...
FE2.1usb hub原理图,diy usb hub
USB集线器芯片 FE2.1 的中文手册, 包含每一个引脚的使用说明. 个人使用特别说明: 1: 内部集成了上电复位电路, 外围可以省了. 2: 5V,3V,1.8v三个输入口, 加10uF电容, 其它都不用大电容 ,100uF什么的, 用不上 3: ...
铁粉在高温氮化氛围下能够形成强磁性铁氮化合物Fe4N,为了研究其材料中不同占位Fe的磁性差异,文中运用基于密度泛函理论下的第一性原理平面波赝势方法,通过实验上测量出的空间结构群、晶格常数和原子坐标来建立Fe4N...
FE2.1原理图和PCB文件,Protel99SE原始文档。内附SCH和PCB文件。
java提取汉字拼音首字母的代码,简体中文的编码范围从B0A1(45217)一直到F7FE(63486),不支持多音字处理
FE1.1s用于USB集线器的解决方案,是一款不错的芯片,值得推荐
G-140W-CS = 3FE46330AAAA G-140W-C = 3FE46330ABAA G-140W-C = 3FE46330ACAA G-140W-C = 3FE46330BAAA G-140W-C = 3FE46330BBAA G-140W-C = 3FE46330CAAA G-140W-C = 3FE46330CBAA G-140W-C = 3FE46330DAAA G-140W-...
美国工程师考试参考手册(包括计算机工程师)_FE exam reference book
冰蓝科技推出的一款将可以使用java代码将pdf转换为word、excel、img等其他文件格式的jar包工具