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