IE8中有“Internet Explorer 8”、“Internet Explorer 8兼容模式”和IE7模式。
但是,IE 中的默认设置使所有 Intranet 网站都使用“IE8 兼容模式”,即使我已按照建议设置了 doctype、元标记、http 标头以强制其进入 IE8 模式。
我有
和
但它仍然进入“IE8 兼容模式”,IE 设置没有任何变化。
如何在不更改任何浏览器设置的情况下强制它进入纯“IE8”模式?
PS。我不是在说“文档模式”。
似乎 MSFT 没有考虑我们在内部运行许多不同的 Web 应用程序的大型 Intranet 环境。
根据我在 MSDN 论坛上读到的某处,无法绕过 IE8 设置。
因此,我将不得不请求我的系统管理员设置一些新的组策略来更改“兼容性视图”设置和值并防止用户更改值,直到 MSFT 发现这个错误并修复它。
来自 MSDN blog post(强调他们的):“在 IE 请求网页内容之前选择浏览器模式。这意味着网站无法选择浏览器模式。”
可以覆盖 Intranet 中的兼容模式。只需将以下代码添加到 web.config。使用 IE9 为我工作。
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
X-UA-Compatible
对浏览器模式没有任何作用。答案是绝对不正确的。
您必须对 IE 进行一些调整。
他们来了.....
在 Internet 选项/本地 Intranet/站点中
在:站点内的本地 Intranet 下,取消选中“自动检测 Intranet 网络”。
然后只选择“包括所有网络路径 (UNCs)
请参阅随附的屏幕截图
https://i.stack.imgur.com/U0gnD.png
我发现这里的答案很难理解,所以简而言之,这里是重要信息:
如果您的 Intranet 使用 IE 的默认设置,则无论任何网站设置如何,都会对 Intranet 站点强制执行 IE7 标准模式。
从 this:
兼容性视图和企业 如今,大量的业务线网站都支持 Internet Explorer 7。为了保持兼容性,Internet Explorer 8 附带了基于区域评估的智能默认值。在默认状态下,公共 Internet 上的所有站点都以 Internet Explorer 8 标准模式(兼容性视图关闭)显示,所有 Intranet 网站都以 Internet Explorer 7 标准模式(兼容性视图打开)显示。让我们看一些例子。如果您导航到本地 Intranet 上的站点,例如 http://myPortal 和 http://sharepoint/sites/mySite,Internet Explorer 8 会使用用户代理字符串“7”、版本向量“7”来标识自己,并显示在 Internet Explorer 7 标准模式中触发标准模式的网页。这种组合允许在 Internet Explorer 7 中正常运行的网页在 IE8 中继续运行。
X-UA-Compatible
标头。在网络上管理本地机器设置让我觉得这是一项艰巨的任务。
要覆盖 Intranet 或所有网站的兼容性视图设置,您需要让 IE8 模拟自己。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
设置自定义 HTTP 标头,而不是使用 <head>
部分中的 <meta...
。这些应该是等效的,但我已经看到来自服务器的 X-UA-Compatible
HTTP 标头将覆盖 IE 8 的“在兼容性视图中显示 Intranet 站点”设置,而 <meta...
元素不会。
X-UA-Compatible
时最终会进入的文档模式。因此,虽然可以更改文档模式,但我认为不能更改浏览器模式。这不被视为一个问题,因为它是影响页面呈现的文档模式。您是否有理由需要更改浏览器模式,也许是为了某些 UA 字符串嗅探?你让我很好奇。你能在没有打开开发工具的情况下分辨出区别吗?
meta
版本不是有效的 HTML5;正如@David Kolar 所建议的那样,甚至 MS 也建议使用 HTTP 标头:msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx
如果您使用的是 .NET,我可以为您解答:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8" >
网络配置:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=8" />
</customHeaders>
</httpProtocol>
在某处读到 DOCTYPE 声明必须是第一行。没有任何评论,也没有空行。
结合设置 HTTP 响应标头,这对我有用。 Browser Mode
从“IE9 兼容模式”变为“IE9 模式”。
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\BrowserEmulation IntranetCompatibilityMode 1-->0
为了使 META 声明起作用,文档类型必须是简化版本:
<!DOCTYPE html>
不是丹尼斯问题中较长的陈述。
这个组合对我有用:
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
</HEAD>
至少 IE 开发者工具报告 IE9 Compat View, IE8 标准
只是为了好玩,我尝试了 EmulateIE7,效果也很好。简化扩展的 !DOCTYPE 是关键。
您需要从您的域名站点名称中删除端口号 site:1180/index/
如果浏览器在 url 中看到端口号 - 嗨“think”,那就是 Intranet。
设置您的 dns 服务器以获得友好的 url - site.com/index 并且它工作正常
标记为“正确”的答案在技术上是正确的,但表明大多数人面临的真正问题没有解决方案,即:“我如何在 IE8 上正确显示,启用兼容模式,不支持的 Web 应用程序兼容模式?”。
<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>
这在几个工作站上对我有用。
如果上面的代码是在应用程序端实现的,IE8 的行为就好像它不是在兼容模式下一样,尽管它仍然会将浏览器模式显示为兼容模式。
X-UA-Compatible
标签应该 override 浏览器会使用的模式,不是吗?