pat*_*957 3 xhtml jsf glassfish primefaces internet-explorer-9
我需要我的应用程序在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">
Run Code Online (Sandbox Code Playgroud)
但是,在"脚本"选项卡下,它显示:
<!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">
Run Code Online (Sandbox Code Playgroud)
我查看了所有的页面和模板,没有在哪里可以找到meta content ="IE = 8.0000"或上面显示的!DOCTYPE.这很奇怪.
我的所有页面都有:
<!DOCTYPE html>
Run Code Online (Sandbox Code Playgroud)
我的主要模板有:
<!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">
Run Code Online (Sandbox Code Playgroud)
其他页面有:
<!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" >
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的事情:
1)将Glassfish JSF更新为2.1.17,因为我读到旧版Mojarra存在一个错误导致它忽略了DOCTYPE.
2)我补充说:
<meta http-equiv="X-UA-Compatible" content="IE=9" >
Run Code Online (Sandbox Code Playgroud)
每个页面,希望它会强制执行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">
Run Code Online (Sandbox Code Playgroud)
不确定XHTML是否需要这个严格的DOCTYPE来正确渲染.但这没效果.
任何帮助都会很棒.我已经做了很多研究试图解决这个问题,但是我不熟悉Web开发,所以我的理解非常有限.
我补充说:
Run Code Online (Sandbox Code Playgroud)<meta http-equiv="X-UA-Compatible" content="IE=9" >每个页面,希望它会强制执行IE9,但这不起作用.
根据此meta标签上的MSDN文档,
X-UA-Compatible标头不区分大小写; 但是,它必须出现在除了title元素和其他元元素之外的所有其他元素之前的网页标题(HEAD部分)中.
这必须出现在所有其他元素期望<title>和其他<meta>元素之前.如果你仔细研究JSF/PrimeFaces生成的HTML,你会发现<link>之前有一个PrimeFaces特定元素会阻止X-UA-Compatible标题执行它的工作.
PrimeFaces 支持多个方面,<h:head>以便您可以控制头资源的排序.以下内容应该为您做到:
<f:facet name="first">
<meta http-equiv="X-UA-Compatible" content="IE=9" />
</f:facet>
Run Code Online (Sandbox Code Playgroud)
同样,这是针对PrimeFaces的,而不是标准的JSF.
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |