1. 问题背景
在开发“客户群成员关系图”功能时,用到了关系图组件MxClient库,在开发过程中,发现该组件在IE8及IE9下有兼容性问题:不能展示图形节点的背景图及样式、不能展示关系图之间的连接线。在IE8兼容模式下、在IE6及IE7下都能正常展示,在IE8标准模式及IE9标准模式下,都不能正常展示。
2. 问题现象
不能正常展示的现象如果下图所示:
3. 问题原因
在排查原因的过程中,发现同样的关系图展示代码,在另外的模块(客户族群管理),能够正常展示关系图数据,由此判断关系图使用的组件库虽有兼容性问题,但此问题是可以解决的。经过多次排查和代码比较,最终发现原因是在JSP文件中,缺少“文档类型定义”引起的。y
4. 解决办法
在JSP页面文件的最前面,增加文档类型定义声明,增加这行代码:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">,经验证,关系图组件库,支持文档类型定义“Strict、Transitional、Frameset”中的“Transitional、Frameset”,不支持“Strict”。增加的一行代码如下图所示:
5. 问题解决后的效果
6. 附注:文档类型定义
HTML
HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。
HTML Strict DTD
如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd">
HTML Transitional DTD
Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时,请使用此类型:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd">
Frameset DTD
Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "
http://www.w3.org/TR/html4/frameset.dtd">