我的jsp页面中有以下代码行。
<!--[if lt IE 7]><html lang="en" class="no-js lt-ie10 lt-ie9 lt-ie8 lt-ie7" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]-->
<!--[if IE 7]><html lang="en" class="no-js lt-ie10 lt-ie9 lt-ie8" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]-->
<!--[if IE 8]><html lang="en" class="no-js lt-ie10 lt-ie9" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]-->
<!--[if IE 9]><html lang="en" class="no-js lt-ie10" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <![endif]-->
<!--[if gt IE 9]><!--><html lang="en" class="no-js" xmlns="http://www.w3.org/1999/html" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> <!--<![endif]-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
//some code
</html>
代码在IE7和所有浏览器中都能正常运行。但是,当我使用IE9时,它会在IE控制台中提供错误,并且页面不会呈现。
日志:IE文档模式不兼容
请帮帮我。
谢谢!
答案 0 :(得分:1)
doctype必须是HTML文件中的第一行。您还打开HTML标记两次,每次IE条件一次,然后再次下面。
如果您计划支持IE以外的浏览器,那么使用条件包装HTML标记不是一个好的解决方案,因为无法为其他浏览器定义HTML标记,因为它们会忽略条件注释。
一种解决方案是将所有类添加到HTML标记,然后根据IE的版本有条件地导入css文件。这些文件将根据浏览器定义您需要的类;例如ltIE7.css
将定义.lt-ie7类,ltIE8.css
将定义.lt-ie8类等。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html class="no-js lt-ie10 lt-ie9 lt-ie8 lt-ie7" lang="en" xml:lang="en" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="ltIE7.css"/><![endif]-->
<!--[if lt IE 8]><link rel="stylesheet" type="text/css" href="ltIE8.css"/><![endif]-->
<!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="ltIE9.css"/><![endif]-->
<!--[if lt IE 10]><link rel="stylesheet" type="text/css" href="ltIE10.css"/><![endif]-->
</head>
<body>
...
</body>
</html>
或者,如果您不想使用外部CSS文件,可以使用head
中的条件注释来内联定义类:
<style type="text/css">
<!--[if lt IE 7]>
.lt-ie7 {...}
<![endif]-->
<!--[if lt IE 8]>
.lt-ie8 {...}
<![endif]-->
<!--[if lt IE 9]>
.lt-ie9 {...}
<![endif]-->
<!--[if lt IE 10]>
.lt-ie10 {...}
<![endif]-->
</style>