我遇到了内部部署的 Intranet 站点(所以没有链接,抱歉)和 Internet Explorer 9 的问题。
该网站是一个 Rails 3 应用程序,使用 HTML 5,没有任何特别之处 - 没有 javascript,只有 html 和 CSS。HTML 已成功验证(使用 W3C 验证器)。
网站上的用户都拥有 Windows XP 上的 Internet Explorer 8 或 Windows 7 上的 Internet Explorer 9。使用 IE8 的用户可以按预期使用该网站,就像我使用 Chrome 一样。
虽然使用 IE9 的用户可以查看页面,但如果他们尝试提交表单,IE 会加载空白页,其中源代码仅包含 html、head 和 body 标签。然后他们发现无法查看内联网上的任何页面,并且 IE 后退按钮不起作用。如果我在内联网服务器上使用 tcpdump,我可以看到当用户单击提交时,客户端不会通过线路发送任何数据,因此我只能假设空白页(及其源代码)是由 IE 生成的。
我已确保 IE 检测到该站点位于“Intranet 区域”,并且该区域的默认安全设置为“中低”。我尝试过打开兼容模式(Intranet 站点的默认设置)和关闭兼容模式。
更糟糕的是,行为不一致 —— 大约 5% 的时间表单成功提交,其余时间我们都会得到上述结果。
我感觉我缺少了一些基本的东西——我缺少什么?
答案1
兼容模式实际上可以由服务器控制,这将覆盖客户端上的设置。您应该检查源代码中是否有以下 html:
<meta http-equiv="X-UA-Compatible" content="xxxx" >
如果是这样,您可能需要使用 content="IE-edge" 进行测试,或者至少验证它是否已在您认为应该使用的模式下进行了测试。我还会在低安全区域中对其进行测试。
定义文档兼容性
http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx#SetMode
答案2
根据您所使用的 Web 服务器,当 IE9 浏览器尝试提交数据时,您还应该检查服务器日志中是否存在错误。
如果你进入开发者工具(F12),将浏览器模式和文档模式改为不同的浏览器类型,你还能成功提交吗?