我很困惑。我应该可以设置

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

IE8和IE9应该使用最新的渲染引擎来渲染页面。但是,我刚刚测试了它,如果兼容性模式在我们网站的其他地方被打开,它将为我们的页面保持,即使我们应该强制它不这样做。

你应该如何确保IE不使用兼容模式(即使在内部网中)?

FWIW,我使用HTML5 DocType声明(<!doctype html >)。

以下是这一页的前几行:

<!doctype html> 
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]--> 
<!--[if IE 7 ]>    <html lang="en" class="innerpage no-js ie7"> <![endif]--> 
<!--[if IE 8 ]>    <html lang="en" class="innerpage no-js ie8"> <![endif]--> 
<!--[if (gte IE 9)|!(IE)]><!--> 
<html lang="en" class="innerpage no-js"> 
<!--<![endif]--> 
    <head> 
        <meta charset="ISO-8859-1" /> 
        <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 

编辑:我刚刚了解到,IE8的默认设置是内网站点使用IE7兼容模式。这会覆盖x - ua compatible元标记吗?


当前回答

此外,X-UA-Compatible必须是头部部分的第一个元标记

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
</head>

顺便说一下,正确的顺序或主要的头部标签是:

<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta charset="utf-8">
    <title>Site Title</title>
    <!-- other tags -->
</head>

这种方式

我们将渲染引擎设置为在IExplorer开始处理之前使用 然后我们将文档设置为所有浏览器使用的编码 然后打印标题,它将使用已经定义的编码进行处理。

其他回答

我在IE11中遇到了同样的问题。这些答案都没有解决我的问题。在深入研究之后,我注意到浏览器是在企业模式下运行的。(通过点击F12并单击仿真选项卡进行验证,寻找浏览器配置文件下拉菜单)设置被锁定,不允许我更改设置。

在删除以下注册表项中的CurrentVersion后,我能够将配置文件更改为Desktop:

HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode

在将模式更改为桌面后,这篇文章上的答案将起作用。

服务器端解决方案是推荐的,正如@TimmyFranks在他的回答中提出的那样,但如果需要在页面级别上实现X-UA-Compatible规则,请阅读以下提示,以从已经被烧伤的人的经验中受益


X-UA-Compatible元标记必须直接出现在<head>元素的标题之后。没有其他元标签,css链接和js脚本调用可以放在它之前。

<head>
    <title>Site Title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta charset="utf-8">
    <script type="text/javascript" src="/jsFile.js"></script>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
    <link rel="shortcut icon" href="/apple-touch-icon.png" />
</head>

如果页面中有任何条件注释(假设位于<html>中),它们必须放在<head>之后。

// DON'T: place class inside the HTML tag 
<!--[if gt IE 8]><!--> 
    <html class="aboveIe8"> 
<!--<![endif]-->

// DO: place the class inside the BODY tag
<!--[if gt IE 8]><!--> 
    <body class="aboveIe8"> 
<!--<![endif]-->

Html5BoilerPlate的团队写了关于这个错误的文章——http://h5bp.com/i/378 他们有几种解决方案。

关于内部网和兼容性视图,当您转到工具>兼容性视图设置时,有一些设置。

如果你需要覆盖IE的内部网站点的兼容性视图设置,你可以在web上这样做。config (IIS7)或通过网站属性(IIS6)中的自定义HTTP头,并在那里设置X-UA-Compatible。元标签不会在兼容性视图设置中覆盖IE的内部网设置,但如果你在主机服务器上设置它,它会覆盖兼容性。

web示例。IIS7中的配置:

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

编辑:我从添加之前删除了清晰的代码;这是不必要的复制粘贴的疏忽。抓得好,评论们!

我能够绕过这个加载头之前的HTML与php,它工作得很好。

<?php 
header( 'X-UA-Compatible: IE=edge,chrome=1' );
header( 'content: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' );
include('ix.html');
?> 

ix.html是我在发送报头后想要加载的内容。

在尝试了许多组合后,我有同样的问题,我有这个工作 注意我已经检查了内部网的兼容性

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<head runat="server">