Internet Explorer 11通过元标记禁用“在兼容性视图中显示Intranet站点”不起作用
我一直在Intranet网站工作超过6个月,我一直在使用下面的HTML5 doctype
和边缘兼容性元标记来强制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.
在IE11中启用此Intranet兼容性设置时,版本8就好像被视为edge
。
这篇文章: https : //www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css—disabling-compatability-mode解释了这一点,我还没有尝试通过代码设置此标头和我们的用户没有访问权限来更改他们的浏览器设置..其他更改没有任何工作。
UPDATE
有关企业模式和兼容模式之间的区别,请参阅我对这篇文章的评论,因为它很重要。
确保:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
是您网页上的第一个<meta>
标记,否则IE可能不尊重它。
或者,问题可能是IE浏览器正在为此网站使用企业模式 :
- 您的问题提到控制台显示:
HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
- 如果是这样的话,您可能需要禁用企业模式 (或者像这样 ),或者从IE的工具菜单中closures该网站。
- 不过企业模式在理论上应该被X-UA-Compatible标签覆盖,但IE可能有一个bug …
这个问题通常是由网站/内联网的URL被放置在以下之一:
- 兼容模式列表
- Internet Explorer内联网区域
( 在启用“ 兼容性视图”设置中显示Intranet站点 ) - 企业模式列表
在公司networking上,这些兼容性视图设置通常通过组策略集中控制。 在你的情况下, 企业模式似乎是罪魁祸首。
不幸的是,设置META X-UA-Compatible
不会覆盖这个。
对于最终用户
有时,最终用户重写这个的唯一方法是按F12并在“ 仿真”选项卡下更改“ 文档模式 ”。 但是,此设置不是永久性的,一旦开发者工具closures,就可能还原。
您也可以尝试从Intranet区域中排除您的网站。 但属于Intranet区域的域名列表通常也是由组策略控制的,所以这个工作的机会很渺茫。
要查看属于Intranet区域的域列表,请转到:
工具 – > Internet选项 – >安全 – >站点 – >高级
如果列表中包含您的子域,并且呈灰色,那么在networkingpipe理员允许之前,您将无法覆盖兼容性视图。
您确实需要联系您的networkingpipe理员,以允许更改组策略中的兼容性视图设置。
对于networkingpipe理员
打开开发工具加载网站(F12)通常会报告IE切换到旧模式的原因。
上面提到的所有3个设置通常通过组策略来控制,尽pipe有时可以在用户机器上覆盖。
如果企业模式是问题(看起来是原始海报的情况),以下两篇文章可能会有所帮助:
- 如何启用和使用Internet Explorer 11的企业模式 [HowToGeek]
- 打开企业模式并使用站点列表 [TechNet]
对于那些正在构buildASP.NET MVC项目的用户,请确保添加:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
标签到您的布局(模板)页面。 我只花了两个小时的时间进行debugging和调整,只是意识到我只是把meta标签添加到我的子页面中。 只要我把它添加到我的布局页面,浏览器完全加载EDGE模式。
这是一个很好的信息的老问题。 但是我刚刚发现的是,使用FQDN将closuresIE 9-11中的Compat模式。 我有与之相配的问题
HTTP:// lrmstst01:8080 /的JavaWeb / login.do
但问题消失了
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
注意:.int是我们内部域的一部分
明显的答案是正确的。 但是,Pricey,你应该跟随你的AD和桌面pipe理员组。 他们滥用IE11企业模式站点列表。 微软并不打算将其用于组织内的所有内部网站。 这将会传播现有的“兼容模式下的所有内联网站点”设置,这是全球企业网站推广的祸根。
这意味着要实现一个“黑名单”,实际上需要在企业模式列表中列出的旧版浏览器模式的一些网站,其指定的渲染要求。 您组织中的所有其他站点都将被释放以使用Edge。 你所在组织中的所有人员,包括所有内联网站点,都已经完全误解了企业模式是如何实现的。
问题是有点老,但我刚刚解决了一个非常类似的问题。 我们在这里有几个内部网站,包括我负责的,其他的需要兼容模式,或者他们中断。 出于这个原因,站点规则默认将IE设置为Intranet站点上的兼容模式。 我正在升级自己的东西,不再需要它; 实际上,我试图使用的一些function在compat模式下看起来不正确。 我正在使用元IE浏览器的边缘标签。
IE假定没有完全合格地址的网站是内联网的,并相应地起作用。 考虑到这一点,我只是改变了IIS中的绑定,只听全称的地址,然后build立一个虚拟网站,听取不合格的地址。 第二个将所有stream量redirect到完全限定的地址,使IE相信这是一个外部站点。 在选中或不选中“Intranet站点上的兼容模式”框中,站点呈现正确。
将其移动到“受信任的站点”区域,方法是将其添加到“受信任的站点”列表或本地设置。 这会将其移出Intranet区域,并不会在Compat中呈现。 视图。
将以下属性添加到IIS站点的web.config文件中。 这在我的IE11内部网上工作。
<system.webServer> <httpProtocol> <customHeaders> <clear /> <add name="X-UA-Compatible" value="IE=edge" /> </customHeaders> </httpProtocol> </system.webServer>
我通过将用户redirect到托pipeIntranet的服务器的FQDN来解决此问题。
IE可能使用世界上最糟糕的algorithm来检测“内部网”网站…确实,指定server.domain.tld解决了我的问题。
是的,你正确地阅读,IE浏览器检测内部网站不是通过私人IP地址,就像任何听说过TCP / IP的开发者会做,不,通过URL的“主机”部分,如果没有域部分,必须是内部的。
可怕的是,IE开发人员不了解最基本的TCP / IP概念。
请注意,这是一个大企业的客户,让他们改变你的GPO就像试图把阿尔卑斯山东移4米,不会发生。