Internet Explorer 11通过元标记禁用“在兼容性视图中显示Intranet网站”


100

我一直在Intranet网站上工作超过6个月,因为我一直在使用下面的html5 doctype和Edge兼容性元标记来强制Internet Explorer不要模拟旧版本的浏览器,所以此方法正常。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

之所以这样做,是因为我的工作地点使用策略设置来启用所有Intranet站点的兼容性视图,并且这种使用该EDGE设置的方法在Internet Explorer 9中有效。

内联网站点兼容性视图设置

一个多月前,我已升级到Internet Explorer 11,该站点仍按预期运行。

今天,它按预期停止了工作,我不能肯定地说,但是我认为在IE11中未启用强制兼容性视图的策略,而现在它已...由于已启用,兼容性元标记不再可以完成预期的工作,并且此站点正在以模仿IE8的企业模式运行。

有谁知道如何解决此问题并强制实施兼容性“企业模式”时强制将IE11用于Intranet站点?不能通过浏览器设置禁用?

编辑

我刚刚尝试按照此答案中的说明在我的web.config中添加自定义标头 https://stackoverflow.com/a/18257208/98706

而且这对我不起作用,我仍然在开发人员工具栏控制台中收到以下消息

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

edge在IE11中启用此Intranet兼容性设置时,就好像将版本8视为。

这篇文章:https : //www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode 很好地说明了这一点,我还没有尝试通过代码和我们的用户无权更改其浏览器设置。.其他更改尚未生效。

更新

请参阅我对这篇文章的评论,因为企业模式和兼容模式之间的区别很重要,因为它很重要。


企业模式与兼容性视图不同,请参见stackoverflow.com/a/26463309/98706以了解禁用它的方法,但就我而言,它并不像能够将其关闭一样简单,我想针对特定的Intranet站点覆盖它使用meta标签,但这没有用,因为我们的网站现在已列入白名单,所以我没有再尝试过。
昂贵的2015年

Answers:


93

确保:

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

<meta>您页面上的第一个标签,否则IE可能不会尊重它。

或者,问题可能是IE正在为此网站使用企业模式

  • 您的问题提到控制台显示: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • 如果是这样,您可能需要禁用企业模式(或类似方式),或者从IE中的“工具”菜单为该网站关闭它。
  • 但是从理论上讲,企业模式应该被X-UA-Compatible标记所覆盖,但是IE可能有一个错误...

