Html 强迫;Internet Explorer 8“;intranet中的浏览器模式

Html 强迫;Internet Explorer 8“;intranet中的浏览器模式,html,internet-explorer-8,ie8-compatibility-mode,x-ua-compatible,ie8-browser-mode,Html,Internet Explorer 8,Ie8 Compatibility Mode,X Ua Compatible,Ie8 Browser Mode,IE8中有“Internet Explorer 8”、“Internet Explorer 8兼容模式”和IE7模式 然而,IE中的默认设置使所有intranet网站使用“IE8兼容模式”,即使我已经按照建议设置了doctype、meta标记、http头,以强制其进入IE8模式 我有 及 但它仍然进入“IE8兼容模式”,IE设置没有任何变化 如何强制它进入纯“IE8”模式,而不改变任何浏览器的设置 另外,我这里不是说“文档模式”。您必须对IE进行一些调整 在这里 在Internet选项/本地

IE8中有“Internet Explorer 8”、“Internet Explorer 8兼容模式”和IE7模式

然而,IE中的默认设置使所有intranet网站使用“IE8兼容模式”,即使我已经按照建议设置了doctype、meta标记、http头,以强制其进入IE8模式

我有

但它仍然进入“IE8兼容模式”,IE设置没有任何变化

如何强制它进入纯“IE8”模式,而不改变任何浏览器的设置


另外,我这里不是说“文档模式”。

您必须对IE进行一些调整

在这里

在Internet选项/本地Intranet/站点中

在:站点内部的本地Intranet下,取消选中“自动检测Intranet网络”

然后选择“仅包含所有网络路径(UNC)”

请参阅附加的屏幕截图


设置自定义HTTP报头而不是使用<代码> < P>似乎MSFT没有考虑到我们有很多不同的Web应用程序运行在大型Intranet环境中。

据我在MSDN论坛上读到的某个地方说,没有办法绕过IE8设置

因此,我将不得不请求我的系统管理员使用一些新的组策略来更改“兼容性视图”设置和值,并防止用户更改值,直到MSFT发现并修复此错误


来自(强调):“浏览器模式在IE请求web内容之前选择。这意味着网站无法选择浏览器模式

我发现这里的答案很难理解,因此这里简单介绍一下重要信息:

如果您的intranet使用IE的默认设置,则无论任何网站设置如何,都会对intranet站点强制使用IE7标准模式

发件人:

兼容性视图与企业

大量的业务线 网站是InternetExplorer7 今天有能力。为了保存 兼容性,Internet Explorer 8 附带基于的智能默认值 区域评估。在默认状态下, 公共互联网上的所有网站 在Internet Explorer 8中显示 标准模式(兼容性视图) 关闭)和所有内部网站 在Internet Explorer 7中显示 标准模式(兼容性视图 上)

让我们看一些例子。如果你 导航到本地服务器上的站点 类内联网和 , Internet Explorer 8使用用户代理字符串标识自身 '7','7'的版本向量,以及 显示触发的网页 Internet Explorer 7中的标准模式 标准模式。这种组合 允许正常工作的网页 在Internet Explorer 7中继续 在IE8中这样做


要覆盖intranet或所有网站的兼容性视图设置,您需要使IE8模拟自身

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >

可以覆盖intranet中的兼容模式。只需将下面的代码添加到web.config中即可。这是我用IE9编写的

<system.webServer>
<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=edge" />
  </customHeaders>
</httpProtocol>


HKEY\U当前用户\软件\ Microsoft\Internet Explorer\BrowserEmulation
IntranetCompatibilityMode 1-->0

在某个地方读到DOCTYPE声明必须是第一行。没有任何注释,也没有空行


结合设置HTTP响应头,这对我很有效。
浏览器模式
从“IE9兼容模式”变为“IE9模式”。

为了使元声明工作,doctype必须是简化版本:

<!DOCTYPE html>


不是丹尼斯问题中较长的陈述。

如果您使用的是.NET,我有答案给您:

HTML

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" >

Web.Config:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=8" />
      </customHeaders>
    </httpProtocol>

这个组合帮了我的忙:

<!DOCTYPE HTML>
<HEAD>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
</HEAD>

至少IE开发者工具报告IE9 Compat视图、IE8标准

只是为了好玩,我试着模仿,效果也不错。
简化扩展的!DOCTYPE是关键。

您需要从域名中删除端口号 站点:1180/index/

若浏览器在url-hi“think”中看到端口号,那个就是intranet

为友好的URL设置dns服务器-site.com/index,它工作正常

标记为“正确”的答案在技术上是正确的,但表明没有解决大多数人面临的真正问题的方法:“如何在启用兼容模式的情况下在IE8上正确显示,不支持兼容模式“”的web应用程序


这在几个工作站上对我有效


如果上面的代码是在应用程序端实现的,IE8的行为就好像它不在兼容模式下一样,即使它仍然将浏览器模式显示为兼容模式。

不幸的是,它不起作用。检查HTTP头是否具有X-UA-Compatible:IE=8,但它仍然进入“IE8 Compative”“模式。我现在对你的问题有了更好的理解。浏览器模式只会影响UA字符串,以及当未指定
X-UA-Compatible
时,您最终使用的文档模式。因此,虽然文档模式可以改变,但我认为浏览器模式不能。这并不是一个问题,因为影响页面呈现的是文档模式。您是否需要更改浏览器模式(可能是为了进行UA字符串嗅探)?你让我好奇。如果没有打开开发者工具,你能分辨出两者的区别吗?David,有些javascript在两种模式下表现不一样(而且你永远找不到完整的详细列表),有些IE特有的功能甚至在真正的IE8模式下被禁用。这就是为什么它们是两种模式,而不是一种。当用户使用相同的浏览器时,我希望他们看到并运行相同的浏览器;不是同一个版本,不同的浏览器。我只是找到了关于这个主题的更多细节。另外
<!DOCTYPE HTML>
<HEAD>
    <meta http-equiv="X-UA-Compatible" content="Edge" >
</HEAD>