在http头文件中设置X-UA-Compatible不会';t在浏览器中更改html的document.documentMode

在http头文件中设置X-UA-Compatible不会';t在浏览器中更改html的document.documentMode,html,internet-explorer,Html,Internet Explorer,我有一个支持IE9(IE10兼容模式)的应用程序,我正在尝试在IFrame中查看另一个应用程序(仅支持IE10)。对于调用子应用程序页面的父应用程序的特定页面,我希望在“IE=edge”或“IE=10”中呈现父页面和子页面,以便子应用程序的功能正常工作 我编写了一个servlet过滤器来解释请求,并设置User-Agent和X-UA-Compatible的值。但是,当呈现页面时,document.documentMode的值仍然显示为“8”,即javascript中的IE 8。我想知道我做错了什

我有一个支持IE9(IE10兼容模式)的应用程序,我正在尝试在IFrame中查看另一个应用程序(仅支持IE10)。对于调用子应用程序页面的父应用程序的特定页面,我希望在“IE=edge”或“IE=10”中呈现父页面和子页面,以便子应用程序的功能正常工作

我编写了一个servlet过滤器来解释请求,并设置User-Agent和X-UA-Compatible的值。但是,当呈现页面时,document.documentMode的值仍然显示为“8”,即javascript中的IE 8。我想知道我做错了什么。粘贴下面的代码片段,如有任何帮助,将不胜感激:-

public class DocumentsFilter implements Filter {

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain    filterChain) 
                throws IOException, ServletException {

         HttpServletResponse resp = (HttpServletResponse)servletResponse;
         resp.addHeader("X-UA-Compatible", "IE=10");

         String ua = ((HttpServletRequest) servletRequest).getHeader("User-Agent");
         ua = ua.replaceAll("MSIE 7.0", "MSIE 10.0");
         resp.setHeader("User-Agent", ua);

         filterChain.doFilter(servletRequest, servletResponse);

   }

}

非常感谢您的帮助。

您确定要设置doctype吗?IE的旧版本在没有它的情况下自动恢复到怪癖模式。

阅读本文后,这听起来是浏览器决定如何呈现页面的一个重要因素。即使设置了X-UA-Compatible标志,除非将DocType设置为适当的值,否则页面仍将呈现为浏览器的旧版本。如果这个假设不正确,请告诉我。

为什么不修复您的网站以支持所有现代浏览器?因为我们使用的是专有应用程序,需要对该应用程序进行全面升级,这是一项重大工作。因此,呈现的页面实际上是由专有技术呈现的,因此我无法控制实际的HTML页面内容。然而,当我做“查看源代码”时,我看到了以下内容:-根据您粘贴的链接,这看起来像“几乎是标准模式”。这就是为什么它呈现为IE8吗?因此,在删除过滤器之后,我添加了document.documentMode值,该值始终打印为“5”。因此,我的过滤器使它一直运行到“8”,即IE 8,但不直到IE 10,这是我想要的。