是的,我已经这样做了,不幸的是它没有用:(
昂贵,2014年

可能是该网站已启用企业模式(根据您的问题)...我已经更新了答案,请告诉我是否有帮助
麻雀

2
尽管相似,但“企业模式”和“兼容性视图”不同。即使勾选了“在兼容性视图中显示Intranet站点”,X-UA-Compatible标签也应覆盖它。但是,企业模式可能会覆盖……您在网站上看到企业模式图标(media.askvg.com/articles/images5/…)吗?
sparrowt 2014年

1
如果按F12键并在“仿真”选项卡上查看,它又说什么呢?它应该告诉您为什么使用文档模式。我认为您使用的是企业模式,而不是兼容性视图。
sparrowt 2014年

19
@#$很烦人,浪费了全球数十万小时的Web开发人员。
山姆·沃特金斯2015年

19

此问题通常是由于将网站/ Intranet URL放在以下其中之一中引起的:

  • 兼容模式列表
  • Internet Explorer Intranet区域
    (启用“ 兼容性视图”中的“显示Intranet站点”设置)
  • 企业模式列表

在公司网络上,通常通过组策略集中控制这些兼容性视图设置。就您而言,企业模式似乎是罪魁祸首。

IE 11企业模式

不幸的是,设置META X-UA-Compatible 不会覆盖此设置。

对于最终用户

有时,最终用户替代此设置的唯一方法是按F12键并在“ 仿真”选项卡下更改“ 文档模式 ” 。但是,此设置不是永久性的,并且在关闭开发者工具后可能会还原。

您也可以尝试从Intranet区域中排除您的站点。但是,属于Intranet区域的域列表通常也受组策略控制,因此可以正常工作。

要查看属于Intranet区域的域列表,请转到:

工具-> Internet选项->安全->站点->高级

如果列表包含您的子域并且显示为灰色,则在网络管理员允许之前,您将无法覆盖兼容性视图。

您确实需要联系网络管理员,以允许更改组策略中的兼容性视图设置。

对于网络管理员

在开发人员工具打开(F12)的情况下加载网站通常会报告IE切换到较旧模式的原因。

上面提到的所有3种设置通常都是通过组策略控制的,尽管有时可以在用户计算机上进行覆盖。

如果是企业模式(如原始海报所示),则以下两篇文章可能会有所帮助:


我在最近的研究中发现了更多细节,为您提供了一个很好的答案。我希望可以。
西蒙东

8

对于正在构建ASP.NET MVC项目的用户,请确保添加以下内容:

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

标签插入到“布局(模板)”页面。我只花了两个小时进行调试和调整,但才意识到我只是将该meta标签添加到了子页面中。将其添加到布局页面后,浏览器便以EDGE模式完美加载。


我的问题是与IE11中的新企业模式有关,该模式迫使浏览器模仿IE8。这与兼容性模式不同,兼容性模式就是使用此meta标记覆盖的内容。我正确地使用了这个。
昂贵的

我的评论旨在帮助具有相同症状的其他人在ASP.NET MVC中构建站点。我不是在和你说话。
杰森·马塞尔

meta标签就可以了(兼容模式问题,不是企业模式的问题)对于非.NET / MVC的网站也顺便说一句,这是不特定于ASP.NET
丹·哈里斯

4

标记的答案是正确的答案。但是,对于Pricey,您应该在AD和桌面管理员组中进行后续操作。他们滥用IE11企业模式站点列表。Microsoft完全不打算将其用于组织内的所有Intranet站点。那将传播现有的“以兼容模式呈现所有Intranet网站”设置,这是全球企业网站发展的祸根。

它的目的是实现为“黑名单”,其中实际上需要在企业模式列表中列出了旧版浏览器模式的少数网站,并指定了其渲染要求。然后释放组织中的所有其他站点以使用Edge。在组织中从一开始就包含所有Intranet站点来实施它的人员完全误解了如何实施企业模式。


是的,他们肯定应该这样做,但是很遗憾,我对此没有任何发言权,但是已经引起了他们的注意。
昂贵的2015年

1

这个问题有点老了,但我刚刚解决了一个非常类似的问题。我们在这里有几个Intranet站点,其中包括我负责的站点,其他站点则需要兼容模式,否则它们会中断。因此,站点规则在Intranet站点上将默认IE设置为兼容模式。我正在升级自己的东西,不再需要它。实际上,我尝试使用的某些功能在兼容模式下看起来不正确。我正在像您一样使用meta IE-Edge标签。

IE假定没有完全限定地址的网站为Intranet,并据此采取行动。考虑到这一点,我只是更改了IIS中的绑定以仅侦听完全限定的地址,然后设置了一个虚拟网站来侦听不合格的地址。第二个将所有流量重定向到完全限定的地址,从而使IE认为它是一个外部站点。选中或不选中“ Intranet站点上的兼容模式”框,站点将正确呈现。


请参阅:stackoverflow.com/questions/2518256/…如果您具有web.config访问权限。
2015年

我早些时候看到了这个问题,但是我想我误认为了META行的HTTP标头行,并认为我已经尝试过了。一旦我弄清楚了,它就可以正常工作。感谢您指出我的意思。
Mike Anderson

我尝试将相同的EDGE兼容性设置应用到Web配置中,但该设置对我不起作用,我发现要使其正常工作的唯一方法是要求将我们的特定网站添加到白名单中,以便从新网站中将其忽略IE11企业模式,这似乎与兼容模式有所不同。对于我来说,这绝不是一个很好的解决方案,因为每次循环都必须跳过以完成它。
昂贵的2015年

听起来您和我走的路一样。我必须做两件事。1是页面的META标签中的EDGE设置。您可能可以在web.config中执行此操作(或不可以;我不知道),但是我是在网站主页上完成的。另一个是将自定义HTTP标头添加到web.config。
Mike Anderson

1

这是一些有用信息的老问题。但是我刚刚发现的是,使用FQDN关闭了IE 9-11中的Compat模式。我
遇到http:// lrmstst01:8080 / JavaWeb / login.do的兼容性问题,
但问题却与
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do 消失了
注意:.int是我们的内部领域


这些链接无效。它们被用作仅具有计算机名称而不是具有FQDN的URL的示例。
Dean P

2
专业提示:Example.com就是为此目的而存在的
基本的

这仍然是一个问题,此注释没有为解决方案添加任何内容。
戴安娜

0

通过将其添加到“受信任的站点”列表或本地设置中,将其移动到“受信任的站点”区域。这会将其移出Intranet区域,并且不会在Compat中呈现。视图。


附言:我知道这是可行的,因为这是我们公司为未使用X-UA标签编写的,基于浏览器的较新产品执行的操作,以按照他们希望的方式执行渲染。
Greg C.

鉴于这很可能需要在公司范围内进行设置,因此您的答案必须应用于每个用户的机器,这并不理想。
MattD

0

将以下属性添加到IIS站点的web.config文件中。这对我在IE11的Intranet上有效。

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

请在票证上查看我的更新,企业模式和兼容模式是2种不同的东西
2016年

0

我通过将用户重定向到承载Intranet的服务器的FQDN来解决了此问题。

IE可能使用世界上最差的算法来检测“ Intranet”站点……实际上,指定server.domain.tld可以为我解决问题。

是的,您没有看错,IE不会按私有IP地址检测Intranet站点,就像任何听说过TCP / IP的开发人员一样,否,必须按URL的“主机”部分(如果没有域部分)进行检测,是内部的。

令人震惊的是,IE开发人员并不了解最基本的TCP / IP概念。

请注意,这是针对大型企业客户的,让他们为您更改GPO就像试图将阿尔卑斯山向东移动4米,这不会发生。


IE可能会进行DNS查找,并从中知道IP。由于是MS,它可能可以做AD,但是DNS更有意义。
smoore4 '16

@SQLDBA否定的,如果您指定IP(例如10.0.0.1),则不会将主机检测为“内部网”站点...与DNS无关,对AD意味着什么?您是说它连接到AD并在那里查找主机吗?没有道理,为什么要这么做呢?再说一次,他们是Microsoft的原因。
–thecarpy

0

对于它的价值,我在IE11中也遇到了问题:

  • 没有处于企业模式。
  • 选中“在兼容性视图中显示Intranet站点”。
  • 我有问题中提到的所有<!DOCTYPE html>IE=Edge设置
  • 元标头确实是元素中的第一个<head>元素

一段时间后,我发现:

  • 发送到服务器的用户代理标头是IE7,但是 ...
  • JavaScript的值为IE11!

HTTP标头

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)

JavaScript

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

因此,我最终在客户端进行了检查。

同时,顺便说一句,不再建议检查用户代理。请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (但可能有一个很好的案例)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.