开源WebMail客户端Intouch2.2beta导致IE6崩溃的原因和修改方法

来源:互联网 发布:书网源码 编辑:程序博客网 时间:2024/05/16 19:36

单位用James+mySql+intouch2.2beta+Tomcat构建企业邮箱,使用IE6登录Intouch界面时会导致浏览器崩溃,IE6无显示退出,并弹出错误提示。搜索后发现原来是IE6的bug导致崩溃,常见的有六种情况会导致崩溃,“CSS教程:汇总让IE6崩溃的几种方法”这篇文章在网上被大量转载,随便就可以搜索到一大堆。分析Intouch的界面和出现错误的时机,可以判断错误应该属于第一种情况,即“设置scrollbar-base-color,css里给table做了定位,再通过js改变其定位IE6就崩溃了”。经过试验,产生这种崩溃错误需要一下三个条件:

1、定义CSS style,包括css文件或内嵌css,在其中html或body定义有scroll-xxxx-color属性定义的,如crollbar-base-color、scrollbar-highlight-color等等。我测试的结果是任何一种带有scroll color的属性设置都会导致错误。

2、一个DIV元素或Table元素用CSS文件或嵌入css或用元素的style属性设置了元素的绝对位置。

3、使用javascript脚本改变元素的原来位置值。

同时满足以上3个条件,就会导致IE6崩溃。

对于Intouch2.2来说,许多常用的css文件中都设置了scroll-xxxx-color属性,导致IE崩溃的是Intouch的常用选项设置layout。是一个ID为“preferences”的DIV元素,在all.css中设置了其固定位置为顶端-300px,在显示该元素时使用了免费的Rico组件,用方法rico.effect.position对该元素进行动态滑动显示,也就是不断改变该元素的显示位置,达到从顶端至下逐渐滑动显示的效果。也正是因为如此,导致上述三个条件都满足了,因此也就使IE6崩溃。注意到IE7修补了相关bug,不会崩溃。

修改的办法就是破坏上述3个条件中的任一个,经过权衡,我的修改办法是去掉滑动显示,让“preferences”直接固定在浏览窗口中间位置,只是显示和隐藏,不在滑动显示。修改的代码在layout.js中,修改showPreferences()、hidePreferences()方法即可。

原创粉丝点击