gpt4 book ai didi

java - Internet Explorer 9 将无法识别 servlet 从 weblogic 服务器发送的文档类型并以文档模式 IE7 呈现 - 启动前有额外字符?

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:26 25 4
gpt4 key购买 nike

问题

Internet Explorer 9 不采用 <!DOCTYPE html>当我在本地或服务器上拥有页面时,以同样的方式考虑。我做了一个简单的测试页面来突出问题:

编辑:使用元标记和 CSS 链接更新了简单测试页面

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="css/environmentinfo.css" />
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
</head>
<body>
<script>
document.write(document.compatMode);
document.write('<br/>');
document.write(document.documentMode);
</script>
</body>
</html>

当我在 IE9 中打开本地系统上的文件时,它显示:

CSS1Compat

9

当我将其部署到服务器上时,它显示:

CSS1Compat

7

服务器

所以我从 weblogic 服务器提供该文件。它部署在一个简单的 war 存档中,并由默认 servlet 提供服务。本地文件仅由文件系统提供服务(地址栏中的 C:...\test.html)。

调试信息

我研究了编码(两者相同)和存在的有效字符(通过notepad++和wireshark)。

本地文件:

<!DOCTYPE html>\r\n
<html lang="en">\r\n
<head>\r\n
</head>\r\n
<body>\r\n
<script>\r\n
document.write(document.compatMode);\r\n
document.write('<br/>');\r\n
document.write(document.documentMode);\r\n
</script>\r\n
</body>\r\n
</html>

服务器响应:

HTTP/1.1 200 OK\r\n
Date: Fri, 13 Mar 2015 12:34:26 GTM\r\n
Accept-Ranges: bytes\r\n
Content-Length: 427\r\n
Content-Type: text/html\r\n
Last-Modified: Fri, 13 Mar 2015 12:29:30 GMT\r\n
X-Powered-By: Servlet/3.0 JSP/2.2\r\n
\r\n
<!DOCTYPE html>\r\n
<html lang="en">\r\n
<head>\r\n
</head>\r\n
<body>\r\n
<script>\r\n
document.write(document.compatMode);\r\n
document.write('<br/>');\r\n
document.write(document.documentMode);\r\n
</script>\r\n
</body>\r\n
</html>

我查看了其他一些类似的问题,发现 IE 会忽略 <!DOCTYPE html>如果它前面有任何字符。我检查了 html 规范,它规定了标题,然后是换行符,然后是文档的开头。所以看起来没有多余的字符。使用wireshark,我可以看到实际的字节,并且似乎没有任何额外的字符。答案、提示甚至其他值得一看的东西都将不胜感激。

最佳答案

IE 可能有一些覆盖 <!doctype html> 的配置设置在标记中。根据https://msdn.microsoft.com/en-us/library/ie/jj676914(v=vs.85).aspx :

Pages opened in the Intranet zone might be treated differently, depending on the configuration of the browser, the presence of group policy options, and other factors.

尝试检查上面文章中列出的位置。

除此之外,您还可以尝试使用 X-UA-Compatible 强制文档兼容模式。 HTTP header 或 <meta>标记为 https://msdn.microsoft.com/en-us/library/ie/jj676913(v=vs.85).aspx

在某些令人讨厌的情况下,当符合标准的页面加载到由怪异页面托管的 iframe 内时,可能需要重新加载 iframe 以强制其进入正确的文档模式。

请注意,一旦 IE 开始渲染页面,文档模式就已最终确定,并且无法即时更改。因此,关于文档模式的每条指令都必须尽早出现。例如,正如您已经提到的,<!doctype html>必须是第一行,<meta>X-UA-Compatible必须是 <head> 中的第一个标签。我想说,如果您可以控制服务器端,请使用 HTTP header 而不是 <meta>以确保它在任何渲染发生之前切换文档模式。

关于java - Internet Explorer 9 将无法识别 servlet 从 weblogic 服务器发送的文档类型并以文档模式 IE7 呈现 - 启动前有额外字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29033551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com