我需要我的应用程序以 IE9 文档标准运行,但我无法弄清楚为什么它会自动以 IE8 文档标准呈现。
我正在使用在 Glassfish 3.1.2 中运行的 JSF 2.1.17 和 Primefaces 3.4。我的 IDE 是 Netbeans-7.1.2。当我在 IE 中打开开发人员工具时,在“HTML”选项卡下显示:
<--!DOCTYPE html-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
但是,在“脚本”选项卡下,它显示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML lang=en xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<HEAD>
<META content="IE=8.0000" http-equiv="X-UA-Compatible">
我浏览了我所有的页面和模板,但在哪里找不到 meta content="IE=8.0000" 或上面显示的 !DOCTYPE。这很奇怪。
我所有的页面都有:
<!DOCTYPE html>
我的主要模板有这个:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
其他页面有:
<!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="/layout/someFile.xhtml" >
以下是我尝试过的事情:
1) 将 Glassfish JSF 更新到 2.1.17,因为我读到旧版本的 Mojarra 存在一个错误,导致它忽略 DOCTYPE。
2)我补充说:
<meta http-equiv="X-UA-Compatible" content="IE=9" >
到每个页面,希望它会强制执行 IE9,但这不起作用。
3)然后我尝试使用 content="IE=Edge",仍然没有变化。
4)我将我的 DOCTYPE 更改为:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
不确定 XHTML 是否需要这种严格的 DOCTYPE 才能正确呈现。但这没有用。
任何帮助都会很棒。我做了很多研究试图解决这个问题,但是我是网络开发的新手,所以我的理解非常有限。