Я сделал сайт интрасети в jsf, primefaces. из-за IE 9 по умолчанию он открывается в представлении совместимости. я знаю, что я должен использовать тег
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
но он не работает, а показывает
HTML1115: X-UA-совместимый тег META ('IE = edge') игнорируется, поскольку режим документа уже завершен.
я использовал тег как таковой
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Wan</title>
</h:head>
это то, что он показывает в инструментах разработчиков
<head>
<TITLE>Wan</TITLE><LINK rel=stylesheet type=text/css href="/Wan/javax.faces.resource/theme.css.jsf?ln=primefaces-redmond"><LINK rel=stylesheet type=text/css href="/Wan/javax.faces.resource/primefaces.css.jsf?ln=primefaces&v=5.1">
<SCRIPT type=text/javascript src="/Wan/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces&v=5.1"></SCRIPT>
<SCRIPT type=text/javascript src="/Wan/javax.faces.resource/primefaces.js.jsf?ln=primefaces&v=5.1"></SCRIPT>
<SCRIPT type=text/javascript src="/Wan/javax.faces.resource/jquery/jquery-plugins.js.jsf?ln=primefaces&v=5.1"></SCRIPT>
<LINK rel=stylesheet type=text/css href="/Wan/javax.faces.resource/charts/charts.css.jsf?ln=primefaces&v=5.1">
<SCRIPT type=text/javascript src="/Wan/javax.faces.resource/charts/charts.js.jsf?ln=primefaces&v=5.1"></SCRIPT>
<STYLE id=ex_canvas_>canvas {
TEXT-ALIGN: left; WIDTH: 300px; DISPLAY: inline-block; HEIGHT: 150px; OVERFLOW: hidden
}
</STYLE>
<LINK rel=stylesheet type=text/css href="/Wan/javax.faces.resource/wanstyle.css.jsf?ln=css">
<META content=IE=edge http-equiv=X-UA-Compatible>
Я предполагаю, что это происходит так, как упоминалось во многих других сообщениях, метатег должен быть в верхней части головы, но я не знаю, как я мог это достичь.
как сделать мой метатег первым признаком в моем приложении
это то, что показывает консоль в IE.
HTML1202: http://10.164.210.37:8080/Wan/welcome.jsf is running in Compatibility View because 'Display intranet sites in Compatibility View' is checked.
welcome.jsf
HTML1115: X-UA-Compatible META tag ('IE=edge') ignored because document mode is already finalized.
welcome.jsf
S15: :visited and :link styles can only differ by color. Some styles were not applied to :visited.
В jsf PrimeFaces вам необходимо использовать следующее, чтобы изменить порядок тегов
<f:facet name="first">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</f:facet>
Он переместил мета в верхнюю часть сгенерированного заголовка, используя этот код, и он работал
из следующей ссылки
Вы можете использовать фильтр сервлета для его решения
Добавьте это в свой web.xml
<filter>
<filter-name>EdgeFilter</filter-name>
<filter-class>com.my.package.filter.EdgeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EdgeFilter</filter-name>
<url-pattern>*.jsf</url-pattern>
</filter-mapping>
Код Java:
public class EdgeFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
ServletException {
if (((HttpServletRequest) req).getRequestURI().endsWith(".js.jsf")
|| ((HttpServletRequest) req).getRequestURI().endsWith(".css.jsf")) {
chain.doFilter(req, res);
} else {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("X-UA-Compatible", "IE=edge"); // No more Compatibility Mode
chain.doFilter(req, res);
}
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}