?
我们写惯性的让dreamweave,eclipse之类的工具帮我们生成html,jsp页面的主体部分。但是正是这个习惯,和我们的ymPrompt的兼容产生了一个小的bug。
doctype申明是生成文件的一部分,虽然大多数Web文档的顶部都有doctype声明,但很多人都没有注意它。虽然doctype被许多人忽视,但在遵循标准的任何Web文档中,它都是一项必需的元素。doctype会影响代码验证,并决定了浏览器最终如何显示你的Web文档。如:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd ">
我们知道它申明版本,规则。这个规则决定了很多东西,在IE8中这个申明就和ymPrompt提示组件中的alert函数产生了冲突,当我们使用alert时,如:
{{ ymPrompt.alert(
Unknown macro: {title}
{}}}{}
);
它会有一个确定按钮,当我们点击确定的时候,它会反色将原来的可操作区屏蔽,这是一个很不友好的屏蔽,每次你都得重新来登陆你的页面。这一切都是在IE8中doctype与ymPrompt冲突产生的bug.
我根据不同的申明做了相同的测试,发现4.01之前版本的html类型的doctype都不会有这种问题,如:
HTML 2:
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
HTML 3.2:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
但是其他的4.01以上的html版本以及一些像xhtml版本就不行,具体测试过的有:
HTML 4.01 Strict:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd ">
HTML 4.01 Transitional:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd ">
HTML 4.01 Frameset:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd ">
XHTML 1.0 Strict:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ">
XHTML 1.0 Transitional:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
XHTML 1.0 Frameset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd ">
XHTML 1.1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
XHTML 1.1 plus MathML plus SVG:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd ">
当然你可以不写doctype,这样它默认的好像是html2.0版本的。