简介

这个BUG是关于<!DOCTYPE>标签的。

这个标签一般可以简单的写作:

<!DOCTYPE HTML>
表示这是一个HTML文档

对于HTML 4.01的三个标准分别还有三种写法 详见http://www.w3school.com.cn/tags/tag_doctype.asp

发现

最近使用eclipse做jsp网页,其中自动生成的<!DOCTYPE>标签为:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
乍一看也没什么问题,平时也没注意到有什么问题

当用jQuery时就出现问题了:

正常显示:

不正常显示:

不正常的地方: 对话框的标题变高了,Cancel和ok按键也是位置变高了

一开始我还以为是Opera内置的默认样式的问题(IE,chrome,firefox下正常显示),把默认样式覆盖掉,依旧还有这样的问题

然后,采用原始的办法,把页面中其他元素去掉,只留这个对话框所必须的,再把jsp生成的源代码和正常显示的代码一行行相比较……

最终发现是<!DOCTYPE>这个元素的问题:估计是Opera找不到那个DTD。

解决

把jsp中<!DOCTYPE>改成一下两种即可正常显示:

<!DOCTYPE html> <!-- 使用默认DTD也行 -->
 或

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
无论用HTML或XHTML最后这个URL都要指定,防止找不到DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。