代码之家  ›  专栏  ›  技术社区  ›  Al Katawazi

使用标签强制关闭IE兼容模式

  •  353
  • Al Katawazi  · 技术社区  · 16 年前

    我正在为一个在所有内部网站上强制兼容模式的客户工作。我想知道是否有一个标签,我可以把我的HTML强制兼容模式关闭。

    12 回复  |  直到 11 年前
        1
  •  545
  •   Jon Winstanley    11 年前

    There is the "edge" mode .

    <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页面:

    边缘模式告诉WindowsInternetExplorer以可用的最高模式显示内容,这实际上打破了锁定模式。对于InternetExplorer8,这相当于IE8模式。如果Internet Explorer的未来版本(假设)支持更高的兼容模式,则设置为边缘模式的页面将以该版本支持的最高模式出现;但是,当使用InternetExplorer8查看时,这些页面仍将以IE8模式显示。

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

    建议Web开发人员限制使用边缘模式来测试页面和其他非生产性使用,因为在未来版本的Windows Internet Explorer中呈现页面内容可能会产生意外的结果。

    我真的不完全明白为什么。但根据这一点,目前最好的办法是使用 IE=8 .

        2
  •  93
  •   brandonjp    15 年前

    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=8 将更好地遵守表边框间距和一些伪选择器比 IE=7

    • 鉴于 模仿 模式告诉IE跟随任何 < 指令,基于所选版本的呈现标准模式和基于所选版本的怪癖模式 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"

        3
  •  68
  •   Amadiere    13 年前

    这是由于IE兼容性设置中的设置,即所有Intranet站点都应在兼容模式下运行。您可以通过组策略取消勾选(或在IE中取消勾选),也可以设置以下内容:

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

    它需要在声明样式表之前出现 . 如果你不这样做,它就会被忽略。

        4
  •  30
  •   Peter Ruderman    16 年前

    我相信这会成功:

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    
        5
  •  30
  •   Community Mohan Dere    9 年前

    如本文所述 answer 对于相关问题,可以在Web.Config 文件。这将使其适用于从应用程序返回的所有HTML,而无需将其插入各个页面:

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

    同样的步骤也可以通过 modifying the "HTTP Response Headers" using IIS Manager

        6
  •  20
  •   Lance Anderson    13 年前

    元标记解决方案对我们不起作用,但在响应头中设置它确实起到了作用:

    header('X-UA-Compatible: IE=edge,chrome=1');
    
        7
  •  11
  •   Jens    8 年前

    IE8默认为intERnet的标准模式和intRAnet的quirks模式。 解决方案是在代码中添加一个HTTP头。 这对我们有用。 现在,我们的内网站点正在强制IE8以标准模式呈现应用程序。

    已添加到基页类的PageInit(ASP.net C#):

    Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
    

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

        8
  •  10
  •   Cloudkiller    13 年前

    根据我最近的经验,就这个问题再做几点说明。我所在的大学发布的笔记本电脑将IE8设置为所有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\u头。如果你想确保你已经打开了这个mod,把它放在一个可以运行php的页面上:

    <pre>
    <?php
        print_r(apache_get_modules());
    ?>
    </pre>
    
        9
  •  3
  •   Crouch    13 年前

    这是由于IE兼容性设置中的设置,即所有Intranet站点都应在兼容模式下运行。您可以通过组策略取消勾选(或在IE中取消勾选),也可以设置以下内容:

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

    http://html5readiness.com/

    注意googlechrome的一个共同点,它支持一切。希望这有帮助

        10
  •  1
  •   stu    8 年前

    如果您有权访问服务器,最可靠的方法是在IIS中的服务器上进行访问。转到IIS HTTP响应头。添加
    值:IE=边 这将覆盖浏览器和代码。

        11
  •  0
  •   technocrusaders.com    11 年前

    插入 作为标签下的第一项。

    这将强制IE在IE的物理版本中呈现页面,并忽略浏览器的“模式设置”。这可以在开发人员工具中设置,尝试将其更改为旧版本的IE进行测试,这应该被忽略,并且页面应该看起来完全相同。

        12
  •  0
  •   rubypeach888    8 年前

    如果希望每个单独的网页加载所选内容并使用asp.net. 只需将其作为“视图中的标记”标题下的第一个标记>共享>Layout.cshtml

    只是一个提示