使用标签强制IE兼容模式closures

我正在为所有Intranet站点上强制兼容模式的客户端工作。 我想知道是否有一个标签,我可以把我的HTML强制兼容模式closures。

有“边缘”模式 。

<html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <title>My Web Page</title> </head> <body> <p>Content goes here.</p> </body> </html> 

从链接的MSDN页面:

边缘模式告诉Windows Internet Explorer以可用的最高模式显示内容,这实际上打破了“locking”范例。 使用Internet Explorer 8,这相当于IE8模式。 如果(假设的)未来版本的Internet Explorer支持更高的兼容模式,则设置为边缘模式的页面将以该版本支持的最高模式显示; 但是,使用Internet Explorer 8查看时,这些相同的页面仍然会以IE8模式显示。

但是,在生产中不鼓励“边缘”模式:

build议Web开发人员限制他们使用Edge模式来testing页面和其他非生产用途,因为在未来版本的Windows Internet Explorer中可能会出现意外的页面内容呈现结果。

我真的不完全明白为什么。 但据此,目前最好的方法是使用IE=8

经过许多小时的故障排除这些东西…这里有一些快速的亮点,帮助我们从X-UA-Compatible文档: http : //msdn.microsoft.com/en-us/library/cc288325( VS.85) .aspx #ctl00_contentContainer_ctl16

使用<meta http-equiv="X-UA-Compatible" content=" _______ " />

  • 标准用户代理模式(非模拟用户 )会忽略页面中的<!DOCTYPE>指令,并根据该版本IE所支持的标准进行渲染(例如, IE=8将更好地服从表格边界间距和一些伪select器IE=7 )。

  • 模拟模式告诉IE遵循页面中的任何<!DOCTYPE>指令,根据您select的版本和基于IE=5怪癖模式呈现标准模式

  • content属性的可能值是:

    content="IE=5"

    content="IE=7"

    content="IE=EmulateIE7"

    content="IE=8"

    content="IE=EmulateIE8"

    content="IE=9"

    content="IE=EmulateIE9"

    content="IE=edge"

如果您正在Intranet区域中使用页面,则可能会发现无论您做什么IE9都会进入IE7 Compat模式。

这是由于IE兼容性设置中的设置,即所有Intranet站点都应以兼容模式运行。 你可以通过一个组策略来解决这个问题(或者只是简单地把它放在IE中),或者你可以设置如下:

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

这可以工作(详见其他答案),但最初可能不会显示如此: 它需要在样式表被声明之前 。 如果你不这样做,它会被忽略。

我相信这会做到这一点:

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

正如在相关问题的回答中所build议的,可以在Web.Config文件中设置“边缘”模式。 这将使其适用于从应用程序返回的所有HTML,而不需要将其插入到单个页面中:

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

也可以通过使用IISpipe理器修改 IIS服务器,整个网站或特定应用程序的“HTTP响应头”来完成同样的步骤。

元标记解决scheme不适合我们,但将其设置在响应标题中:

 header('X-UA-Compatible: IE=edge,chrome=1'); 

根据我最近的经验,就这个主题再提几个笔记。 我工作的大学针对IE 8的笔记本电脑设置为所有Intranet站点的兼容模式。 我试图添加meta标签来禁用我的网站提供的页面的这种模式,但IE一直忽略这个标签。 正如Lance在他的文章中提到的那样,添加一个响应标题解决了这个问题。 这是我如何设置基于HTML5样板方法的标题:

 <IfModule mod_headers.c> Header set X-UA-Compatible "IE=edge,chrome=1" # mod_headers can't match by content-type, but we don't want to send this header on *everything*... <FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$"> Header unset X-UA-Compatible </FilesMatch> </IfModule> 

为了实际发送这个头文件,你必须确保你在Apache中打开了mod_headers。 如果你想确保你打开了这个mod,把它放在一个可以运行php的页面中:

 <pre> <?php print_r(apache_get_modules()); ?> </pre> 

IE8默认为intERnet的标准模式和intRAnet的quirks模式。 如果将doctype设置为xhtml transitional,则HTML元标记将被忽略。 解决scheme是在代码中添加一个HTTP头。 这对我们有效。 现在我们的Intranet站点迫使IE8在标准模式下呈现应用程序。

添加到基页面类(ASP.net C#)的PageInit中:Response.AddHeader(“X-UA-Compatible”,“IE = EmulateIE8”);

参考: http : //ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html

这是由于IE兼容性设置中的设置,即所有Intranet站点都应以兼容模式运行。 你可以通过一个组策略来解决这个问题(或者只是简单地把它放在IE中),或者你可以设置如下:

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

显然这是不可能的更改兼容性视图设置作为一个组策略,但它可能可以在registry中改变的东西,这个元标记对我来说工作正常,我必须使所需的属性工作为HTML表单的一部分,它在铬和Firefox的工作,但不是IE浏览器。

这是一个很好的视觉浏览器支持每个单独的HTML 5元素。

http://html5readiness.com/

注意一个共同点,谷歌浏览器,它支持一切。 希望这是帮助

插入标签下的第一个项目。

这迫使IE浏览器在IE的物理版本中渲染页面,而忽略浏览器的“模式设置”。 这可以在开发人员工具中设置,尝试将其更改为旧版本的IE来testing,这应该被忽略,页面应该看起来完全一样。

如果您有权访问服务器,那么执行此操作的最可靠的方法是在服务器本身上执行此操作。 进入IIS HTTP响应头。 添加名称:X-UA兼容
值:IE =边缘这将覆盖您的浏览器和您的代码。